使用HackRF或者RTL-SDR加变频器Q那是极好的Q但是我最l需要把所有东襉K打包C个小I间里面?/p>
可参考另一个页面:Travis Goodspeed, 作者不仅嗅探了cM的键?Microsoft Comfort Desktop 5000), q演CZ怎么?span style="line-height: 25.6000003814697px;">用他的一个叫GoodFET的设备和python的脚?/span>goodfet.nrfQ?span style="line-height: 25.6000003814697px;">?/span>?nRF24L01+ 芯片嗅探 2.4GHz 的数?/span>.
Travis发现嗅探该设备存在多个难点,不仅现在需要指定频道(频率Q,而且q需要指定MAC地址。nRF芯片只提供发送到指定MAC地址的数据包。此外,nRF芯片不会发送MAC地址数据Q因Z已经指定?(?code style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 13.6000003814697px; padding: 0.2em 0px; margin: 0px; border-radius: 3px; background-color: rgba(0, 0, 0, 0.0392157);">RX_ADDR_P[0-5]6个管道中的一?/code>)?/p>
Travis发现在指定MAC长度的时候,在手册中为SETUP_AWQ当讄?#8216;0’的时候被认ؓ是非法的Q?/span>
'00' - Illegal
'01' - 3 bytes
'10' - 4 bytes
'11' – 5 bytes
但是实际讄MAC地址Z个字节,q且把MAC讄在preamble的位|?0x00AA or 0x0055, in binary 0000000010101010 or 0000000001010101
), pƺ骗讑֤在数据部分首先提供完整的MAC地址l我们,请参考这碉堡了?a style="box-sizing: border-box; color: #4183c4; text-decoration: none; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;">文章学习具体l节?/p>
虽然现在我们可以使用GoodFETQ电脑加nRF24L01+来做嗅探试Q但是最l我们还是希望能够用一套便宜的嵌入式设备来实现此功能。我们可以用Travis的研I成果,使用在微控制?嵌入式CE序来实现所有功能?/p>
另外Q我们做了一些改q?Goodfet.nrf 告诉我们怎样扫描我们惌监听的设备:
q意味着扫描一个完整的频率范围需要大U?5分钟Q?and at least several keystrokes must be pressed while we're sniffing within the correct 10 second period. ) 在仔l学习了Travis的研IӞKeyKeriki 的项目,以及试了我的键盘,我们可以做一些改q:
0xAA (10101010)
因ؓ0xAA后面永远跟的? (0xCD 二进?11001101
)以保持比特位交替Q这样又加快了一倍的搜烦速度?/li>Thorsten Schröder ?Max Moser 设计了一个碉堡了的东?nbsp;KeyKeriki, 能够监听微Y键盘Q完全逆向了解密的q程q且做了个设备能够完全实现这些。然而,他们的设备需要两个无U电和一个高端微处理器,来捕获和解析?Mbps通信的键盘设备生的数据。Travis的项目虽然牛|但是需要一台电脑主机,而且对于我们U密执行dQ这套设备还是太大了Q因此我们改q了设计Q现在只需要一个廉hU电和一个微处理器,功耗低而且体积,不再需要电脑和其他无线电设备?/p>
Thorsten ?Max 发现q个击键只是使用ECB模式单的?span style="line-height: 25.6000003814697px;">MAC地址异或加密 , 我们可以使用Travis的方法利用nRF24L01+来嗅探和获取MAC地址Q这U加密方法相当于只是把扑克牌切了一ơ?/span>
l过q一步调查发玎ͼ我们现在知道所有微软键盘的MAC地址都是?xCD开始的Q实际按键(下图色部分Q恰好与MAC地址W一个字节对齐,q就是说即我们不知道完整的MAC地址Q我们依然能够解密按键消息,因ؓq个寚w是不会变的,MAC地址开头一个字?xCD也是不变的?/p>
׃数据包加密部分的长度?1个字节,而MAC地址?个字节,CRC校验是每个字节做Q异或(加密前)Q你会发C些有意思的事情Q由于MAC地址被异或了两次Q我们能够在不需要知道完整MAC地址的情况下计算校验|q是因ؓMAC被异或两ơ,q当于什么都没做Q而第11个字节又是MAC地址的第一个字节,我们知道?xCD。根据这个特性我们可以进行一些其他的dQ比如更Ҏ键和CRC校验Q同样不需要知道MAC地址Q这会在我以后的项目做相关演示?/p>
KeyKeriki 目中的一|CZ解密q程Q?/p>
KeySweeper的解密部分代?
// decrypt those keyboard packets!
void decrypt(uint8_t* pkt)
{
// our encryption key is the 5-byte MAC address and
// starts 4 bytes in (4-byte header is unencrypted)
for (int i = 4; i < 15; i++)
pkt[i] ^= mac >> (((i - 4) % 5) * 8) & 0xFF;
}
原文Q?span style="font-family: monospace; font-size: medium; line-height: normal; white-space: pre-wrap;">KeySweeper