用于自动批量解除802.11客户端认证的脚本。捕获数据包以备后续恶意用途。在本地咖啡店开启对话的绝佳话题。
此脚本专为树莓派3及以上版本设计。当然,它也可以在具有相同或更强能力的类似硬件上运行。
要有效运行此脚本,需要相当多的额外设备。你还需准备:
为达到最佳效果,你还应配备:
我个人在手机上使用 ConnectBot 和 Hacker's Keyboard 通过SSH控制此类设备。它最不引人注意,且便于携带。
建议将设备配置为自动连接到您托管的VPN,以避免路由/NAT问题。在云主机上设置 OpenVPN 是实现此目标的最简单方法。务必使用OpenVPN的 client-to-client 服务器配置指令,或以其他方式配置转发。
显然,你需要某种除Wi-Fi以外的方式将设备连接到互联网。蜂窝网络是最简单的选择。除非你想远程从设备拉取数据包捕获,否则所需的带宽非常小(<100Kib/s)。你可以使用廉价的“无限”数据套餐,即使在使用一定数据后限速也能满足需求。
我在通过蜂窝网络运行OpenVPN时遇到过MTU问题。最简单的解决方法是使用 ip link set dev tunX mtu 1200 将MTU设置为1200,其中tunX是你的tun设备。根据你的网络情况,可能需要使用不同的MTU。
根据你的具体配置,连接的USB设备可能消耗超过树莓派常规方式所能提供的电力。使用上述提到的USB供电集线器,可以通过电池上的另一个USB端口为无线网卡供电。一些廉价的USB集线器会对树莓派上的集线器进行“反向供电”。只要使用质量好的电池,这是合适的,甚至是有用的。
另一种解决方案是使用 类似这样的 分线器为USB集线器提供额外电力。它能解决问题,但我不推荐。这是另一个可能意外断开的东西,而且不易整理。
如果你通过连接手机提供远程控制,应尽可能在启动设备时确保电池已充满。一些廉价设备可能无法吸收足够的电流来维持持续数据连接所消耗的电力。
多个无线网卡、树莓派和蜂窝调制解调器的组合会产生大量热量。Panda PAU06 运行起来尤其热。如果你不注意散热,最终可能会导致网卡熔化或更糟。事先在你选择的包/外壳中进行室温测试,确保其提供合适的散热。如果必须在炎热环境中使用该设备,例如在温暖天气下的车内,需采取额外措施防止过热。对于车辆,设置空调并间歇性远程启动车辆即可。
一些廉价手机由于附加设备组合以及需要定期传输数据,容易过热。在这种情况下,它们可能会关机,导致无法远程控制。将手机放置在设备的单独隔间中会有帮助,但最好使用其他设备。
如果你打算隐蔽地操作该设备,请注意热量可能会以意想不到的方式引起注意。如果在雪天将其留在车辆仪表盘上,它会融化和冰。挡风玻璃上会出现一个清晰的圆形区域,设备居中可见,而其他地方都被雪覆盖!
Wisp的安装说明详见 rpi-install.md。对于非Raspbian系统,步骤应类似。Wisp依赖 aircrack-ng 中的 aireplay-ng 来发送解除认证帧。值得注意的是,你需要为设备构建Python-3.7.1,这也描述在rpi-install.md文件中。
Wisp还依赖另一个名为 dream 的小型C程序。源代码包含在 dream.c 中。Dream依赖libpcap。
使用命令 gcc -O3 dream.c -lpcap 为你的设备编译dream。
Dream是一个用于监控802.11流量的工具,输出可逐行grep。它还将捕获的流量保存为标准pcap格式的文件。Wisp为每个监控网卡调用dream,并解析输出以获取客户端流量。以下是其参数:
--a: 仅报告来自关联客户端的流量。(如果启用了 --d,所有数据包仍会记录到磁盘。)--d (file): 将数据包转储到指定文件。-[b][c][d][f][s][t]: 指定每行输出哪些字段,具体为:
b: BSSc: 信道号。d: 接收数据包的设备名称。f: 频率。s: 站点(STA)。t: Pcap时间戳。无论指定顺序如何,这些字段始终按相同顺序打印。(即 -bcst 等同于 -sctb。)
Wisp读取一个名为 wisp.json 的JSON格式文件进行配置。以下是键的描述:
monitors: 包含要配置为监控设备的列表。每个设备包含描述其具体配置的子键:
channel: 设备要监控的信道。injector: 要配置用于注入解除认证帧的设备。timing: 列出几个时间参数,均以毫秒为单位:
delay: 每个客户端发送解除认证数据包之间的延迟。jitter: 以给定范围内的随机量调整延迟时间。stale: 客户端未被看到即从延迟列表中移除的时间量。除非接近延迟时间跨度,否则几乎没有实际效果。所有参数均从 wisp.json 加载,因此只需简单调用:python3 ./wisp.py
Wisp将自动按照 wisp.json 的描述配置无线网卡。它还会禁用rfkill并终止任何干扰进程,类似于 airmon-ng 的行为。
Wisp将指定设备重命名为 wispX 格式,其中X是与phy关联的数字。退出时,它会将设备重命名回原始名称。
Wisp每发送一个解除认证包就输出一个 .。这是确保其按预期运行的简单有效方法。
Wisp(通过dream)将输出pcap文件,文件名以捕获数据包的无线网卡(phy)名称开头,后跟一个随机十六进制字符串,以 .cap 结尾。例如 phy0-8cf9ec5ca146943f.cap。然后,你可以使用任何常规的pcap文件工具检查、解析和操作它们。