Skip to content
This repository has been archived by the owner on Apr 19, 2020. It is now read-only.

Commit

Permalink
WiFi-Pumpkin v0.7.8 Release
Browse files Browse the repository at this point in the history
  • Loading branch information
mh4x0f committed Jul 16, 2016
1 parent 3b0398d commit 66954cf
Show file tree
Hide file tree
Showing 13 changed files with 213 additions and 199 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
Version 0.7.8
-------------
- moved progressBar to statusBar
- fixed thread scanner IP in Modules::DNS,ARP spoof
- changed plugins options to sslstrip+/dns2proxy, sslstrip/sergio-proxy
- added option run AP without Proxy

Version 0.7.5
-------------
- fixed size QTableWidget on modules
Expand Down
82 changes: 40 additions & 42 deletions Core/Main.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,8 @@
author = 'Marcos Nesster (@mh4x0f) P0cl4bs Team'
emails = ['[email protected]','[email protected]']
license = ' GNU GPL 3'
version = '0.7.5'
update = '07/05/2016' # This is Brasil :D
version = '0.7.8'
update = '16/07/2016' # This is Brasil :D
desc = ['Framework for Rogue Wi-Fi Access Point Attacks']

class Initialize(QMainWindow):
Expand All @@ -83,7 +83,7 @@ def __init__(self, parent=None):
super(Initialize, self).__init__(parent)
self.FSettings = frm_Settings()
self.form_widget = WifiPumpkin(self,self,self.FSettings)
self.form_widget.setFixedHeight(540)
self.form_widget.setFixedHeight(520)
self.form_widget.setFixedWidth(370)
dock = QDockWidget()
dock.setTitleBarWidget(QWidget())
Expand Down Expand Up @@ -214,15 +214,17 @@ def SettingsTABContent(self):
self.ContentTabsettings.addLayout(self.PumpSettingsTAB)

def DefaultTABContent(self):
self.StatusBar = QStatusBar()
self.StatusBar = QStatusBar(self)
self.StatusBar.setFixedHeight(15)
self.StatusBar.addWidget(QLabel("::Access|Point::"))
self.StatusDhcp = QLabel("")
self.connectedCount = QLabel('')
self.StatusDhcp = QLabel('')
self.StatusBar.addWidget(self.StatusDhcp)
self.Started(False)
self.StatusBar.addWidget(QLabel(''),20)
self.progress = ProgressBarWid(total=101)
self.progress.setFixedHeight(30)
self.StatusBar.addWidget(self.progress,20)
self.StatusBar.addWidget(QLabel("::Clients::"))
self.connectedCount.setText("0")
self.connectedCount.setStyleSheet("QLabel { color : yellow; }")
Expand Down Expand Up @@ -307,9 +309,6 @@ def DefaultTABContent(self):
self.slipt.addWidget(self.GroupAP)
self.slipt.addWidget(self.GroupAdapter)

self.progress = ProgressBarWid(total=101)
self.progress.setFixedHeight(20)
self.FormGroup2.addRow(self.progress)
self.FormGroup2.addRow(hBox)
self.FormGroup2.addRow(self.TabInfoAP)
self.FormGroup2.addRow(self.StatusBar)
Expand Down Expand Up @@ -509,18 +508,17 @@ def logdns2proxy(self):
self.Fdns2proxy.show()

def checkPlugins(self):
if self.FSettings.Settings.get_setting('plugins','sslstrip_plugin',format=bool):
self.PopUpPlugins.check_sslstrip.setChecked(True)
self.PopUpPlugins.set_sslStripRule()
if self.FSettings.Settings.get_setting('plugins','netcreds_plugin',format=bool):
self.PopUpPlugins.check_netcreds.setChecked(True)
if self.FSettings.Settings.get_setting('plugins','dns2proxy_plugin',format=bool):
self.PopUpPlugins.check_dns2proy.setChecked(True)
self.PopUpPlugins.set_Dns2proxyRule()
if self.FSettings.Settings.get_setting('plugins','sergioproxy_plugin',format=bool):
self.PopUpPlugins.checkGeneralOptions()
elif self.FSettings.Settings.get_setting('plugins','sergioproxy_plugin',format=bool):
self.PopUpPlugins.check_sergioProxy.setChecked(True)
if not self.FSettings.Settings.get_setting('plugins','sslstrip_plugin',format=bool):
self.PopUpPlugins.set_sslStripRule()
self.PopUpPlugins.checkGeneralOptions()
elif self.FSettings.Settings.get_setting('plugins','noproxy',format=bool):
self.PopUpPlugins.check_noproxy.setChecked(True)
self.PopUpPlugins.checkGeneralOptions()

def Started(self,bool):
if bool:
Expand Down Expand Up @@ -560,7 +558,7 @@ def GetDHCPRequests(self,data):
hostname = item[data[4]]
except:
hostname = 'unknown'
if hostname == None:hostname = 'unknown'
if hostname == None or len(hostname) == 0:hostname = 'unknown'
self.APclients[data[4]] = {'IP': data[2],'device': hostname,
'in_tables': False,}
self.StatusDHCPRequests(data[4],self.APclients[data[4]])
Expand Down Expand Up @@ -616,7 +614,7 @@ def mConfigure(self):
for i in lista:self.ConfigTwin['ProgCheck'].append(path.isfile(i))

def exportHTML(self):
contents = Refactor.exportHtml()
contents = Refactor.exportHtml(remove_dns2proxy=True)
filename = QFileDialog.getSaveFileNameAndFilter(self,
'Save File Logger HTML','report.html','HTML (*.html)')
if len(filename) != 0:
Expand All @@ -633,6 +631,7 @@ def refrash_interface(self):

def kill(self):
if self.Apthreads['RougeAP'] == []: return
print('-------------------------------')
self.ProxyPluginsTAB.GroupSettings.setEnabled(True)
self.FSettings.Settings.set_setting('accesspoint','statusAP',False)
if hasattr(self,'dockAreaList'):
Expand Down Expand Up @@ -816,9 +815,10 @@ def StartApFake(self):
'now you have choose the Class range different of your network.')
self.btn_start_attack.setDisabled(True)
popen('ulimit -n 64000')

print('\n[*] Loading debugging mode')
self.APactived = self.FSettings.Settings.get_setting('accesspoint','using')
if self.APactived == 'hostapd':
print('[*] Configuring hostapd...')
self.ConfigTwin['AP_iface'] = str(self.selectCard.currentText())
if str(self.interfacesLink['activated']).startswith('eth') or \
str(self.interfacesLink['activated']).startswith('enp'):
Expand Down Expand Up @@ -860,6 +860,7 @@ def StartApFake(self):
self.Apthreads['RougeAP'].append(self.Thread_hostapd)

# thread dhcp
print('[*] Configuring dhcpd...')
popen('ifconfig {} up'.format(str(self.selectCard.currentText())))
selected_dhcp = self.FSettings.Settings.get_setting('accesspoint','dhcp_server')
if selected_dhcp == 'iscdhcpserver':
Expand All @@ -882,33 +883,12 @@ def StartApFake(self):
self.FSettings.Settings.set_setting('accesspoint','interfaceAP',str(self.selectCard.currentText()))


if self.PopUpPlugins.check_sslstrip.isChecked() or not self.PopUpPlugins.check_dns2proy.isChecked():
popen('iptables -t nat -A PREROUTING -p udp -j DNAT --to {}'.format(str(self.EditGateway.text())))
# load ProxyPLugins
self.plugin_classes = Plugin.PluginProxy.__subclasses__()
self.plugins = {}
for p in self.plugin_classes:
self.plugins[p._name] = p()

# thread plugins
if self.PopUpPlugins.check_sslstrip.isChecked() and not self.PopUpPlugins.check_sergioProxy.isChecked():
self.Threadsslstrip = Thread_sslstrip(self.ConfigTwin['PortRedirect'],
self.plugins,self.ProxyPluginsTAB._PluginsToLoader)
self.Threadsslstrip.setObjectName("sslstrip")
self.Apthreads['RougeAP'].append(self.Threadsslstrip)

elif not self.PopUpPlugins.check_sslstrip.isChecked() and self.PopUpPlugins.check_sergioProxy.isChecked():
self.Threadsslstrip = Thread_sergioProxy(self.ConfigTwin['PortRedirect'],
self.plugins,self.ProxyPluginsTAB._PluginsToLoader)
self.Threadsslstrip.setObjectName("sslstrip")
self.Apthreads['RougeAP'].append(self.Threadsslstrip)

elif self.PopUpPlugins.check_sergioProxy.isChecked() and self.PopUpPlugins.check_sergioProxy.isChecked():
self.Threadsslstrip = Thread_sergioProxy(self.ConfigTwin['PortRedirect'],
self.plugins,self.ProxyPluginsTAB._PluginsToLoader)
self.Threadsslstrip.setObjectName("sslstrip")
self.Apthreads['RougeAP'].append(self.Threadsslstrip)

if self.PopUpPlugins.check_netcreds.isChecked():
self.Thread_netcreds = ProcessThread({'python':['Plugins/net-creds/net-creds.py','-i',
str(self.selectCard.currentText())]})
Expand All @@ -921,6 +901,20 @@ def StartApFake(self):
self.Thread_dns2proxy.setObjectName('Dns2Proxy')
self.Apthreads['RougeAP'].append(self.Thread_dns2proxy)

# thread plugins
if self.PopUpPlugins.check_dns2proy.isChecked():
self.Threadsslstrip = Thread_sslstrip(self.ConfigTwin['PortRedirect'],
self.plugins,self.ProxyPluginsTAB._PluginsToLoader)
self.Threadsslstrip.setObjectName("sslstrip2")
self.Apthreads['RougeAP'].append(self.Threadsslstrip)

elif self.PopUpPlugins.check_sergioProxy.isChecked():
self.Threadsslstrip = Thread_sergioProxy(self.ConfigTwin['PortRedirect'],
self.plugins,self.ProxyPluginsTAB._PluginsToLoader)
self.Threadsslstrip.setObjectName("sslstrip")
self.Apthreads['RougeAP'].append(self.Threadsslstrip)


iptables = []
for index in xrange(self.FSettings.ListRules.count()):
iptables.append(str(self.FSettings.ListRules.item(index).text()))
Expand All @@ -934,12 +928,11 @@ def StartApFake(self):
#self.PumpSettingsTAB.GroupArea.setEnabled(False)
self.progress.change_color('#FFA500')
for thread in self.Apthreads['RougeAP']:
thread.start()
self.progress.setText(thread.getNameThread())
self.progress.update_bar_simple(20)
QThread.sleep(3)
thread.start()
self.progress.setValue(100)
self.progress.change_color('grey')
self.progress.change_color('#FFA500')
self.progress.setText('')
if self.FSettings.Settings.get_setting('dockarea','advanced',format=bool):
QThread.sleep(3)
Expand All @@ -950,6 +943,11 @@ def StartApFake(self):
for f in filelist: system('rm Logs/AccessPoint/{}'.format(f))
for dock in self.dockAreaList.keys():
self.dockAreaList[dock].RunThread()
if self.PopUpPlugins.check_noproxy.isChecked() or self.PopUpPlugins.check_sergioProxy.isChecked():
popen('iptables -t nat -A PREROUTING -p udp -j DNAT --to {}'.format(str(self.EditGateway.text())))
print('AP::[{}] Running...'.format(self.EditApName.text()))
print('AP::BSSID::[{}] CH {}'.format(Refactor.get_interface_mac(
self.selectCard.currentText()),self.EditChannel.text()))

def create_sys_tray(self):
self.sysTray = QSystemTrayIcon(self)
Expand Down
8 changes: 5 additions & 3 deletions Core/Utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,15 +115,17 @@ def htmlContent(title):
}
return html
@staticmethod
def exportHtml():
def exportHtml(remove_dns2proxy=False,remove_inject=False):
readFile = {
'dhcp': {'Logs/AccessPoint/dhcp.log':[]},
'urls': {'Logs/AccessPoint/urls.log':[]},
'credentials': {'Logs/AccessPoint/credentials.log':[]},
'requestAP': {'Logs/AccessPoint/requestAP.log':[]},
#'dns2proxy': {'Logs/AccessPoint/dns2proxy.log':[]},
#'injectionPage': {'Logs/AccessPoint/injectionPage.log':[]},
'dns2proxy': {'Logs/AccessPoint/dns2proxy.log':[]},
'injectionPage': {'Logs/AccessPoint/injectionPage.log':[]},
'phishing': {'Logs/Phishing/Webclone.log':[]},}
if remove_dns2proxy: readFile.pop('dns2proxy')
elif remove_inject: readFile.pop('injectionPage')
for i in readFile.keys():
for j in readFile[i]:
with open(j,'r') as file:
Expand Down
4 changes: 2 additions & 2 deletions Core/config/app/config.ini
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,10 @@ dock_credencials=true
dock_urlmonitor=true

[plugins]
sslstrip_plugin=true
noproxy=false
netcreds_plugin=true
dns2proxy_plugin=true
sergioproxy_plugin=true
sergioproxy_plugin=false

[iptables]
iptables_accept=iptables -P FORWARD ACCEPT
Expand Down
9 changes: 9 additions & 0 deletions Core/config/commits/Lcommits.cfg
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
master:
[
{ Version: '0.7.8'}
{ changelog : 'moved ProgressBar to StatusBar' },
{ changelog : 'fixed thread scanner IP in Modules::DNS,ARP spoof' },
{ changelog : 'changed plugins options to sslstrip/dns2proxy, sslstrip/sergio-proxy' },
{ changelog : 'added option run AP without Proxy' },
]

WiFiPumpkin:
[
{ Version: '0.7.5'}
{ changelog : 'fixed size QTableWidget on modules' },
Expand Down
5 changes: 3 additions & 2 deletions Core/helpers/update.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,9 @@ def __init__(self, parent=None, total=0):
super(ProgressBarWid, self).__init__()
self.setMinimum(1)
self.setMaximum(total)
font=QFont('White Rabbit')
font.setPointSize(5)
self.setFont(font)
self._active = False
self.setAlignment(Qt.AlignCenter)
self._text = None
Expand All @@ -165,8 +168,6 @@ def text(self):
def update_bar_simple(self, add):
value = self.value() + add
self.setValue(value)
if value > 50:
self.change_color("green")

def update_bar(self, add):
while True:
Expand Down
2 changes: 1 addition & 1 deletion Core/loaders/Stealth/PackagesUI.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from subprocess import Popen,PIPE
from Core.utility.settings import frm_Settings
from Modules.servers.PhishingManager import frm_PhishingManager
from Core.utility.threads import ThreadPopen,ThreadScan,ProcessThread
from Core.utility.threads import ThreadPopen,ThreadScan,ProcessThread,ThreadFastScanIP
from Core.packets.network import ThARP_posion,ThSpoofAttack
class PumpkinModule(QWidget):
''' this is Qwidget Module base '''
Expand Down
Loading

0 comments on commit 66954cf

Please sign in to comment.