一次蜿蜒曲折的RFID破解之路
前言
早一段时间看到一篇看雪论坛关于逻辑嗅探破解接触式IC卡口令的文章,激起鄙人对rfid的兴趣。遂准备拿学校的卡一展身手。
0×00 前期准备
经过初步了解,学校的rfid卡片分为两种。校园卡采用MIFARE Classic 1K,澡卡采用Atmel T5557。之前看过无数M卡的破解文章,于是决定跳过此卡(后通过proxmark3成功破解)转向更为小众更具挑战的T5557卡。
通过阅读T5557的文档,淘宝了如下工具:
·T5557读卡模块(加USB转TTL) ·T5557白卡 ·USB 逻辑分析仪 ·杜邦线若干
0×01 制作T5557卡读写器
本来准备淘宝一个现成的读卡器的,发现价格参差不齐。知网看了几篇T5557读写器设计,大概了解到读写器原理。
读写器 = 读卡模块 + usb转TTL(与电脑通讯模块)
0×02 T5557科普
特征:
·非接触方式的读/写数据传输 ·从100 KHz到150KHz的无线电载波频率 ·与e5550产品兼容并扩展的应用模式 ·小容量, 其结构与国际标准 ISO/IEC11784/785相容 ·在芯片上掩模有75pF的谐振电容 ·包括32bit密码区在内的7x32bit的E2PROM存储空间 ·单独开设有64 bit存储空间作为厂商可追溯的数据区 ·32-bit配置寄存器在E2PROM中可作如下设置: ·数据速率:RF/2 到RF/128或e5550的固定值(通常使用在RF/32或RF/64) ·调制/编译码:FSK、PSK、曼彻斯特、双相、NRZ(典型为:曼彻斯特) ·其他的选项:密码模式、最大区块特性、按请求回答(AOR)模式(默认值:PASS=0、MAXB=7、AOR=0);反向数据输出、直接访问模式、序列终结符、写保护(每一块完全锁位)、OTP功能等。 ·存储体结构:存储体是330bit的E2PROM,安排在0和1页的10个块中,每个块(包含被同时规划的bit锁块位)有33 bit。第0页有8个存储块,其中的块0包含配置/控制数据,在正常读操作期间是不被传输的。块7可以被用户当作写保护密码使用,与最大区块的显示值配合,可设置某些块值或第7块密码值不可见,只有知道密码的合法用户才能访问卡片中的数据块。每块存储体的位首,即第0bit,是该块不可查看但可一次性改写的锁块控制位(即OTP特性。为安全起见,一应提供改写各块第0位的OTP功能)。第1页的块1和块2包含可追溯数据,并且被Atmel在制造测试期间进行其数据规划并且锁定。
还有些特征在此不再赘述,具体的在参考给出的链接文档中。
0×03 首战告捷
安装好USB转TTL的驱动,用卖家给的技术文档通过串口助手发送相关指令。后来懒得看指令直接问卖家要了个他写软件(存在卡片与读卡器匹配问题,建议在充分阅读T5557技术文档的情况下操作!)。
撒花O(∩_∩)O哈哈~
通过上图可以初步断定:
1.卡片存在密码,只能进行块读。 2.块二和块四前面2个字节为卡片金额,即为¥8.01。
然后拿张卖家送的白卡把数据一套,抱着试一试的心态拿去澡堂洗澡去了,居然能够使用。这一点我思考了好久,可能是白卡块0区设置的是不需要密码读写,然后澡卡机器采用的是密码写 70 bit (PWD=1),从而忽略了与密码匹配的过程。
0×04 再次深入!
其实到0×03已经达到目的了,但鄙人不是搞黑产的鄙人是Geek啊,本着Geek精神决定再次深入,试着破解相关数据关联。
冷静的分析了下,想出了三个方案:
·猜!脑洞大开的猜! ·通过充值软件,分析出数据联系。(希望不大) ·逻辑分析澡卡机器,得到数据关系。
0×05 脑洞大开的猜!
开始几天死了好多脑细胞,一直在想金额后面2个字节是干啥的。可能是校验码但一直想不到是什么校验。
后来浏览官网发现这样一句话:
数据传输过程中CRC校验
刷卡记录
1st 2nd 00024xxx 00024xxx 可能为学号 1111F16C 0810FB30 金额及校验码 01440000 01440000 卡的类型(用户卡、管理卡巴拉巴拉) 1111F16C 0810FB30 同上 00003D3O 00003D3O 校验数据 00003D3O 00003D3O 同上
块1-6通过CRC校验得到相同的校验码,所以 CRC(块二/快四) == CRC(块五/六)。
本来准备通过crc校验码逆向的,后来看看又是移位、异或什么的麻烦的要死,遂正向暴力破解简单粗暴(^__^) 嘻嘻…… 。
草草几行python代码
import crcmod import string#create CRC16 calculator crc16 = crcmod.predefined.mkCrcFun('crc-16')#wait for user input hstr = '00 00 8D 7F' blah = ''.join(chr(int(c, 16)) for c in hstr.split()) check = hex(crc16(blah)) for i in range(0, 255 + 1):for j in range(0, 255+1):str_hex_i = hex(i)[2:].upper() #format string like 'EE'str_hex_j = hex(j)[2:].upper()data = '50 00 %s %s'%(str_hex_i, str_hex_j) #format string like '09 13 9F EE'blah = ''.join(chr(int(c, 16)) for c in data.split())data = hex(crc16(blah))if data == check:print str_hex_i, str_hex_jbreak
到此已得到金额以及后面2个字节校验码的关系了,但是还是不知道卡密是怎么组成的,到底是一卡一密还是多卡一密。还是本着Geek决定再次深入!!
0×06 Creak官网,拿到软件??
本来设想进官网拿到软件的,准备一展身手的。拿到shell之后发现啥都没有,一大堆客户资料貌似可以社工,算了也不喜欢弄那个遂放弃。邮箱系统可能存在蛛丝马迹,无奈才疏学浅。
此非本文的重点,故拿站过程跳过 。也不存在技术含量,惯用套路而已。
0×07 逻辑分析澡卡机器
是时候亮出下一个奇门遁甲了。
USB 逻辑分析仪
拿到澡卡机器后一番解剖,右下角的红圈的芯片就是我们要逻辑嗅探的对象。通过芯片的文档找到input、output和gnd的针脚。
连接好的效果图
安装好saleae软件后,参考T5557文档给出的数据编码方式以及命令格式
然后在浩如烟海的数据流中找到该序列(此过程需要极大的耐心,需充分了解数据调制方式,因篇幅简化了分析过程)
Protected write:
1p + Password 32 + L + Data 32 + Addr
1p :页面选择(10/11) Password :32位密码 L :锁位, 是否锁定该块数据(0/1) Data:32位数据 Addr:块地址位,例如块5(101)
通过保护写的格式再结合数据图得到密码为:92 10 92 40(hex)
0×08后记
破解基本上告一段落,但还是无法通过卡号直接推导出密码。哎!以后有空慢慢分析吧这个也急不来。
前后大约历时3周,说下经验总结吧。
·书本上的知识还是有用的!当时破解时计算机组成原理、数字逻辑基本上忘得一干二净,无奈又重读了一遍。要是还记得的话,估计进度可以提前几天。 ·英语很重要啊!要不然文档都看不懂,中文翻译有时候很水。 ·基础很重要,这一起都会变得游刃有余。
参考文档
T5557技术文档
U2270B文档
一次蜿蜒曲折的RFID破解之路相关推荐
- RFID破解三两事(原作者:YunFree)
网上看了很多RFID破解的文章,大部分都是工具使用,一步步该怎么操作,基本上没有讲原理的,估计导致了很多初学者非常迷惑,特别是一旦按照操作步骤操作的时候出错时更加迷惑,不知道是什么状况,国内radio ...
- RFID破解三两事(转)
RF卡,主要有三种频率的射频,125kHz左右的低频,13.56MHZ的第二代射频标准协议,以及最新的900MHz的新标准.现在的门禁卡,银行卡,身份证大多是13.56MHz的ISO1443A/ISO ...
- SWF代码分析与破解之路 (YueTai VIP视频信息获取工具) Socket续篇
引言 上一篇 <Socket与站点保密应用 (隐藏链接的视频下载)>大大咧咧地从 WEB 讲 Socket.再到 TCP/IP 等协议,又再讲到 Wireshark 怎样抓IP包分析.最还 ...
- 360家庭路由器暴力破解之路
原理是利用发送封包的 ,curl表单提交,然后做一个循环,直接暴力破解. 需要用到字典.不过字符是需要加密的. 我在github 上面搜到了加密的源码,不知道是否可用,我会持续更新这篇文章的. 直接上 ...
- 实例分析正版手游的安卓反破解之路
"不愿意为游戏付费的安卓玩家们并不是我们的市场"Atypical Games 宣布不考虑制作<辐射岛>安卓版.苹果的独占市场,又多了一面小红旗. 喊出"最大破 ...
- Mac App 破解之路八 病毒程序分析
本人使用MacBooster 7 扫出了几个未知程序. JMJ56 这个程序. 在finder中打开发现是一个shell脚本 调用了python 9NKb0 就是python脚本使用. 只不过是 ...
- acw_sc__v2的算法破解之路
前言 本文仅供学习参考,如有侵权,请私信删除 由于版权问题,本文所展示的代码并非完整代码,也不提供相关工具,关键参数只提供思路. 提示 不知道该加密算法源自何处,但发现有不少网站均使用了该加密算法 该 ...
- 无法抓取的视频,暴力破解之路
一.经历 1.末年末月末日在一个夜黑风高的夜晚,脑袋一热在网上花了大价钱买了某某的一个培训课程.开始时候该平台还没有对用户进行时间限制,突然某天在网页上显示剩余100天,然后一下子慌了,时间.时间.时 ...
- RFID Hacking–资源大合集
原文: http://www.freebuf.com/news/others/605.html http://www.proxmark.org/forum/index.php RFID破解神器官方论坛 ...
- 【游戏设计图形学】在地图上生成蜿蜒河流的两种方法
引言 在开发游戏时,我们经常需要用到随机生成的地形,而河流是其中不可或缺的一部分.本文章将探讨如何在地图上生成河流. 河流生成的自然原因 高山积雪,地下水,雨水是河流发源的主要原因,而由于雨水形成的小 ...
最新文章
- RTB中的cookie mapping理解
- 表达式括号匹配(信息学奥赛一本通-T1353)
- 数据卡片_手把手教你构建企业实时数据大屏
- 一台手机苹果含泪赚4000?iPhone 12硬件成本曝光
- 作业MathExam
- hibernate在不联网或者网络异常时不能解析配置文件
- numpy 常用api(四)
- a letter and a number
- 北交大远程教育与继续学院计算机答案,北京交通大学远程与继续教育《概率论与数理统计》课后习题答案.docx...
- 移动端图形化报表界面设计_移动端报表设计-帆软
- vue ajax请求结束再次执行查询方法,Vue.js 监控v-for循环渲染完成后再执行方法
- OCP最新题库收集,052新加的考题及答案整理-19
- iS-RPA2022.1.0 | 艺赛旗RPA新版本正式发布
- 国美金融是“持牌大户”还是“违规大户”:国美易卡贷超出现套路贷APP,暴力催收恐吓借款人
- 2010一次意想不到的环球飞行
- 柔性电子: 用于无线连接和物联网应用的高导电率多层石墨烯石墨的可持续生产途径
- [RK3399][Android7.1]修改系统配置同时输出Speaker和USB音频
- SpringBoot基础入门篇
- 某马-某淘商城的day01---分析,工程搭建,tomcat插件启动工程,svn,反思
- 论文笔记:Accurate Causal Inference on Discrete Data
热门文章
- ATFX:美国7月CPI前瞻,及美元指数走势判断
- java使用itextpdf生成 pdf (支持table)分页
- All the python knowledge that I come across
- excel中如何设置单元格以万为单位显示
- 一台服务器接多台显示器,一台主机为两台显示器分屏工作的方法
- verilog实现设计3*8译码器
- java中除数时刻0的异常_java中除数为0时出现的异常情况
- 【javaweb】【服务器】javaweb部署到服务器显示jdbc驱动加载失败
- unity使用videoplayer播放视频黑屏问题解决方案
- Java用递归计算1加到100