diff --git a/Fern-Wifi-Cracker/core/fern.py b/Fern-Wifi-Cracker/core/fern.py index 795e4f0..66f9e32 100644 --- a/Fern-Wifi-Cracker/core/fern.py +++ b/Fern-Wifi-Cracker/core/fern.py @@ -23,7 +23,7 @@ from gui.main_window import * -__version__= 2.7 +__version__= 2.8 # # Main Window Class @@ -75,6 +75,7 @@ def __init__(self): self.timer.setInterval(3000) + #self.DoubleClicked.connect(self.mouseDoubleClickEvent) self.refresh_intfacebutton.clicked.connect(self.refresh_interface) self.interface_combo.currentIndexChanged['QString'].connect(self.setmonitor) diff --git a/Fern-Wifi-Cracker/core/toolbox/bruteforce_core.py b/Fern-Wifi-Cracker/core/toolbox/bruteforce_core.py index 2b47a1b..48d57e3 100644 --- a/Fern-Wifi-Cracker/core/toolbox/bruteforce_core.py +++ b/Fern-Wifi-Cracker/core/toolbox/bruteforce_core.py @@ -25,14 +25,14 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -import re -import time -import base64 -import ftplib -import socket -import urllib2 +import re +import time +import base64 +import ftplib +import socket +import urllib2 -from PyQt5 import QtCore +from PyQt5 import QtCore class HTTP_Authentication(object): @@ -110,11 +110,11 @@ def login_ftp(self,username,password): class Bruteforce_Attack(QtCore.QThread): - successful_login_signal = QtCore.pyqtSignal('QString', 'QString') - We_Got_Error_signal = QtCore.pyqtSignal() - Next_Try_signal = QtCore.pyqtSignal() - Finished_bruteforce_signal = QtCore.pyqtSignal() - + successful_login_signal = QtCore.pyqtSignal('QString', 'QString') + We_Got_Error_signal = QtCore.pyqtSignal() + Next_Try_signal = QtCore.pyqtSignal() + Finished_bruteforce_signal = QtCore.pyqtSignal() + def __init__(self): QtCore.QThread.__init__(self) self._timer = 0 @@ -201,49 +201,49 @@ def _run_bruteforce(self): self.next_try_details = (self._calculate_percentage(),username,password) try: self.bruteforce_http_method.login_http(username,password) # TELNET HERE - self.successful_login_signal.emit(username, password) + self.successful_login_signal.emit(username, password) except Exception,message: if("connection timed out" in str(message).lower()): self._error_message = "Unable to connect to the remote address, Connection timed out" - self.We_Got_Error_signal.emit() + self.We_Got_Error_signal.emit() return if("no route to host" in str(message).lower()): self._error_message = "Unable to connect to the remote address, Connection timed out" - self.We_Got_Error_signal.emit() + self.We_Got_Error_signal.emit() return if("error 404" in str(message).lower()): self._error_message = "The remote target returned an HTTP 404 error code, meaning that the requested page does not exist" - self.We_Got_Error_signal.emit() + self.We_Got_Error_signal.emit() return if("name or service not known" in str(message).lower()): self._error_message = "Unable to connect to the remote address, Connection timed out" - self.We_Got_Error_signal.emit() + self.We_Got_Error_signal.emit() return if("unreachable" in str(message).lower()): self._error_message = "Unable to connect to the remote address, Connection timed out" - self.We_Got_Error_signal.emit() + self.We_Got_Error_signal.emit() return if("connection refused" in str(message).lower()): self._error_message = "The connection was refused by the remote service, Please try again" - self.We_Got_Error_signal.emit() + self.We_Got_Error_signal.emit() return if("no address associated" in str(message).lower()): self._error_message = "No address is associated with the target hostname" - self.We_Got_Error_signal.emit() + self.We_Got_Error_signal.emit() return if(self.control == False): return - self.Next_Try_signal.emit() + self.Next_Try_signal.emit() time.sleep(self._timer) - self.Finished_bruteforce_signal.emit() + self.Finished_bruteforce_signal.emit() self.control = False @@ -257,44 +257,44 @@ def _run_bruteforce(self): self.next_try_details = (self._calculate_percentage(),username,password) try: if(self.bruteforce_http_method.login_telnet(username,password)): # FTP HERE - self.successful_login_signal.emit(username, password) + self.successful_login_signal.emit(username, password) except Exception,message: if("name or service not known" in str(message).lower()): self._error_message = "Unable to resolve target hostname" - self.We_Got_Error_signal.emit() + self.We_Got_Error_signal.emit() return if("connection timed out" in str(message).lower()): self._error_message = "Unable to connect to the remote address, Connection timed out" - self.We_Got_Error_signal.emit() + self.We_Got_Error_signal.emit() return if("no route to host" in str(message).lower()): self._error_message = "Unable to connect to the remote address, Connection timed out" - self.We_Got_Error_signal.emit() + self.We_Got_Error_signal.emit() return if("unreachable" in str(message).lower()): self._error_message = "Unable to connect to the remote address, Connection timed out" - self.We_Got_Error_signal.emit() + self.We_Got_Error_signal.emit() return if("connection refused" in str(message).lower()): self._error_message = "The connection was refused by the remote service, Please try again" - self.We_Got_Error_signal.emit() + self.We_Got_Error_signal.emit() return if("no address associated" in str(message).lower()): self._error_message = "No address is associated with the target hostname" - self.We_Got_Error_signal.emit() + self.We_Got_Error_signal.emit() return if(self.control == False): return - self.Next_Try_signal.emit() + self.Next_Try_signal.emit() time.sleep(self._timer) - self.Finished_bruteforce_signal.emit() + self.Finished_bruteforce_signal.emit() self.control = False @@ -308,45 +308,45 @@ def _run_bruteforce(self): self.next_try_details = (self._calculate_percentage(),username,password) try: self.bruteforce_http_method.login_ftp(username,password) # FTP HERE - self.successful_login_signal.emit(username, password) + self.successful_login_signal.emit(username, password) except Exception,message: if("name or service not known" in str(message).lower()): self._error_message = "Unable to resolve target hostname" - self.We_Got_Error_signal.emit() + self.We_Got_Error_signal.emit() return if("connection timed out" in str(message).lower()): self._error_message = "Unable to connect to the remote address, Connection timed out" - self.We_Got_Error_signal.emit() + self.We_Got_Error_signal.emit() return if("no route to host" in str(message).lower()): self._error_message = "Unable to connect to the remote address, Connection timed out" - self.We_Got_Error_signal.emit() + self.We_Got_Error_signal.emit() return if("unreachable" in str(message).lower()): self._error_message = "Unable to connect to the remote address, Connection timed out" - self.We_Got_Error_signal.emit() + self.We_Got_Error_signal.emit() return if("connection refused" in str(message).lower()): self._error_message = "The connection was refused by the remote service, Please try again" - self.We_Got_Error_signal.emit() + self.We_Got_Error_signal.emit() return if("no address associated" in str(message).lower()): self._error_message = "No address is associated with the target hostname" - self.We_Got_Error_signal.emit() + self.We_Got_Error_signal.emit() return if(self.control == False): return - self.Next_Try_signal.emit() + self.Next_Try_signal.emit() time.sleep(self._timer) - self.Finished_bruteforce_signal.emit() + self.Finished_bruteforce_signal.emit() self.control = False diff --git a/Fern-Wifi-Cracker/core/tools.py b/Fern-Wifi-Cracker/core/tools.py index e8ee417..3de6790 100644 --- a/Fern-Wifi-Cracker/core/tools.py +++ b/Fern-Wifi-Cracker/core/tools.py @@ -218,7 +218,7 @@ def __init__(self): def open_website(self): - QtWidgets.QDesktopServices.openUrl(QtCore.QUrl("http://www.fern-pro.com/")) + QtGui.QDesktopServices.openUrl(QtCore.QUrl("http://www.fern-pro.com/")) self.toggle_tip() self.close() diff --git a/Fern-Wifi-Cracker/core/wep.py b/Fern-Wifi-Cracker/core/wep.py index 37335ad..75d7de1 100644 --- a/Fern-Wifi-Cracker/core/wep.py +++ b/Fern-Wifi-Cracker/core/wep.py @@ -73,7 +73,7 @@ def __init__(self): self.new_access_point_detected_signal.connect(self.display_new_access_point) - self.general_group_box.DoubleClicked.connect(self.mouseDoubleClickEvent) + #self.general_group_box.DoubleClicked.connect(self.mouseDoubleClickEvent) self.ap_listwidget.itemSelectionChanged.connect(self.display_selected_target) self.attack_button.clicked.connect(self.launch_attack) self.wps_attack_radio.clicked.connect(self.check_reaver_status) @@ -676,9 +676,11 @@ def crack_wep(self): directory = '/tmp/fern-log/WEP-DUMP/' variables.exec_command('killall aircrack-ng') process = subprocess.Popen('aircrack-ng '+ directory + 'wep_dump-01.cap -l '+ directory + 'wep_key.txt',shell = True,stdout = subprocess.PIPE,stderr = subprocess.PIPE,stdin = subprocess.PIPE) + status = process.stdout while 'wep_key.txt' not in os.listdir('/tmp/fern-log/WEP-DUMP/'): - if 'Failed. Next try with' in status.readline(): + output = status.readline() + if 'Failed. Next try with' in output: thread.start_new_thread(self.crack_wep,()) break time.sleep(40) diff --git a/Fern-Wifi-Cracker/resources/splash.png b/Fern-Wifi-Cracker/resources/splash.png index d105d2d..a499069 100644 Binary files a/Fern-Wifi-Cracker/resources/splash.png and b/Fern-Wifi-Cracker/resources/splash.png differ diff --git a/Fern-Wifi-Cracker/version b/Fern-Wifi-Cracker/version index 2add790..5e0fedb 100644 --- a/Fern-Wifi-Cracker/version +++ b/Fern-Wifi-Cracker/version @@ -1,2 +1,2 @@ -version = 2.7 +version = 2.8 total_files = 81