1919from shutil import move
2020from sys import argv
2121import logging
22- from re import search , compile , VERBOSE , IGNORECASE
22+ from re import search
2323from multiprocessing import Process
2424from time import asctime
25- from subprocess import Popen ,PIPE ,STDOUT ,call , check_output
25+ from subprocess import Popen ,PIPE ,STDOUT ,call
2626from Modules .ModuleStarvation import frm_dhcp_main
2727from Modules .ModuleDeauth import frm_window ,frm_deauth
2828from Modules .ModuleMacchanger import frm_mac_generator
4444author = ' @mh4x0f P0cl4bs Team'
45454646license = 'MIT License (MIT)'
47- version = '0.6.3 '
47+ version = '0.6.4 '
4848date_create = '18/01/2015'
4949update = '27/07/2015'
5050desc = ['Framework for EvilTwin Attacks' ]
@@ -126,7 +126,9 @@ def run(self):
126126 reactor .run (installSignalHandlers = False )
127127 def stop (self ):
128128 print 'Stop thread:' + self .objectName ()
129- reactor .stop ()
129+ try :
130+ reactor .stop ()
131+ except :pass
130132
131133
132134class SubMain (QWidget ):
@@ -263,7 +265,7 @@ def intGUI(self):
263265 self .EditChannel = QLineEdit (self )
264266 self .selectCard = QComboBox (self )
265267 self .ListLoggerDhcp = QListWidget (self )
266- self .ListLoggerDhcp .setFixedHeight (170 )
268+ self .ListLoggerDhcp .setFixedHeight (150 )
267269 try :
268270 self .EditGateway .setText ([Refactor .get_interfaces ()[x ] for x in Refactor .get_interfaces ().keys () if x == 'gateway' ][0 ])
269271 except :pass
@@ -287,11 +289,11 @@ def intGUI(self):
287289 dnsmasq = popen ('which dnsmasq' ).read ().split ("\n " )
288290 lista = [ '/usr/sbin/airbase-ng' , ettercap [0 ],driftnet [0 ],dhcpd [0 ],dnsmasq [0 ]]
289291 self .m = []
290- for i in lista :
291- self .m .append (path .isfile (i ))
292+ for i in lista :self .m .append (path .isfile (i ))
292293
293- self .form = QFormLayout ()
294- self .form2 = QFormLayout ()
294+ self .FormGroup1 = QFormLayout ()
295+ self .FormGroup2 = QFormLayout ()
296+ self .FormGroup3 = QFormLayout ()
295297 hLine = QFrame ()
296298 hLine .setFrameStyle (QFrame .HLine )
297299 hLine .setSizePolicy (QSizePolicy .Minimum ,QSizePolicy .Expanding )
@@ -301,40 +303,54 @@ def intGUI(self):
301303 vbox = QVBoxLayout ()
302304 vbox .setMargin (5 )
303305 vbox .addStretch (20 )
304- self .form .addRow (vbox )
306+ self .FormGroup1 .addRow (vbox )
305307 self .logo = QPixmap (getcwd () + '/rsc/logo.png' )
306- self .imagem = QLabel (self )
308+ self .imagem = QLabel ()
307309 self .imagem .setPixmap (self .logo )
308- self .form .addRow (self .imagem )
310+ self .FormGroup1 .addRow (self .imagem )
309311
310- self .form .addRow ('Gateway:' , self .EditGateway )
311- self .form .addRow ('AP Name:' , self .EditApName )
312- self .form .addRow ('Channel:' , self .EditChannel )
312+
313+ self .GroupAP = QGroupBox ()
314+ self .GroupAP .setTitle ('Access Point::' )
315+ self .FormGroup3 .addRow ('Gateway:' , self .EditGateway )
316+ self .FormGroup3 .addRow ('AP Name:' , self .EditApName )
317+ self .FormGroup3 .addRow ('Channel:' , self .EditChannel )
318+ self .GroupAP .setLayout (self .FormGroup3 )
313319
314320 # grid network adapter fix
315321 self .btrn_refresh = QPushButton ('Refresh' )
316322 self .btrn_refresh .setIcon (QIcon ('rsc/refresh.png' ))
317323 self .btrn_refresh .clicked .connect (self .refrash_interface )
318- self .grid = QGridLayout ()
319- self .grid .addWidget (QLabel ('Network Adapter:' ),0 ,0 )
320- self .grid .addWidget (self .selectCard , 0 ,1 )
321- self .grid .addWidget (self .btrn_refresh ,0 ,2 )
324+
325+ self .layout = QFormLayout ()
326+ self .GroupAdapter = QGroupBox ()
327+ self .GroupAdapter .setTitle ('Network Adapter::' )
328+ self .layout .addRow (self .selectCard )
329+ self .layout .addRow (self .btrn_refresh )
330+ self .GroupAdapter .setLayout (self .layout )
331+
322332
323333 self .btn_start_attack = QPushButton ('Start Attack' , self )
324334 self .btn_start_attack .setIcon (QIcon ('rsc/start.png' ))
325- self .btn_start_attack .setFixedWidth (160 )
326335 self .btn_cancelar = QPushButton ('Stop Attack' , self )
327336 self .btn_cancelar .setIcon (QIcon ('rsc/Stop.png' ))
328- self .btn_cancelar .setFixedWidth (165 )
329337 self .btn_cancelar .clicked .connect (self .kill )
330338 self .btn_start_attack .clicked .connect (self .StartApFake )
331339
332- self .form2 .addRow (self .btn_start_attack , self .btn_cancelar )
333- self .form2 .addRow (self .ListLoggerDhcp )
334- self .form2 .addRow (self .StatusBar )
335- self .Main .addLayout (self .form )
336- self .Main .addLayout (self .grid )
337- self .Main .addLayout (self .form2 )
340+ hBox = QHBoxLayout ()
341+ hBox .addWidget (self .btn_start_attack )
342+ hBox .addWidget (self .btn_cancelar )
343+
344+ self .slipt = QHBoxLayout ()
345+ self .slipt .addWidget (self .GroupAP )
346+ self .slipt .addWidget (self .GroupAdapter )
347+
348+ self .FormGroup2 .addRow (hBox )
349+ self .FormGroup2 .addRow (self .ListLoggerDhcp )
350+ self .FormGroup2 .addRow (self .StatusBar )
351+ self .Main .addLayout (self .FormGroup1 )
352+ self .Main .addLayout (self .slipt )
353+ self .Main .addLayout (self .FormGroup2 )
338354 self .setLayout (self .Main )
339355
340356 def show_arp_posion (self ):
@@ -407,6 +423,7 @@ def refrash_interface(self):
407423 self .selectCard .addItem (n [i ])
408424
409425 def kill (self ):
426+ if self .Apthreads ['RougeAP' ] == []:return
410427 for i in self .Apthreads ['RougeAP' ]:i .stop ()
411428 terminate = [
412429 'killall dhcpd' ,
@@ -415,8 +432,7 @@ def kill(self):
415432 'iptables --flush' ,
416433 'iptables --table nat --flush' ,
417434 'iptables --delete-chain' ,
418- 'iptables --table nat --delete-chain' ,
419- 'ifconfig %s down' % (self .Ap_iface ),]
435+ 'iptables --table nat --delete-chain' ]
420436 for delete in terminate :popen (delete )
421437 set_monitor_mode (self .interface ).setDisable ()
422438 self .Started (False )
@@ -462,8 +478,12 @@ def CoreSettings(self):
462478 ],
463479 'kill' :
464480 [
481+ 'iptables --flush' ,
482+ 'iptables --table nat --flush' ,
483+ 'iptables --delete-chain' ,
484+ 'iptables --table nat --delete-chain' ,
465485 'killall dhpcd' ,
466- 'killall dnsmasq' ,
486+ 'killall dnsmasq'
467487 ],
468488 'dhcp-server' :
469489 [
@@ -474,6 +494,7 @@ def CoreSettings(self):
474494 'option routers 10.0.0.1;\n ' ,
475495 'option subnet-mask 255.255.255.0;\n ' ,
476496 'option domain-name \" %s\" ;\n ' % (str (self .EditApName .text ())),
497+ 'option domain-name-servers 10.0.0.1;\n ' ,
477498 'range %s;\n ' % range_dhcp ,
478499 '}' ,
479500 ],
@@ -509,7 +530,7 @@ def StartApFake(self):
509530 QMessageBox .warning (self ,'Error permission' ,'Run as root ' )
510531 return
511532 if len (self .selectCard .currentText ()) == 0 :
512- QMessageBox .warning (self ,'Error' ,'Network interface not supported :(' )
533+ QMessageBox .warning (self ,'Error interface ' ,'Network interface not supported :(' )
513534 return
514535 dhcp_select = self .config .xmlSettings ('dhcp' ,'dhcp_server' ,None ,False )
515536 if dhcp_select != 'dnsmasq' :
@@ -595,5 +616,6 @@ def on_sys_tray_activated(self, reason):
595616 elif reason == 2 :self .showMinimized ()
596617
597618 def about (self ):
598- self .Fabout = frmAbout ()
619+ self .Fabout = frmAbout (author ,emails ,
620+ version ,date_create ,update ,license ,desc )
599621 self .Fabout .show ()
0 commit comments