热搜词
发表于 2019-5-29 22:07:03 | 显示全部楼层 |阅读模式
关于IC卡内数据如何让换算的
我们先看一张图:

image001.png

file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png
很明显的选中的这两行就是金额区,所以我们就来通过计算一下这里边的金额来说一下其中的算法。
我们来看一下,这两行数据是一样的,但是有的卡里边可能不一样,,我们就把这个最常见的卡内的这些信息分析一下,我们先逆向分析来一遍,也就是先看卡内数据,然后一步步转换成金额数据。
我们只看选中的这两行就行,也就是 10 27 00 00 EF D8 FF FF 10 27 00 00 01 FE 01 FE,我们暂且把这行数据分成四段来看,

image002.png

第四段是地址位,所以我们可以忽略不看,但是写卡的时候也不要动它,就让它保持原来的样子就行。第1和第3段是一样的。中间的FFFF也不要管了。
我们接下来开始计算其中的数据,先看第1段是1027,因为它是十六进制的,所以1027先倒序之后就是2710,然后再转换成二进制就是10011100010000,在计算的时候大家要记好一个十六进制数对应的是4个二进制数,所以前面转换的二进制其实应该是0010 0111 00010000,如果位数不够的话就在前边补零,然后再转换成十进制就是10000,因为保留两位小数,所以10000在刷卡时候就是100.00也就是100块。
再来看第二段EFD8,EFD8倒序一次是D8EF,然后转换成二进制就是1101 1000 1110 1111,然后再取这个二进制的反码,就是0010 0111 00010000,取反之后再转换成10进制就是10000,还是100块,只是这两个存储的方式不一样罢了,第3段和第1段是一样的,所以在计算方面,只计算第1段和第2段就行了。现在我们计算的是倒着来的,也就是从卡内的数据转换成具体金额的方法。也就是逆向计算的。
下面我们把这个具体的思路再整理一下:
1段数据算法(非逆向):十进制金额→转二进制→转十六进制→倒序。
2段数据算法(非逆向):十进制金额→转二进制→取反码→转十六进制→倒序。
下面是逆向计算数据的算法,其实就是把上面的反过来罢了,逆向计算的通常是为了验       证一下计算的数据有没有出错,算法如下:
1段数据算法(逆向):十六进制倒序→转二进制→转十进制。
2段数据算法(逆向):。十六进制倒序→转二进制→取反码→转十进制

好了,这个最基本的算法就是这样了,掌柜已经说的够具体了吧

下面这数据也是一个买家的,也可以看看,思路都是差不多的

606D00009F92FFFF606D00000CF30CF3     280
我们先看看他的280元是怎么来的呢?  606D   反转下是 6D60  16进制转换成10制是28000  也就是280


后面的9F92 是怎么来的呢?   9F92 就是 606D HEX取反得出来的


606D00009F92FFFF606D00000CF30CF3    280  那么如何更改这个280的数据呢?比如改成100的。下面我们来演示下

首先用10进制的100  也就是10000  转换成16进制数据  得出2710 反转过来就是 1027
那么1027 HEX取反就是  EFD8   那么想改成这条数据的100是怎么改的呢?


10270000 EFD8FFFF102700000CF30CF3  这个就是100元的数据了


最后的总结

十六进制倒序→转二进制→取反码→转十进制
十六进制倒序→转十进制→取反
也可以逆向运算,IC卡的算法无非就是这思路,,进制转换》》》取反》》》》分析区间值>>实验

全部评论0
回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2024-11-23 10:38 , Processed in 0.154594 second(s), 25 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2024 Discuz! Team