论如何优雅地蹭饭:克隆篡改公司饭卡(M1卡)
最近借了Proxmark3来娱乐性的玩下RFID技术,工资甚低的我只好拿公司饭卡实验,优雅地蹭几顿。物业大叔表打我啊!以下操作纯属学习目的,初学难免错误较多,望斧正。
首先了解M1卡的结构:请参考http://bobylive.com/static/1491
实验设备:PM3及天线+饭卡+UID白卡
连接好设备后通过hw tune观察电压变化,判断高低频卡,Freebuf已有文章。
末放卡电压值
放卡后电压值
以上步骤可以无视,以下直接进入正题。
一、克隆卡
读M1的卡数据。记下UID号,用于之后复制一张UID一样的卡,sector0区其它厂商信息地方改不了就没办法了,写死了。所以这个数据区之后在数据对比会有点点差异,所以我们可以利用一张UID白卡完成克隆和修改,保证数据可对比性。
连接com3口 proxmark3COM3进入命令行
执行:hf 14a reader,记下UID:b3 9422 d4后续克隆卡使用
获取区块1的A/B key
使用hf mf nested枚举其它区块key
可以看到,区块基本都使用的是默认的卡密。操作完之后,就可以把我们卡的原始数据dump出来,接着把dumpdate.bin文件备份,使用C32asm对数据进行个性。为了克隆卡及验证修改数据后是否可正常使用,先把卡上的姓名进行修改。
之后,我们把修改后的dumpdata.bin重新写入到UID白卡上,为防止检校UID,我们先把白卡的UID改掉。
命令:
hf mfcsetuid b39422d4
接着就可以将dumapdata.bin内容克隆到新卡上了。
使用命令: hf mf restore 进行克隆。PM3灯闪一会就克隆完了。然后中午饭去刷下卡,修改姓名后的克隆卡正常使用。
二、优雅地篡改卡余额
中饭过后,刷了一次卡,然后这时第一时间就是dump出克隆卡的数据,将原卡数据与刷卡后的数据进行对比。使用bcompare对两次数据进行比对。
对比两次刷卡记录发现有两个区块的数据变化,同一次刷卡中,上面数据一至。猜测是作为备份数据使用。
其中红色框左边的 0e 06换算成十进制就是1550,右边F0 05换算成十进制是1520。正好对应我的卡余额155以及刷卡后的152。说明这个位置是余额位。
绿色框框表示的是余额的检校位。两次数据对比很容易发现检校位的生成方式。
余额检校位算法:
OE+06=14
f0+05=f5
修改余额200.0转换十六进制:07 D0
倒序写入 06 27 检校位 2D
修改几处数据
运行hfmf restore命令,重新写入白卡。
再次刷卡后:
[本文作者Conqu3r,Team:Pax.MacTeam,转载请注明来自FreeBuf.COM]
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 使用 Forestry 管理基于 GitHub 的图床
- 从零开始搭建 VuePress 静态博客
- 算法菜鸟的烂笔头
- 防火墙(iptables)
- 短视频商城源码,安卓几种弹窗方法
- Automl框架katib浅析
- NAS Network Attached Storage
- es6 随性学习之 字符串 String
- MongoDB内核:副本集选举过程分析
- MongoDB内核:主从同步之源码剖析
- OpenGL ES 帧缓冲区位块传送
- OAuth 2.0 单元测试解决方案
- 「性能提升」扩展 Spring Cache 支持多级缓存
- 如何以源码形式运行Nacos Server
- Spring Boot 2.4 配置文件将加载机制大变化