最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

IC卡金額算法的淺淺研究

2022-05-07 00:26 作者:LMark07  | 我要投稿

時隔快一年,終于想起來要更新IC卡算法破解的第二期了。之前第一篇關(guān)于水卡密鑰算法的破解那篇博客,還是我高三時候?qū)懙牧?,現(xiàn)在大一了,寫出的東西也會不一樣了。這次會介紹的詳細(xì)一點(diǎn)了。

第一篇博客傳送門:IC卡秘鑰算法破解的一次嘗試,不過那也只是我高中時候?qū)λ荑€的理解,現(xiàn)在已經(jīng)不一樣了。OK,現(xiàn)在我來介紹我最近一次,幫別人研究水卡金額的算法的一次嘗試,感謝@W提供素材。

警告:本文僅供學(xué)習(xí)討論使用,請勿拿去進(jìn)行其他不法用途,出什么問題,本人概不負(fù)責(zé)。

0x0.前言

本來沒打算寫金額篇的,因?yàn)楦咧心菚?,能力有限,還不能很了解金額算法的一些原理?,F(xiàn)在大學(xué)了,不在高中,數(shù)據(jù)也拿不到了,也寫不了。但是天無絕人之路,感謝@W老鐵給我提供了數(shù)據(jù),讓我得以完成水卡算法的第二個部分——金額篇


0x1.數(shù)據(jù)準(zhǔn)備

這次的數(shù)據(jù),可以說是非常的詳細(xì),而且數(shù)據(jù)量也很大。據(jù)不完全統(tǒng)計,足足有78條金額數(shù)據(jù)?。。∵@么大的數(shù)據(jù)量,給我的破解提供了很大的便利。


0x2.開始破解算法

拿到數(shù)據(jù)后,大概了解了一下數(shù)據(jù)的分布的格式,發(fā)現(xiàn)其格式是非常有規(guī)律的,如下:


  • 前面四位是存儲金額的地方,理論最大值是FFFF,也就是655.35元。

  • 中間四位是刷卡次數(shù)

  • 后面四位是校驗(yàn)位,也就是本次破解算法的重點(diǎn)

知道了要破解的數(shù)據(jù)后,就到了分析數(shù)據(jù)的環(huán)節(jié),這時候就需要大量的數(shù)據(jù)了:


密密麻麻的數(shù)據(jù)(暈),這次的數(shù)據(jù)比較規(guī)整,這很利于我們進(jìn)行數(shù)據(jù)分析。還記得當(dāng)時,上C艸課的時候,太無聊了,就在研究這個數(shù)據(jù),當(dāng)時的我還是抱著之前密鑰算法破解的思維來嘗試破解這個金額算法,這個思維有好處,也有壞處。好處就是我很容易就知道從哪里入手分析,壞處就是,看問題不夠全面。不過這些都是正常問題啦。OK,回到主題。


我一開始發(fā)現(xiàn)的是后四位的第二位和第四位數(shù)字的和,是一個定值——8,例如:

9147 :1 + 7 = 8

894F:9 + F = 24 mod 16 = 8

6E6A:E + A = 24 mod 16 = 8

可以看到,第二位和第四位的值之和都是八(24去求余之后就是8),這樣,我們只要知道了第二位的算法,第四位也就可以算出來了。四舍五入,就相當(dāng)于我們已經(jīng)搞定了一位的算法了(雖然還不知道第二位怎么得出來的)。這次開局很容易,我就知道了第四位算法,但是接下來得破解工作,就沒有這么容易了。


現(xiàn)在還有三位需要破解,因?yàn)榈谒奈皇怯傻诙粵Q定的,所以我猜測第三位可能是由第一位決定的(現(xiàn)在看來不完全對)。在前面的48條數(shù)據(jù)中,可以看到后四位是當(dāng)金額變化了四次,才變化一次,


而且很多重復(fù)出現(xiàn)的。然后我開始找第一位和第三位的對應(yīng)關(guān)系,然后真的找出了一張映射表,


看著這熟悉的變化規(guī)律,仿佛之前在密鑰算法破解里面見過類似的算法,只要找到什么東西決定第三位是否用進(jìn)位,然后再找出什么決定第一位,就可以破解出算法了。然而,這個傳統(tǒng)的思路雖然看起來很直觀,但是,太繁瑣了,我隱隱感覺水卡真正的密鑰算法應(yīng)該是非常簡潔明了的,破解工作又暫時陷入了僵局。


0x3.突破瓶頸

破解的轉(zhuǎn)折點(diǎn)源自于開始破解工作開始的第二天晚上,那是一個星期五(不是野人),我去參加了社團(tuán)的系統(tǒng)維護(hù)課,課上,講解了一些數(shù)據(jù)校驗(yàn)碼的知識。其中,用到了許多異或操作,使得運(yùn)算出來的結(jié)果非常有規(guī)律。我突然想到,水卡金額校驗(yàn)位是不是也是通過異或得到的呢?有了思路之后,馬上開始著手研究,在嘗試了許多組合后,終于讓我找到了金額校驗(yàn)位計算的真正規(guī)律:

后四位校驗(yàn)位是由前面的金額+刷卡次數(shù)異或得來的,具體過程是:

以84.91這條數(shù)據(jù)為例,金額為212B,刷卡次數(shù)為2920,校驗(yàn)位為A92F


首先,將金額和刷卡次數(shù)和校驗(yàn)位前兩位進(jìn)行異或:

21^2B^29^20^A9

= AA

可以看到,結(jié)果是AA,再對剩余的數(shù)據(jù)進(jìn)行相同的操作可以發(fā)現(xiàn),異或的結(jié)果都是AA,所以這就破解出來了校驗(yàn)位的前兩位。

然后,經(jīng)過觀察和嘗試不難發(fā)現(xiàn),校驗(yàn)位前兩位和后兩位的和恒為28,所以用A9 與 28進(jìn)行和校驗(yàn),可以得出后兩位的值


至此,整個金額校驗(yàn)位的算法就破解完畢了,接下來要做的就是實(shí)踐一下。


0x4.金額模擬

按照上面的方法,我們來隨便模擬一個金額寫入,比如132.00元,首先13200轉(zhuǎn)換16進(jìn)制為0x3390


然后,刷卡次數(shù)我們可以隨便設(shè)置,這里我就設(shè)置成0000吧。這時候,按照上面的方法,用金額^刷卡次數(shù)^AA,就可以得到校驗(yàn)位的前倆位:


前兩位是09,再用09與28進(jìn)行和校驗(yàn),可以得到



后倆位是CF,所以校驗(yàn)位就是09CF,構(gòu)造一下金額數(shù)據(jù)


然后寫入卡中去測試一下


可以看到,模擬金額成功了,說明這個算法是正確的呢


0x5.總結(jié)

和之前的密鑰破解比起來,這次的金額校驗(yàn)位算法破解似乎更簡單了,因?yàn)楝F(xiàn)在的我和當(dāng)初的我不一樣了,有那么一點(diǎn)點(diǎn)進(jìn)步了,所以寫這篇文章記錄一下。我發(fā)現(xiàn),對于這些M1卡,似乎最常用到的就是異或操作,如果實(shí)在沒思路,隨便嘗試異或幾個數(shù)也是不錯的選擇呢。


IC卡金額算法的淺淺研究的評論 (共 條)

分享到微博請遵守國家法律
博客| 区。| 柳江县| 鹿邑县| 南江县| 南澳县| 西华县| 景泰县| 仁布县| 嘉黎县| 郴州市| 松江区| 唐海县| 安顺市| 新化县| 年辖:市辖区| 雷山县| 乐陵市| 泊头市| 华宁县| 安丘市| 镇安县| 新昌县| 铜川市| 东阳市| 东阿县| 永清县| 罗定市| 孟村| 垦利县| 米林县| 沛县| 湖北省| 蒙自县| 涿州市| 洛阳市| 思南县| 利川市| 贞丰县| 克拉玛依市| 绵阳市|