我得说,这篇文章不讲怎么从卡里读出数据,不讲怎么提取有效数据,因为大家动动脑子就知道可以用acr122u pm3 之类的搞定密钥,然后找变化位确定校验位,二分法快速确定有效位,等,搞不定密钥的话我也没办法。 首先先看一个基本事实,当线性数据与定值进行 按位与 按位或 按位异或 时,其产生的结果也会呈现一定的规律,如下。
也就是说,结果中,按位与的图像基本呈现为周期性图像,按位或和按位异或的图像是与原图像总体趋势相同。
其他的按位取反、一次函数、二次函数同理。
这样的一个情况可以被我们引申一下。
金额 => (周期)线性数据校验位 => (按位与|按位或|按位异或|函数)结果图像
(同样可以引申到具有一定变化规律的非定值)
找金额位
一般方法1
最普遍的没有技巧的方法,可能是通过多次刷卡,寻找改变的地方,然后转化为10进制看是否是金额。
其实这个方法可以简化,即方法2。
一般方法2
金额其实是非常好找的,因为金额位很多时候可能并不加密,最多是前后位调换一下。
比如我卡里有23.45元,那么转换成hex就是929,即0929,寻找一下0929或者2909,基本就可以找到了。
Excel
在拥有足够连续金额的样本的前提下,我们可以将确认有影响到金额的数据块导出为文本,再导入excel。然后对同一块区(block)数据进行排列,转化为十进制再处理。像这样。