Desfire卡研究.txt

比较复杂 英文资料 加密的只能在一个PC上看 后来香港八达通 就是这个卡 搞UID可以 读写的话 麻烦!

 

typedef struct
{
    uint8_t uid[ISO14443A_MAX_UID_LENGTH]; /*     uint8_t actlength; /*!< actual UID length */
    uint8_t atqa[2]; /*!< content of answer to request byte */
    uint8_t sak[ISO14443A_MAX_CASCADE_LEVELS]; /*!< SAK bytes */
    uint8_t cascadeLevels; /*!< number of cascading levels */
    bool    collision; /*!< true, if there was a collision which has been resolved,
                        otherwise no collision occured */
}iso14443AProximityCard_t;

看到:
4A B3 DC 8C 00 00 00 00 00 00 04 04 00 08 00 00 01 00

可以看到DESFIRE卡的UID是4位的!!

1.    CM:0A00
读卡器向卡片发送0A00(0A—AUTH,00-key no.)

2.    RE:AF ek(RndB)
卡片返回AF+DA22830A94D260EC,计算过程:
卡片取随机数RndB=34B57355568DC23A,
用主密钥key=00000000000000000000000000000000
对RndB进行3DES加密得ek(RndB)=DA22830A94D260EC.

3.    CM:AF dk(RndA+RndB’)
发送指令AF+ 74F4AE777AA431E8B76A9BA260335F17 ,AF-认证指令。----------怎么来的?
计算过程:用主密钥对ek(RndB)进行解密得到RndB=34B57355568DC23A,----怎么来的:我的工具可以
对RndB进行闭合字节左循环得到RndB’=B57355568DC23A34,---怎么来的--循环左移
取随机数RndA=0011223344556677,得到RndA+RndB’=0011223344556677B57355568DC23A34,
用主密钥对RndA+RndB’进行3DES+CBC解密得到dk(RndA+RndB’)= 74F4AE777AA431E8 B76A9BA260335F17.

M:053F41DA2726E429
收到: 
CC1F74740ED44FDA -解密-> C#
DB94331CC329DD6B -左移-> 动手
94331CC329DD6BDB -异或-> KEIL!!它 + 04244E95C5A5F30A
90175256EC7898D1 -解密->C#
14384A5BEF35AB1E
发送:
AF 
04244E95C5A5F30A-->(加密)
14384A5BEF35AB1E
实际        
-> AF5E2B729057C26848    
5E2B729057C26848
D6B1B50B893E0BC5
B1B50B893E0BC5D6
B591451CFBAE36DC
918E8CA16026279D
发送:
AF04244E95C5A5F30A918E8CA16026279D    

回答:
-> 00 C72A9D067B955324    


-> AF76D518DD40BEB0DD
76D518DD40BEB0DD
CF00EC20202B6E79
00EC20202B6E79CF
04C86EB5EECB8AC5
54FB0157633A4CFA
发送:
AF04244E95C5A5F30A54FB0157633A4CFA

建立应用:
CA0000010B8E
建立文件:
CD01013412100000
CB01013412100000
CC010134120000000050C30000C800000003
C001013412200000100000
    

你可能感兴趣的:(Desfire卡研究.txt)