个人头像

柠檬酸

1月前来过

控制台
欢迎来到我的博客!
默认封面

00:00/

播放列表

记一次IC卡数据算法心得

发布于2016-09-24 / 1223次浏览

因为是刚入手RFID,很多知识都是一知半解,或者说根本不理解。 百度了看了许多文章,学习着用异或运算找校验值的方法并不可行。试了转二进制取反码后转成16进制也不行。根本找不到数据之间的联系。也就停留在了IC复制,改UID空卡的阶段。

后在群里遇到了大神,成功破解了算法。分享一下他的算法:

不废话直接进入主题。

用acr122 导出几组数据:

 2F 16 F3 23 00 E9 00 00 00 00 07 00 0007 00 DC 92.03
 CA 35 11 24 00 CA 00 00 00 00 07 00 0007 00 BD 92.33
 09 F8 D5 23 00 07 00 00 00 00 07 00 0007 00 FA 91.73
 D9 26 02 24 00 D9 00 00 00 00 07 00 0007 00 CC 92.18
 C0 3F 1B 24 00 C0 00 00 00 00 07 00 0007 00 B3 92.43
 67 DC BA 22 00 23 00 00 00 00 07 00 00 07 00 16 88.90
 C8 37 10 27 00 c8 00 00 00 00 07 00 00 07 00 BB 100.00

—————————————————–

D E 金额位逆序存放
C:DE分开16进制相加,取后两位。 F 3 2 3
F+2=11
3+3=6
组合成116,和100取余数,得16
C=16;
B:D E 金额异或之后取反.

F3 xor 23=D0

D0取反:

D0 xor FF=2F

F3 xor 23 xor FF = 2F

B=2F;

F:F是C取反。

16 xor FF = E9

F=E9;

G:F拆开 E 9,第一位-1,第二位+3。若满16则自动和16取余。
E-1=D
9+3=C

G=DC;

——————————————————————————-

最后得到的数据是: 2F 16 F3 23 00 E9 00 00 00 00 07 00 00 07 00 DC

和源数据一模一样。破解成功~

根据大神的算法自己手算了200.00的数据:
 ---------------------------------------------
20000转换成16进制:

200.00(10)=4E20(16)

逆序存放后得:

D= 20 ,E= 4E ;

C:2+4=6
 0+E=E

∴C=6E

B=20 xor 4E xor FF = 91

F=6E xor FF = 91

G:9-1=8
 1+3=4

∴G=84

把算出的数据组合得到:91 6E 20 4E 00 91 00 00 00 00 07 00 00 07 00 84

和大神做的脚本做比较,完全一样。 Binggo~

用软件写入看看:导出dump文件,密码在10扇区第三区块:

左边12位为KEY A ,右边12位为 KEY B
验证密码全部成功,读取也正确。
直接写入200.00的数据。
成功~(图片挂了没法补了)
—————————————————————————-算法心得:自己接触的算法太少,只会学着网上做简单的异或取反运算。加上算法比较复杂,自身能力不足,所以自己也只能搁浅。 只能停留在复制UID的阶段。
自己对异或运算的原理和过程一知半解(只会用计算器 ), 还有今天才明白原来16进制取反就是和FF做异或运算。 

今天学了到很多,感谢那位大神的鼎力相助。分享自己的算法的目的是和小伙伴分享思路,一起加油,努力!我不会就此止步不前,相反我会更加努力钻研。我不想做一个只知道索取只知道保存的小白,我要和大神一样分享自己的工具或者技术。

给我一点时间成长,我会不断努力~

—-2015年12月14日

最后修改于:2016年12月23日 下午6:51

喜欢 0
TAGS:  
本站文章除注明转载/出处外,均为本站原创或翻译。若要转载但请务必注明出处,尊重他人劳动成果。 转载请注明出处链接 : 记一次IC卡数据算法心得

2 条评论

  1. 孤独的小王子 说道: 来自 Google Chrome 72.0.3626.121 in Windows 7
    2019-03-13 17:01

    小老弟厉害

  2. qq_avatar 柠檬酸 说道: 来自 Google Chrome 72.0.3626.121 in Mac OSX 10_14_2
    2019-03-13 17:01

    6666啊!