混血天使 发表于 2012-2-16 18:30

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

yingxiao01 发表于 2012-2-16 18:33

为什么没人购买呢,老大,我来支持你一下,真晕。

yuezheye 发表于 2012-2-16 18:44

老大,都什么时候了!PIN码PJ原理对坛子里的XD来说,已经是家喻户晓了!!你

还想卖钱?????

yuezheye 发表于 2012-2-16 18:47

老大,都什么时候了!PIN码PJ原理对坛子里的XD来说,已经是家喻户晓了!!你

还想卖钱?????

husx7701 发表于 2012-2-16 18:52

呵呵 我来看看神马原理

不要六合01 发表于 2012-2-16 18:55

BENLIANG 发表于 2012-2-16 19:41

知道原理不重要,主要能编写出软件。

439242035 发表于 2012-2-16 19:44

老大,都什么时候了!PIN码PJ原理对坛子里的XD来说,已经是家喻户晓了!!你

还想卖钱?????

zyjun 发表于 2012-2-16 19:54

学习////////

calford 发表于 2012-2-16 20:05

学习了!~~~~

吉磊 发表于 2012-2-16 20:16

回复 1# 混血天使


    太抽象了

lp0823 发表于 2012-2-17 14:06

我来支持你一下
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: PIN码PJ原理