少校
- 注册时间
- 2009-11-5
- 金币
- 3385 个
- 威望
- 0 个
- 荣誉
- 0 个
累计签到:7 天 连续签到:0 天 [LV.20]漫游旅程
|
本帖最后由 混血天使 于 2012-2-16 18:59 编辑
7.12.2 PIN码PJ原理为方便大家理解,这里借用一下来自以色列特拉维夫大学的蓝牙PIN码PJ研究论文的部分原理内容,如图7-146所示是作为本地蓝牙PIN码暴力PJ原理图。
| 图7-146 |
如表7-10所示列出了在配对和认证过程中,两个蓝牙设备A和B之间交换的关键通信消息。
表7-10 两个蓝牙设备间交换的关键通信消息
编号 | 源 | 目的 | 消
息 | 长度 | 备
注 | 1
| A
| B
| IN_RAND
| 128 位
| 明文
| 2
| A
| B
| LK_RANDA异或Kinit
| 128位明文
| LK_RANDA与 Kinit
异或后再传送到B,B
收到消息后,解开
得到LK_RANDA
| 续表
编号 | 源 | 目的 | 消
息 | 长度 | 备
注 | 3
| B
| A
| LK_RANDB
异或Kinit
| 128位明文
| LK_RANDB与Kinit异或后
再传送到A,A收到消息后,
解开得到LK_RANDB
| 4
| A
| B
| LK_RANDA
| 128位明文
| 明文
| 5
| B
| A
| SRES
| 32位明文
| 明文
| 6
| B
| A
| LK_RANDB
| 128位明文
| 明文
| 7
| A
| B
| SRES
| 32位明文
| 明文
| 如图7-147所示为在Linux下使用蓝牙sniffer来对蓝牙设备交互的数据报文进行抓包,这些数据包并不会直接显示出如表7-10所示的内容,还需要后期的分析工作。
| 图7-147 |
结合上面列出的PJPIN码的原理图和消息分布表,就可以得出蓝牙PIN码PJ的基本思路,具体如表7-11所示。
表7-11 蓝牙PIN码PJ的步骤
步
骤 | 说
明 | 1
| 列举出所有可能的PIN值,如果假定PIN
长度为4位,那么可能的PIN取值为0000到9999之间
| 2
| 按照顺序取PIN列表中的第一个值,并取得
消息IN_RAND和BD_ADDR,就可以通过
E22(注意:E22算法是公开的)算法,计算得到Kinit
| 3
| 根据消息2和消息3,由上面计算得到的Kinit,
反推计算出LK_RANDA和LK_RANDB
| 4
| 根据LK_RANDA和LK_RANDB以及两个设
备的物理地址等信息,计算得到Kab
| 续表
步
骤 | 说
明 | 5
| 由Kab和消息4(AU_RANDA),计算得到
SRES,并与信息5的SRES比较;同样的,
用Kab和AU_RANDB,计算得到SRES,
并与信息7进行比较
| 6
| 如果第5步的消息比较相等,则给定的PIN
是正确的;如果不匹配,回到第2步,取PIN
列表的下一个PIN,重复步骤2后的步骤,
直到找到正确的PIN为止
|
如你没钱和不满意的,先回复再拿去金币行了! |
评分
-
1
查看全部评分
-
|