这次,我们将使用一个示波器来分析电信号,看看USB键盘是如何工作的。首先,连接USB键盘之前的示波器显示两条信号线,“D+(黄色)”和“D-(绿色)”。
当将戴尔USB键盘插入示波器时,D +保持相对较低,但D-移动到更高的位置。
低 D + 和高 D- 表示 USB 键盘在“低速”下处于空闲状态。
换句话说,这种信号变化表明USB键盘已连接到设备,并且连接处于低速状态。
当尝试连接另一个USB键盘时,这似乎是“高速(最大传输速度为480 Mbps)”,D +移动到高位置,D-移动到低位置。
按下一个键不会改变示波器波形,因为USB键盘通信可以从PC端开始。但这一次,将它连接到一根特殊的电缆上,以便示波器可以反射来自USB键盘的信号。
然后在示波器上产生信号。
缩放时看起来像这样。
将缩放后的波形记录为屏幕截图,以详细分析波形...
在Photoshop中合并。
当把它打印在纸上时,它看起来像这样。
大多数部件的波形向相反方向移动,例如“D +高,D-低”或“D +低,D-高”,但在某些地方“D +低,D-也低”。有一个部分在状态中。
这是一个称为单端零 (SE0) 的条件。
当SE0显示在波形中时,它看起来像这样。
据说SE0继续2位的事实表明“数据包结束”......
可以看到此波形包含三个主要数据包。
此外,D+为低且D-为高的状态称为“J状态”,D +为高且D-为低的状态称为“K状态”...
如果为每个位输入 J 状态和 K 状态,则如下所示。
J 状态在数据包结束后持续一段时间,K 状态是数据包的起点。起初,它总是以模式“KJKJKJKK”开头,但由于这显示了信号的同步部分,称为“同步数据包”,因此实际数据包含在后续部分中。
数据包中的数据由重复的“0”和“1”表示,但此波形并不意味着“K”或“J”对应于“0”或“1”。在此波形中,“与前一个状态不同 = 0”和“与前一个状态相同 = 1”,并且第一个“KJKJKJ”旁边的“K”...KK“ 是 ”1”。'.您可以将 0 和 1 分配给下一个“J”作为“0”,将下一个“K”指定为“0”,将下一个“K”指定为“1”,依此类推。
当手动解密数据包时,发现第一个数据包表示设备ID输入命令“IN”,USB键盘设备ID“24”和确认命令。
下一个数据包看起来像这样很长一段时间。它是一个数据输入命令“DATA0”,8位数据“00”“00”“00”“00”“00”“00”“00”“00”“00”“00”和一个确认命令。
最后一个数据包是要发送的数据的确认数据包。
这里重要的是第二个数据包“00”“00”“00”“00”“00”“00”“00”“00”“00”“00”,这意味着“没有密钥”。没有按它。'
现在,将 USB 键盘连接到更复杂的示波器,并在按下某个键时查看数据包。
连接并调整后,手动解码的数据包现在直接显示在示波器上。未按下键时的数据包仍然是'00''00''00''00''00''00''00''00''00''00'...10>100''00''00''00''00''00''00''00''00''00''00''00''00''00''00''00''00''00'0
当您按“windows键”,“Shift键”,“Ctrl键”等时,第一个位将更改为对应于每个键的值。例如,“Ctrl 键”显示为“01”,“Alt 键”显示为“04”。
当同时按下多个键时,将显示与每个键对应的值的总和,并且可以确定同时按下哪个键。这一次,由于同时按下了“Ctrl键”和“Alt键”,因此显示“05”,即“01”和“04”的总和。
开头的第二位不用于任何事情,并且始终处于“00”状态,其他键(如“A”和“B”)显示为其余6位的组合。
当按下多个键时,6位中的每一个都采用不同的值,并且可以识别出最多6个键“同时按下”。Eater表示,这种输入键的识别能力因USB键盘的性能而异,因此根据对象的不同,可以通过同时按更多键来识别。