NRF24L01(nRF24LE1) 通信抓包破解

微软推出过一款无线键盘鼠标套装,型号是;Microsoft Wireless Keyboard/Mouse 800。这套键鼠具有反应灵敏,手感细腻,价格适中等等优点,美中不足的是它使用2.4G进行通讯,协议已经被人攻破,可以使用很低的成本搭建一套监听的设备。本文就将介绍如何使用不到5元的 nRF24L01模块加一块ArduinoUno搭建一窃听装置。

本文是根据github 上SamyKamkar 的keysweeper项目写成。代码和实物只是很小的一部分,最重要的是原理。

首先,微软的这个套装键盘使用的是NRF 24LE1H芯片,简单的可以理解成一个单片机加上nRF41L01模块,这就给我们以可乘之机;

键盘使用的模块通讯方式和最常见的nRF41L01+模块相同,因此这就是整个项目的硬件基础。

使用nRF41L01+模块通讯,有下面几个要求:

1. 通讯速率

2. 使用的频道(也就是频率)

3. 通讯双方的MAC地址

对于1来说,微软键盘只使用2MBps;对于2来说,是通过扫描频率范围来确定的。键盘标签上给出来它在FCC申请注册过的频段是2403-2480Mhz,我们只需要在这个范围内每隔1MHz扫描即可。因为我们的目标只是监听,键盘作为发射端的MAC不重要,我们只需要知道接收器的MAC即可。当然,这里也是这个项目的技巧和难点所在。

首先说说键盘和接收器的通信格式:

最开始的Preamble,翻译成中文就是“前导码”,是由间隔的0 1构成的一字节,也就是说只能是0x55(0b01010101)或者0xAA(0b10101010),通讯时通过解析这个可以知道每个bit的长度之类等等信息;前导码后面的Address就是MAC,芯片根据这个信息可以确定是否是发给它的。比如,每一个PC上使用的网卡都会有世界唯一的MAC,当有数据包送到网口,网卡本身通过解析数据包中的MAC得知是否是发送给自己的数据。更通俗的理解,在嘈杂的空间两个人对话,最好的办法是这样喊“老张,XXX”。需要听老张讲话的人听到“老张”,即可留心下面的内容,“老张”就是接收端的MAC。

在nRF41L01+芯片上,有这样的限制:只能监听特定的MAC地址。意思是:你需要设定芯片“听”的具体MAC,它才能把对应的数据传出来。如果你不告诉它接收器的MAC,它是不会对键盘发出来的数据包有响应;经过研究,SamyKamkar发现了一个有意思的事情,在设置nRF41L01+监听MAC的寄存器中,有一个设置监听MAC长度的寄存器(为了灵活,nRF41L01+可以设置不同长度的MAC):

参考2

从上面可以看出,这个芯片能相应的最短的MAC是 3 字节 。但是,根据其他人的实验,如果这里参数设置为00 实际上是在监听2字节的MAC地址。换句话说,如果知道键盘发送的数据包上出现的2个字节的数据,我们就有机会把完整的数据监听下来。其他人继续研究(他们有监听2.4G无线抓包的设备),又发现微软这个键盘MAC最高位是 1 。这样键盘一定会使用0xAA作为前导码(因为如果使用0x55有可能和MAC最高的1“粘”在一起,所以只能使用0xAA)。这样,我们知道发送的数据肯定还有一个0xAA了。还差一个才能凑够2个字节。这时候就有很有意思的事情了:当实际上没有人对芯片“讲话”的时候,芯片还是在工作的,很多时候它会听到0x00或者0xFF。于是,我们可以欺骗IC,让他“听”0x00AA。芯片一直在接受,它会不断校验“听到”的结果,过滤掉不正确的结果。判断正确与否的方法是CRC,我们关掉这个校验,芯片就会通知我们所有的它听到的信息,我们再校验听到的MAC最低Byte是否为 0xCD(研究发现这个系列的键盘MAC最低Byte位0xCD),也就能知道告诉我们的那些信息是真实有效的。

使用这样欺骗的方法,能够获得真实的接收器的MAC。有了MAC就可以光明正大的监听键盘的通讯了。

对于抓到的键盘数据是有加密的,只是方法非常简单,使用MAC进行XOR运算。

解析解密之后的HID数据,最终我们就可以得到按下信息。

• 设备类型0x0A = 键盘,0x08 = 鼠标

• 数据包 0x78= 按键,0x38 = 长按

上面就是这个监听装置的原理,硬件连接如上次文件PCB图为准。

nRF24L01+

Arduino Uno

GND

GND

VCC

3.3V

CE

D9

CSN

D8

SCK

D13

MOSI

D11

MISO

D12

IRQ (空)

 

 

连接好之后即可使用

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nRF24LE1 世界上最小、集成度最高的单片超低功耗2.4GHz无线系统芯片 新产品: 2.4GHz超低功耗系统芯片,其中包含nRF24L01+收发器、8位微控制器和闪存 Nordic半导体的nRF24LE1在尺寸方面超过了以前的超低功率(ULP)系统芯片(SoC): 它把产业界中最好的2.4GHz收发器核(nRF24L01+)和一个8位混合信号微控制器与闪存 集成在一块芯片上,用于超低功耗无线系统。这个独一无二的芯片使用QFN封装,尺寸为4 ×4mm,是目前尺寸最小的单片超低功耗无线解决办法。对于迅速发展的超低功耗无线市 场,nRF24LE1是理想的芯片,因为它能够在一块芯片上运行RF协议堆栈和应用层。 挪威奥斯陆-2008年9月9日-Nordic半导体(奥斯陆证件交易所代号:NOD)今日推出nRF24LE1,这是2.4GHz的超低功耗无线系统芯片,用这个办法时,只需要一块芯片就可以实现无线应用系统。用于超低功耗无线通信的系统芯片在nRF24LE1中,集成了一个功能齐全的2.4GHz收发器核nRF24L01+,并且包含Nordic公司经过实用证明的Enhanced ShockBurst™型硬件链接层。nRF24LE1的最大电流很小,可以用钮扣电池供电,真正地实现了超低功耗。在nRF24LE1中,还有一个加强型8051混合信号微控制器核,与以前的8051器件相比,它执行一条指令的时钟周期较少。大多数指令只需要一个或者两个时钟周期,因而按照MIPS(每秒百万条指令)测试标准,它的性能平均提高了8倍。这个优异性能与芯片上的16KB闪存和1KB的SRAM结合起来,保证了这个处理平台足以运行RF协议栈和应用层,而且运行起来十分容易。支持RF协议栈的外设很多,而且RF协议有很多省电的工作模式。32kHz的超低功耗晶振的时间精度很高,用于报告频率低的同步协议,它还有一个16MHz的阻容振荡器,因而在闲置状能的启动速度很快。32kHz的振荡器的时间精度很高,足以满足报告频率较高的协议使用,不需要在外面另外使用晶振。一个安全协处理器支持AES加密无线通信nRF24LE1在闲置模式时,消耗的电流只有毫微安和微安的数量级,这是针对超低功耗射频协议栈而设计的。它的其他优点是:协议的时间精度较高,功耗较低,提高了共存的性能。对于应用层,nRF24LE1有一组丰富的接口和外设,其中包括一个SPI接口、2线接口、UART、12位AD转换器、PWM和一个模拟比较器。因此,对于无线应用系统,包括鼠标器、键盘、摇控器、游戏机控制器、运动传感器和保健传感器、玩具以及有源RFID 标签,nRF24LE1是很适合的单片芯片。 可供选用的封装nRF24LE1有三种封装的产品供选用。尺寸只有4x4mm 的24引脚QFN封装是目前最小的超低功耗单片芯片,它有七个可编程通用I/O引脚。对于需要较多I/O引脚的应用系统,nRF24LE1有尺寸为5x5mm、使用32引脚QFN封装的产品,它有15个通用I/O引脚;还有尺寸为7x7mm 的48脚QFN封装的产品,它有29个通用I/O脚。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值