这是对 mousejack 工具(https://github.com/RFStorm/mousejack)的代码扩展。
在原有工具基础上增加了重放/发送工具。
基于罗技无线套装 MK220(包含 K220 无线键盘和 M150 无线鼠标) 的 POC 数据包位于 logs 文件夹中。
更多详细信息请访问 https://www.ckn.io/blog/2016/07/09/hijacking-wireless-mice-and-keyboards/
伪混杂模式设备发现工具,扫描一组信道并打印解码后的 Enhanced Shockburst 数据包。
usage: ./nrf24-scanner.py [-h] [-c N [N ...]] [-v] [-l] [-p PREFIX] [-d DWELL]
optional arguments:
-h, --help 显示此帮助信息并退出
-c N [N ...], --channels N [N ...] 射频信道
-v, --verbose 启用详细输出
-l, --lna 启用 LNA(适用于 CrazyRadio PA 适配器)
-p PREFIX, --prefix PREFIX 混杂模式地址前缀
-d DWELL, --dwell DWELL 每个信道的停留时间,单位毫秒
在信道 1-5 上扫描设备
./nrf24-scanner.py -c {1..5}
在所有信道上扫描地址以 0xA9 开头的设备
./nrf24-scanner.py -p A9
设备跟踪嗅探器,跟随特定 nRF24 设备跳频,并打印解码后的 Enhanced Shockburst 数据包。
此版本已修改为将数据包记录到日志文件中。
usage: ./nrf24-sniffer.py [-h] [-c N [N ...]] [-v] [-l] -a ADDRESS -o OUTPUT [-t TIMEOUT] [-k ACK_TIMEOUT] [-r RETRIES]
optional arguments:
-h, --help 显示此帮助信息并退出
-c N [N ...], --channels N [N ...] 射频信道
-v, --verbose 启用详细输出
-l, --lna 启用 LNA(适用于 CrazyRadio PA 适配器)
-a ADDRESS, --address ADDRESS 要嗅探的地址,跟随其信道变化
-o OUTPUT, --output OUTPUT 输出文件,用于记录数据包
-t TIMEOUT, --timeout TIMEOUT 信道超时时间,单位毫秒
-k ACK_TIMEOUT, --ack_timeout ACK_TIMEOUT ACK 超时时间(微秒),接受 [250,4000],步长 250
-r RETRIES, --retries RETRIES 自动重试次数,接受 [0,15]
在所有信道上嗅探地址 8C:D3:0F:3E:B4 的数据包并保存到 output.log
./nrf24-sniffer.py -a 8C:D3:0F:3E:B4 -o logs/output.log
重放捕获的数据包或发送生成的数据包。跟随特定 nRF24 设备跳频,并从日志文件发送数据包。
usage: ./nrf24-replay.py [-h] [-c N [N ...]] [-v] [-l] -a ADDRESS -i INPUT_FILE [-t TIMEOUT] [-k ACK_TIMEOUT] [-r RETRIES]
optional arguments:
-h, --help 显示此帮助信息并退出
-c N [N ...], --channels N [N ...] 射频信道
-v, --verbose 启用详细输出
-l, --lna 启用 LNA(适用于 CrazyRadio PA 适配器)
-a ADDRESS, --address ADDRESS 要嗅探的地址,跟随其信道变化
-o INPUT_FILE, --input INPUT_FILE 输入文件,包含要发送的数据包
-t TIMEOUT, --timeout TIMEOUT 信道超时时间,单位毫秒
-k ACK_TIMEOUT, --ack_timeout ACK_TIMEOUT ACK 超时时间(微秒),接受 [250,4000],步长 250
-r RETRIES, --retries RETRIES 自动重试次数,接受 [0,15]
从文件 keystroke.log 向跳频信道上的地址 8C:D3:0F:3E:B4 发送数据包
./nrf24-replay.py -a 8C:D3:0F:3E:B4 -i logs/keystroke.log
星型网络映射器,通过更改给定地址的最后一个字节,对信道列表中每个信道的 256 个可能地址进行 ping 操作,尝试发现星型网络中的活动地址。
usage: ./nrf24-network-mapper.py [-h] [-c N [N ...]] [-v] [-l] -a ADDRESS [-p PASSES] [-k ACK_TIMEOUT] [-r RETRIES]
optional arguments:
-h, --help 显示此帮助信息并退出
-c N [N ...], --channels N [N ...] 射频信道
-v, --verbose 启用详细输出
-l, --lna 启用 LNA(适用于 CrazyRadio PA 适配器)
-a ADDRESS, --address ADDRESS 已知地址
-p PASSES, --passes PASSES 扫描次数(默认为 2)
-k ACK_TIMEOUT, --ack_timeout ACK_TIMEOUT ACK 超时时间(微秒),接受 [250,4000],步长 250
-r RETRIES, --retries RETRIES 自动重试次数,接受 [0,15]
映射地址 61:49:66:82:03 所属的星型网络
./nrf24-network-mapper.py -a 61:49:66:82:03
nRF24LU1+ 芯片包含一个测试机制,用于发送连续载波音,如果您有 SDR 设备,可以验证其频率。设备之间的频率偏移可能导致意外行为。例如,测试的其中一个 SparkFun 分线板频率偏移约为 300kHz,导致它在两个相邻信道上接收数据包。
此脚本将使收发器在传入的第一个信道上发送载波音。
usage: ./nrf24-continuous-tone-test.py [-h] [-c N [N ...]] [-v] [-l]
optional arguments:
-h, --help 显示此帮助信息并退出
-c N [N ...], --channels N [N ...] 射频信道
-v, --verbose 启用详细输出
-l, --lna 启用 LNA(适用于 CrazyRadio PA 适配器)
在 2405MHz 发送连续载波音
./nrf24-continuous-tone-test.py -c 5
使用字典将键盘按键映射为等效数据包。读取标准输入,并将映射后的数据包记录到 logs/keystrokes.log 中。
接受输入直到按下 Ctrl+C。
usage: ./keymapper.py
logs 文件夹包含各种键盘操作的预保存数据包。
Shell.log 用于利用 Windows 机器,运行一个连接到攻击者机器的 PowerShell 单行命令。
文件 keys.log 作为参考,其中各种按键和组合被映射为等效数据包。
利用 Windows 机器的演示视频可在 https://www.youtube.com/watch?v=YLzUeK1IvJs&feature=youtu.be 观看。