diff --git a/README.md b/README.md
index fbd1df7..55b722c 100644
--- a/README.md
+++ b/README.md
@@ -243,21 +243,27 @@ Tips:支持Win10、Win11、Linux,MacOS暂不支持
## 更新日志
+### v1.2.5
+
+- **[新增]** 支持在破解过程中**暂停**。([#26](https://github.com/baihengaead/wifi-crack-tool/issues/26))
+- **[修复]** 在设备的**WLAN功能关闭**时,**扫描WiFi会抛出意外错误**的问题。([#28](https://github.com/baihengaead/wifi-crack-tool/issues/28))
+- **[修复]** 在自动破解全部WiFi的情况下,连接完成一个WiFi后,所有**按钮的状态会被重置**的问题。
+
### v1.2.4
-- **[新增]** 对WPA3的支持(Linux)。
+- **[新增]** 对**WPA3**的支持(Linux)。
### v1.2.3
-- **[新增]** 对WPA3的支持(Windows)。
-- **[新增]** 自动获取安全类型的功能(Windows)。
-- **[优化]** SSID的utf-8编码转换(Windows)。
+- **[新增]** 对**WPA3**的支持(Windows)。
+- **[新增]** **自动获取**安全类型的功能(Windows)。
+- **[优化]** SSID的utf-8**编码转换**(Windows)。
### v1.2.2
-- **[修复]** 在多网卡的情况下意外的提示了 “应用程序的另一个实例已经在运行。” 的问题。([#13](https://github.com/baihengaead/wifi-crack-tool/issues/13))
-- **[修复]** 在部分情况下,进行utf-8编码转换时,出现转换异常的问题。([#13](https://github.com/baihengaead/wifi-crack-tool/issues/13))
-- **[修复]** 在破解中文WiFi后,连接的中文WiFi名称乱码的问题。
+- **[修复]** 在多网卡的情况下**意外的提示**了 “应用程序的另一个实例已经在运行。” 的问题。([#13](https://github.com/baihengaead/wifi-crack-tool/issues/13))
+- **[修复]** 在部分情况下,进行utf-8**编码转换**时,出现转换**异常**的问题。([#13](https://github.com/baihengaead/wifi-crack-tool/issues/13))
+- **[修复]** 在破解中文WiFi后,连接的**中文WiFi名称乱码**的问题。
### v1.2.1
diff --git a/wifi_crack_tool.py b/wifi_crack_tool.py
index 08ce24b..660b2dd 100644
--- a/wifi_crack_tool.py
+++ b/wifi_crack_tool.py
@@ -2,7 +2,7 @@
"""
Author: 白恒aead
Repositories: https://github.com/baihengaead/wifi-crack-tool
-Version: 1.2.4
+Version: 1.2.5
"""
import os,sys,datetime,time,threading,ctypes,json
import platform
@@ -30,7 +30,7 @@ def __init__(self,mutex):
self.icon_path = "images/wificrack.ico"
if PyWiFi().interfaces().__len__() <= 1 and mutex is None:
- self.showinfo(title=self.windowTitle(), message='应用程序的另一个实例已经在运行。')
+ self.showinfo(title=self.windowTitle(), message='应用程序的另一个实例已经在运行。\n(p.s.你当前的设备只有一个网卡,不支持多开!)')
sys.exit()
icon = QIcon()
@@ -48,6 +48,7 @@ def __init__(self,mutex):
self.ui.cbo_wnic.setDisabled(True)
self.ui.btn_refresh_wifi.setDisabled(True)
self.ui.btn_start.setDisabled(True)
+ self.ui.btn_pause_or_resume.setDisabled(True)
self.ui.btn_stop.setDisabled(True)
self.ui.txt_log_msg_info.setReadOnly(True)
@@ -60,6 +61,7 @@ def __init__(self,mutex):
self.ui.btn_change_pwd_file.clicked.connect(self.tool.change_pwd_file)
self.ui.btn_refresh_wifi.clicked.connect(self.tool.refresh_wifi)
self.ui.btn_start.clicked.connect(self.tool.start)
+ self.ui.btn_pause_or_resume.clicked.connect(self.tool.pause)
self.ui.btn_stop.clicked.connect(self.tool.stop)
self.ui.dbl_scan_time.valueChanged.connect(self.tool.change_scan_time)
self.ui.dbl_connect_time.valueChanged.connect(self.tool.change_connect_time)
@@ -223,7 +225,10 @@ def __init__(self,win:MainWindow):
# 读取密码字典数据
with open(self.pwd_dict_path, 'r',encoding='utf-8') as json_file:
self.pwd_dict_data = json.load(json_file)
-
+
+ self.crack_pause_condition = threading.Condition()
+ self.paused = False
+
self.run = False
self.pwd_file_changed = False
@@ -290,15 +295,23 @@ def clear_msg(self):
# 重置所有控件状态
def reset_controls_state(self):
'''重置状态'''
- self.ui.cbo_wifi_name.setEnabled(True)
- self.ui.cbo_security_type.setEnabled(True)
- self.ui.cbo_wnic.setEnabled(True)
- self.ui.dbl_scan_time.setEnabled(True)
- self.ui.dbl_connect_time.setEnabled(True)
- self.ui.btn_change_pwd_file.setEnabled(True)
- self.ui.btn_refresh_wifi.setEnabled(True)
- self.ui.btn_start.setEnabled(True)
- self.ui.btn_stop.setDisabled(True)
+ try:
+ self.ui.cbo_wifi_name.setEnabled(True)
+ self.ui.cbo_security_type.setEnabled(True)
+ self.ui.cbo_wnic.setEnabled(True)
+ self.ui.dbl_scan_time.setEnabled(True)
+ self.ui.dbl_connect_time.setEnabled(True)
+ self.ui.btn_change_pwd_file.setEnabled(True)
+ self.ui.btn_refresh_wifi.setEnabled(True)
+ self.ui.btn_start.setEnabled(True)
+ self.ui.btn_pause_or_resume.setDisabled(True)
+ self.ui.btn_stop.setDisabled(True)
+ self.ui.btn_pause_or_resume.setText("暂停")
+ with self.crack_pause_condition:
+ self.paused = False
+ self.crack_pause_condition.notify_all()
+ except Exception as r:
+ pass
# 设置所有控件为运行时的状态
def set_controls_running_state(self):
@@ -311,6 +324,21 @@ def set_controls_running_state(self):
self.ui.btn_change_pwd_file.setDisabled(True)
self.ui.btn_refresh_wifi.setDisabled(True)
self.ui.btn_start.setDisabled(True)
+ self.ui.btn_pause_or_resume.setEnabled(True)
+ self.ui.btn_stop.setEnabled(True)
+
+ # 设置所有控件为暂停时的状态
+ def set_controls_pausing_state(self):
+ '''暂停状态'''
+ self.ui.cbo_wifi_name.setDisabled(True)
+ self.ui.cbo_security_type.setDisabled(True)
+ self.ui.cbo_wnic.setDisabled(True)
+ self.ui.dbl_scan_time.setDisabled(True)
+ self.ui.dbl_connect_time.setDisabled(True)
+ self.ui.btn_change_pwd_file.setDisabled(True)
+ self.ui.btn_refresh_wifi.setDisabled(True)
+ self.ui.btn_start.setDisabled(True)
+ self.ui.btn_pause_or_resume.setEnabled(True)
self.ui.btn_stop.setEnabled(True)
# 刷新wifi列表
@@ -328,10 +356,10 @@ def refresh_wifi(self):
thread.start()
except Exception as r:
self.win.showerror(title='错误警告',message='扫描wifi时发生未知错误 %s' %(r))
- self.show_msg('扫描wifi时发生未知错误 %s\n\n' %(r),"red")
+ self.show_msg('[错误]扫描wifi时发生未知错误 %s\n\n' %(r),"red")
self.reset_controls_state()
- # 开始暴力破解
+ # 开始破解
def start(self):
try:
if self.config_settings_data['pwd_txt_path']!="" and os.path.exists(self.config_settings_data['pwd_txt_path']):
@@ -351,17 +379,39 @@ def start(self):
self.start()
except Exception as r:
self.win.showerror(title='错误警告',message='开始运行时发生未知错误 %s' %(r))
- self.show_msg('开始运行时发生未知错误 %s\n\n' %(r),"red")
+ self.show_msg('[错误]开始运行时发生未知错误 %s\n\n' %(r),"red")
self.reset_controls_state()
- # 终止暴力破解
+ # 暂停破解
+ def pause(self):
+ try:
+ with self.crack_pause_condition:
+ if self.paused:
+ self.paused = False
+ self.ui.btn_pause_or_resume.setText("暂停")
+ self.show_msg("开始继续破解...")
+ self.crack_pause_condition.notify_all()
+ else:
+ self.paused = True
+ self.ui.btn_pause_or_resume.setText("继续")
+ self.show_msg("正在尝试暂停破解...")
+ self.crack_pause_condition.notify_all()
+ except Exception as r:
+ self.win.showerror(title='错误警告',message='暂停过程中发生未知错误 %s' %(r))
+ self.show_msg('[错误]暂停过程中发生未知错误 %s\n\n' %(r),"red")
+ self.reset_controls_state()
+
+ # 终止破解
def stop(self):
try:
self.run = False
self.show_msg("正在尝试终止破解...")
+ with self.crack_pause_condition:
+ self.paused = False
+ self.crack_pause_condition.notify_all()
except Exception as r:
- self.win.showerror(title='错误警告',message='停止时发生未知错误 %s' %(r))
- self.show_msg('停止时发生未知错误 %s\n\n' %(r),"red")
+ self.win.showerror(title='错误警告',message='停止过程中发生未知错误 %s' %(r))
+ self.show_msg('[错误]停止过程中发生未知错误 %s\n\n' %(r),"red")
self.reset_controls_state()
# 暴力破解wifi密码的类
@@ -374,22 +424,14 @@ def __init__(self,tool:'WifiCrackTool'):
self.wifi = PyWiFi()
self.wnics = self.wifi.interfaces()
self.iface:Interface
- self.get_wnic()
+ self.__get_wnic()
self.ssids = []
self.profile_dict = {}
'''wifi信息字典'''
self.convert_success = False
self.is_auto = False
-
- def coding_convert(self,content:str,encoding:str='utf-8'):
- try:
- return content.encode('raw_unicode_escape').decode(encoding)
- except Exception as r:
- self.win.show_msg.send(f"编码转换时发生错误 {r}\n\n","red")
- self.win.reset_controls_state.send()
- return False
- def get_wnic(self):
+ def __get_wnic(self):
'''获取无线网卡'''
try:
if self.wnics.__len__() > 0:
@@ -404,7 +446,7 @@ def get_wnic(self):
except Exception as r:
self.win.showerror(title='错误警告',message=f'获取无线网卡时发生未知错误 {r}')
- self.tool.show_msg(f"获取无线网卡时发生未知错误 {r}\n\n","red")
+ self.tool.show_msg(f"[错误]获取无线网卡时发生未知错误 {r}\n\n","red")
self.tool.reset_controls_state()
def search_wifi(self):
@@ -443,8 +485,12 @@ def search_wifi(self):
if len(self.ssids) > 0:
self.win.set_wifi_current_index.send(0)
except Exception as r:
- self.win.show_error.send('错误警告',f'扫描wifi时发生未知错误 {r}')
- self.win.show_msg.send(f"扫描wifi时发生未知错误 {r}\n\n","red")
+ if r.args[0] == 'NULL pointer access' and self.iface.status() in [const.IFACE_DISCONNECTED,const.IFACE_INACTIVE]:
+ self.win.show_warning.send('警告',f'你当前设备的WLAN未打开!请打开WLAN后再继续使用。')
+ self.win.show_msg.send(f"[警告]你当前设备的WLAN未打开!请打开WLAN后再继续使用。\n\n","orange")
+ else:
+ self.win.show_error.send('错误警告',f'扫描wifi时发生未知错误 {r}')
+ self.win.show_msg.send(f"[错误]扫描wifi时发生未知错误 {r}\n\n","red")
self.win.reset_controls_state.send()
def auto_crack(self):
@@ -479,12 +525,12 @@ def auto_crack(self):
self.win.show_info.send('自动破解',"自动破解已完成!破解结果已记录到日志中")
self.is_auto = False
- self.tool.reset_controls_state()
+ self.win.reset_controls_state.send()
except Exception as r:
self.win.show_error.send('错误警告','自动破解过程中发生未知错误 %s' %(r))
- self.win.show_msg.send(f"自动破解过程中发生未知错误 {r}\n\n","red")
+ self.win.show_msg.send(f"[错误]自动破解过程中发生未知错误 {r}\n\n","red")
self.is_auto = False
- self.tool.reset_controls_state()
+ self.win.reset_controls_state.send()
return False
def crack(self,ssid:str):
@@ -499,7 +545,7 @@ def crack(self,ssid:str):
if self.iface.status() in [const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]: # 测试是否已经断开网卡连接
self.win.show_msg.send("现有连接断开成功!\n\n","black")
else:
- self.win.show_msg.send("现有连接断开失败!\n\n","red")
+ self.win.show_msg.send("[错误]现有连接断开失败!\n\n","red")
return False
self.win.show_msg.send(f"正在准备破解WiFi[{ssid}]...\n\n","black")
@@ -508,14 +554,21 @@ def crack(self,ssid:str):
if len(pwd_dict_list) > 0:
self.win.show_msg.send(f"发现密码字典中存在相同SSID:{ssid},开始尝试破解...\n\n","black")
for i,pwd_dict in enumerate(pwd_dict_list,1):
+ # * 暂停线程
+ with self.tool.crack_pause_condition:
+ if self.tool.paused:
+ self.win.show_msg.send("破解已暂停.\n","orange")
+ self.tool.crack_pause_condition.wait()
+ # * 停止线程
if self.tool.run==False:
- self.win.show_msg.send("破解已终止.\n","black")
+ self.win.show_msg.send("破解已终止.\n","red")
self.win.reset_controls_state.send()
return False
pwd = pwd_dict['pwd']
result = self.connect(ssid,pwd,'json',i)
if result and not self.is_auto:
self.win.show_info.send('破解成功',"连接成功,密码:%s\n(已复制到剪切板)"%(pwd))
+ self.win.reset_controls_state.send()
return True
elif result:
return pwd
@@ -523,25 +576,32 @@ def crack(self,ssid:str):
self.win.show_msg.send(f"开始尝试使用密码本破解WiFi[{ssid}]...\n\n","black")
with open(self.tool.config_settings_data['pwd_txt_path'],'r', encoding='utf-8', errors='ignore') as lines:
for i,line in enumerate(lines,1):
+ # * 暂停线程
+ with self.tool.crack_pause_condition:
+ if self.tool.paused:
+ self.win.show_msg.send("破解已暂停.\n","orange")
+ self.tool.crack_pause_condition.wait()
+ # * 停止线程
if self.tool.run==False:
- self.win.show_msg.send("破解已终止.\n","black")
+ self.win.show_msg.send("破解已终止.\n","red")
self.win.reset_controls_state.send()
return False
pwd = line.strip()
result = self.connect(ssid,pwd,'txt',i)
if result and not self.is_auto:
self.win.show_info.send('破解成功',"连接成功,密码:%s\n(已复制到剪切板)"%(pwd))
+ self.win.reset_controls_state.send()
return True
elif result:
return pwd
if not self.is_auto:
self.win.show_info.send('破解失败',"破解失败,已尝试完密码本中所有可能的密码")
- self.tool.reset_controls_state()
+ self.win.reset_controls_state.send()
return False
except Exception as r:
self.win.show_error.send('错误警告','破解过程中发生未知错误 %s' %(r))
- self.win.show_msg.send(f"破解过程中发生未知错误 {r}\n\n","red")
- self.tool.reset_controls_state()
+ self.win.show_msg.send(f"[错误]破解过程中发生未知错误 {r}\n\n","red")
+ self.win.reset_controls_state.send()
return False
def connect(self,ssid,pwd,filetype,count):
@@ -586,7 +646,6 @@ def connect(self,ssid,pwd,filetype,count):
time.sleep(self.tool.config_settings_data['connect_time']) # * 连接需要时间
if self.iface.status() == const.IFACE_CONNECTED: # * 判断是否连接成功
self.win.show_msg.send(f"连接成功,密码:{pwd}\n\n","green")
- self.tool.reset_controls_state()
pyperclip.copy(pwd); # * 将密码复制到剪切板
if filetype != 'json':
self.tool.pwd_dict_data.append({'ssid':ssid,'pwd':pwd})
@@ -601,8 +660,8 @@ def connect(self,ssid,pwd,filetype,count):
except Exception as r:
self.win.show_error.send('错误警告','连接wifi过程中发生未知错误 %s' %(r))
- self.win.show_msg.send(f"连接wifi过程中发生未知错误 {r}\n\n","red")
- self.tool.reset_controls_state()
+ self.win.show_msg.send(f"[错误]连接wifi过程中发生未知错误 {r}\n\n","red")
+ self.win.reset_controls_state.send()
return False
if __name__ == "__main__":
diff --git a/wifi_crack_tool_gui.py b/wifi_crack_tool_gui.py
index 8490eeb..130bd7d 100644
--- a/wifi_crack_tool_gui.py
+++ b/wifi_crack_tool_gui.py
@@ -3,7 +3,7 @@
################################################################################
## Form generated from reading UI file 'wifi_crack_tool_gui.ui'
##
-## Created by: Qt User Interface Compiler version 6.7.2
+## Created by: Qt User Interface Compiler version 6.8.0
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
@@ -54,6 +54,7 @@ def setupUi(self, MainWindow):
self.cbo_wifi_name.setSizePolicy(sizePolicy1)
self.cbo_wifi_name.setMinimumSize(QSize(201, 22))
self.cbo_wifi_name.setMaximumSize(QSize(201, 22))
+ self.cbo_wifi_name.setFocusPolicy(Qt.FocusPolicy.NoFocus)
self.cbo_wifi_name.setEditable(True)
self.lbl_security_type = QLabel(self.centralwidget)
self.lbl_security_type.setObjectName(u"lbl_security_type")
@@ -65,6 +66,7 @@ def setupUi(self, MainWindow):
self.cbo_security_type.setSizePolicy(sizePolicy1)
self.cbo_security_type.setMinimumSize(QSize(201, 22))
self.cbo_security_type.setMaximumSize(QSize(201, 22))
+ self.cbo_security_type.setFocusPolicy(Qt.FocusPolicy.NoFocus)
self.lbl_wnic = QLabel(self.centralwidget)
self.lbl_wnic.setObjectName(u"lbl_wnic")
self.lbl_wnic.setGeometry(QRect(50, 70, 71, 20))
@@ -75,6 +77,7 @@ def setupUi(self, MainWindow):
self.cbo_wnic.setSizePolicy(sizePolicy1)
self.cbo_wnic.setMinimumSize(QSize(201, 22))
self.cbo_wnic.setMaximumSize(QSize(352, 22))
+ self.cbo_wnic.setFocusPolicy(Qt.FocusPolicy.NoFocus)
self.lbl_using_pwd_file = QLabel(self.centralwidget)
self.lbl_using_pwd_file.setObjectName(u"lbl_using_pwd_file")
self.lbl_using_pwd_file.setGeometry(QRect(5, 100, 521, 16))
@@ -82,28 +85,13 @@ def setupUi(self, MainWindow):
self.txt_log_msg_info = QTextEdit(self.centralwidget)
self.txt_log_msg_info.setObjectName(u"txt_log_msg_info")
self.txt_log_msg_info.setGeometry(QRect(0, 150, 529, 350))
- self.splitter = QSplitter(self.centralwidget)
- self.splitter.setObjectName(u"splitter")
- self.splitter.setGeometry(QRect(100, 120, 331, 24))
- self.splitter.setOrientation(Qt.Orientation.Horizontal)
- self.btn_change_pwd_file = QPushButton(self.splitter)
- self.btn_change_pwd_file.setObjectName(u"btn_change_pwd_file")
- self.splitter.addWidget(self.btn_change_pwd_file)
- self.btn_refresh_wifi = QPushButton(self.splitter)
- self.btn_refresh_wifi.setObjectName(u"btn_refresh_wifi")
- self.splitter.addWidget(self.btn_refresh_wifi)
- self.btn_start = QPushButton(self.splitter)
- self.btn_start.setObjectName(u"btn_start")
- self.splitter.addWidget(self.btn_start)
- self.btn_stop = QPushButton(self.splitter)
- self.btn_stop.setObjectName(u"btn_stop")
- self.splitter.addWidget(self.btn_stop)
self.lbl_scan_time = QLabel(self.centralwidget)
self.lbl_scan_time.setObjectName(u"lbl_scan_time")
self.lbl_scan_time.setGeometry(QRect(330, 10, 81, 20))
self.dbl_scan_time = QDoubleSpinBox(self.centralwidget)
self.dbl_scan_time.setObjectName(u"dbl_scan_time")
self.dbl_scan_time.setGeometry(QRect(410, 10, 62, 22))
+ self.dbl_scan_time.setFocusPolicy(Qt.FocusPolicy.NoFocus)
self.dbl_scan_time.setDecimals(1)
self.dbl_scan_time.setMinimum(0.100000000000000)
self.dbl_scan_time.setSingleStep(0.100000000000000)
@@ -114,10 +102,30 @@ def setupUi(self, MainWindow):
self.dbl_connect_time = QDoubleSpinBox(self.centralwidget)
self.dbl_connect_time.setObjectName(u"dbl_connect_time")
self.dbl_connect_time.setGeometry(QRect(410, 40, 62, 22))
+ self.dbl_connect_time.setFocusPolicy(Qt.FocusPolicy.NoFocus)
self.dbl_connect_time.setDecimals(1)
self.dbl_connect_time.setMinimum(0.100000000000000)
self.dbl_connect_time.setSingleStep(0.100000000000000)
self.dbl_connect_time.setValue(3.000000000000000)
+ self.splitter = QSplitter(self.centralwidget)
+ self.splitter.setObjectName(u"splitter")
+ self.splitter.setGeometry(QRect(80, 120, 375, 23))
+ self.splitter.setOrientation(Qt.Orientation.Horizontal)
+ self.btn_change_pwd_file = QPushButton(self.splitter)
+ self.btn_change_pwd_file.setObjectName(u"btn_change_pwd_file")
+ self.splitter.addWidget(self.btn_change_pwd_file)
+ self.btn_refresh_wifi = QPushButton(self.splitter)
+ self.btn_refresh_wifi.setObjectName(u"btn_refresh_wifi")
+ self.splitter.addWidget(self.btn_refresh_wifi)
+ self.btn_start = QPushButton(self.splitter)
+ self.btn_start.setObjectName(u"btn_start")
+ self.splitter.addWidget(self.btn_start)
+ self.btn_pause_or_resume = QPushButton(self.splitter)
+ self.btn_pause_or_resume.setObjectName(u"btn_pause_or_resume")
+ self.splitter.addWidget(self.btn_pause_or_resume)
+ self.btn_stop = QPushButton(self.splitter)
+ self.btn_stop.setObjectName(u"btn_stop")
+ self.splitter.addWidget(self.btn_stop)
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
@@ -126,16 +134,17 @@ def setupUi(self, MainWindow):
# setupUi
def retranslateUi(self, MainWindow):
- MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"WiFi\u5bc6\u7801\u66b4\u529b\u7834\u89e3\u5de5\u5177v1.2.4 by \u767d\u6052aead", None))
+ MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"WiFi\u5bc6\u7801\u66b4\u529b\u7834\u89e3\u5de5\u5177v1.2.5 by \u767d\u6052aead", None))
self.lbl_wifi_name.setText(QCoreApplication.translate("MainWindow", u"WiFi\u540d\u79f0:", None))
self.lbl_security_type.setText(QCoreApplication.translate("MainWindow", u"\u5b89\u5168\u7c7b\u578b:", None))
self.lbl_wnic.setText(QCoreApplication.translate("MainWindow", u"\u65e0\u7ebf\u7f51\u5361:", None))
self.lbl_using_pwd_file.setText(QCoreApplication.translate("MainWindow", u"\u6b63\u5728\u4f7f\u7528\u5bc6\u7801\u672c: ", None))
+ self.lbl_scan_time.setText(QCoreApplication.translate("MainWindow", u"\u626b\u63cf\u65f6\u95f4(s):", None))
+ self.lbl_connect_time.setText(QCoreApplication.translate("MainWindow", u"\u8fde\u63a5\u95f4\u9694(s):", None))
self.btn_change_pwd_file.setText(QCoreApplication.translate("MainWindow", u"\u66f4\u6362\u5bc6\u7801\u672c", None))
self.btn_refresh_wifi.setText(QCoreApplication.translate("MainWindow", u"\u626b\u63cfWiFi", None))
self.btn_start.setText(QCoreApplication.translate("MainWindow", u"\u5f00\u59cb", None))
+ self.btn_pause_or_resume.setText(QCoreApplication.translate("MainWindow", u"\u6682\u505c", None))
self.btn_stop.setText(QCoreApplication.translate("MainWindow", u"\u505c\u6b62", None))
- self.lbl_scan_time.setText(QCoreApplication.translate("MainWindow", u"\u626b\u63cf\u65f6\u95f4(s):", None))
- self.lbl_connect_time.setText(QCoreApplication.translate("MainWindow", u"\u8fde\u63a5\u65f6\u95f4(s):", None))
# retranslateUi
diff --git a/wifi_crack_tool_gui.ui b/wifi_crack_tool_gui.ui
index 5cec97c..e5ee671 100644
--- a/wifi_crack_tool_gui.ui
+++ b/wifi_crack_tool_gui.ui
@@ -32,7 +32,7 @@
- WiFi密码暴力破解工具v1.2.4 by 白恒aead
+ WiFi密码暴力破解工具v1.2.5 by 白恒aead
@@ -97,6 +97,9 @@
22
+
+ Qt::FocusPolicy::NoFocus
+
true
@@ -141,6 +144,9 @@
22
+
+ Qt::FocusPolicy::NoFocus
+
@@ -182,6 +188,9 @@
22
+
+ Qt::FocusPolicy::NoFocus
+
@@ -209,39 +218,6 @@
-
-
-
- 100
- 120
- 331
- 24
-
-
-
- Qt::Orientation::Horizontal
-
-
-
- 更换密码本
-
-
-
-
- 扫描WiFi
-
-
-
-
- 开始
-
-
-
-
- 停止
-
-
-
@@ -264,6 +240,9 @@
22
+
+ Qt::FocusPolicy::NoFocus
+
1
@@ -287,7 +266,7 @@
- 连接时间(s):
+ 连接间隔(s):
@@ -299,6 +278,9 @@
22
+
+ Qt::FocusPolicy::NoFocus
+
1
@@ -312,6 +294,44 @@
3.000000000000000
+
+
+
+ 80
+ 120
+ 375
+ 23
+
+
+
+ Qt::Orientation::Horizontal
+
+
+
+ 更换密码本
+
+
+
+
+ 扫描WiFi
+
+
+
+
+ 开始
+
+
+
+
+ 暂停
+
+
+
+
+ 停止
+
+
+