PIN码PJ原理
本帖最后由 混血天使 于 2012-2-16 18:59 编辑7.12.2PIN码PJ原理为方便大家理解,这里借用一下来自以色列特拉维夫大学的蓝牙PIN码PJ研究论文的部分原理内容,如图7-146所示是作为本地蓝牙PIN码暴力PJ原理图。
http://www.rbjy88.com/upload/201202090925125141.jpg
图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所示的内容,还需要后期的分析工作。
http://www.rbjy88.com/upload/201202090925174547.jpg
图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为止
如你没钱和不满意的,先回复再拿去金币行了!:L 为什么没人购买呢,老大,我来支持你一下,真晕。 老大,都什么时候了!PIN码PJ原理对坛子里的XD来说,已经是家喻户晓了!!你
还想卖钱????? 老大,都什么时候了!PIN码PJ原理对坛子里的XD来说,已经是家喻户晓了!!你
还想卖钱????? 呵呵 我来看看神马原理 知道原理不重要,主要能编写出软件。 老大,都什么时候了!PIN码PJ原理对坛子里的XD来说,已经是家喻户晓了!!你
还想卖钱????? 学习//////// 学习了!~~~~ 回复 1# 混血天使
太抽象了 我来支持你一下