数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 5697|回复: 82

[Arduino] RFID-RC522模块高阶玩法:虚拟成HID键盘实现密码管理,在电脑上刷卡玩[原创]

[复制链接]
发表于 2023-8-3 03:25:51 | 显示全部楼层 |阅读模式
一切的起点,是手欠在某宝买了 RC522 射频读卡模块:



模块主控是 NXP 的 RC522(标准版) 或者 CV520(简版),内含一堆握手+通信协议,可以读写已知秘钥的 13.56MHz 射频卡。

13.56M 射频卡基本是兼容 MIFARE-1KB 协议,常见小区门禁卡就属于这类。外形则是千奇百怪:



入手读卡模块,本打算练习卡片访问编程,没想到后来一步步折腾成了物理密码器/大阵,特来分享下。


【硬件链路】

由于有 Arduino 库的加持,玩转 RC522 模块并非难事,只要连接物理 SPI 接口就能通信:



然而稍加调查,就发现了模块的险恶之处:仅支持 3.3v 供电及逻辑,在 5v-Arduino 的环境下基本全是坑。
3.3v供电还好解决,最麻烦的是数据口电平适配:串电阻钳位啥的,影响速度还不优雅。

转脸发现手头还有 GAL16V8,这个 CMOS-TTL 兼容的玩意最适合搞这个:



GAL16V8 的 IN/OLMC 为 5V-TTL 电平,高电位 3.5-4.0v,低电位 <0.8v,刚好适配 3.3v-CMOS 逻辑。

万用板走起来:



装好以后这就优雅多了:



至此 Arduino 已完成了和 RC522 的优雅连接,不需要难看的钳位电路以及额外飞线。


【基础软件】

Arduino 的 MFRC522 库已经非常完善,随便开一个示例就可以在现有硬件上读取卡片信息:



信息样式大致如此:



以 MIFARE-1KB 为例,全卡总计 16 个扇区(Sector),每个扇区包含 64 字节。
其中有 48 字节可用作扇区数据(内容任意,可修改),另 16 字节为扇区秘钥,用于给扇区加密。

在不加密/未锁死卡片的情况下,每张卡片功能上相当于一块“无线优盘”,特别适合离线存一些东西。
这也就给后续折腾埋下了伏笔。


【虚拟HID】

Arduino 底层有着近乎完美的硬件抽象层(HAL),使得高层只要遵循同样接口(例如SPI),就可以完美复用软硬件。



如图所示,硬件链路板如果接常规 Arduino-UNO,那就是一个基本的串口读卡器;
如果接带 USB 支持的 Arduino-Leonardo,那可以把读卡器和鼠标/键盘/U盘等等一系列 USB 设备揉在一起;
如果接带 2.4G-RF 支持的 ESP8266/32,那就是一个支持无线联网/蓝牙访问/小程序接入的IOT读卡器。

简直就是杂交获得遗传特性的翻版。

为了方便刷卡,选择了 USB 版本 Arduino-Leonardo,直接虚拟成一个 HID 键盘,而键盘动作存储于射频卡内。

系统的硬件(黑色)、软件(蓝色)框图如下:



在 Leonardo 当中运行 HID-Lib 形成一个虚拟的键盘,同时运行 SPI/MFRC522-Lib 形成对读卡器的访问。
而 GAL16V8 固件则相对简单,运行一个 Fuse-Wire 连线映射即可,将各 SPI 引脚正确映射到硬件板上。

至此基本折腾出了一个密码器的大阵原型:
某卡片里存储有密码字串,刷卡后 Arduino 获得上述字串,并通过虚拟 HID 键盘动作,向 Win10 实现按键敲击。


【效果】

将若干场景的密码写入不同卡片,就实现了密码的保存/管理。刷卡即手输密码。

固化了“Hello MyDigit”字串的卡,只要有个文本界面(例如记事本),刷卡就自动键入这一串:




固化了锁屏密码的卡(含回车键),刷卡即解锁 Win10 锁定:




固化了某宝账号/登陆码的卡,刷两次(第一次填充账号,第二次填充登陆码)即剁手:




于是大阵得成,阵眼施以相应符篆即召唤出日常密码,高效,可靠,优雅。




最后附上相应固件供参考:

Arduino 端:
GAL16V8 端:

链接:https://pan.baidu.com/s/1hcY0jfzjq_o15n17LzQZhg?pwd=1bye
提取码:1bye

-----------------------------------------------------------------------------------

以上,给 RC522 模块搞了套 GAL16V8 硬件链路,配合 Arduino-Leonardo 实现了 USB-HID 密码召唤大阵。
使用固化了特定文字的 RFID 符篆,即可轻松开启阵眼,实现笔记本电脑上刷卡解锁,刷卡剁手,刷卡....

最后祝大家刷卡愉快!


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 9家元 +270 收起 理由
kkdkj + 30 謝謝分享
兔包公 + 30 優秀文章
fu691 + 30 謝謝分享
e.woods + 30 優秀文章
aping365 + 30 優秀文章
慕名而来 + 30 優秀文章
jf201006 + 30 謝謝分享
dz20062008 + 30 優秀文章
ww5223017240 + 30 優秀文章

查看全部打赏

本帖被以下淘专辑推荐:

 楼主| 发表于 2023-8-3 08:34:11 来自手机浏览器 | 显示全部楼层
ww5223017240 发表于 2023-8-3 04:16
玩玩可以,好像没啥实际意义

所以说专用于 刷卡玩
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-3 08:34:31 来自手机浏览器 | 显示全部楼层
wfzdm 发表于 2023-8-3 07:36
楼主发的帖子质量真高

感谢支持!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-3 08:40:18 来自手机浏览器 | 显示全部楼层
jf201006 发表于 2023-8-3 08:20
相当于“门禁”了。那么问题来了
为什么不在不同扇区放不同的密码,一张卡可存好多密码;
如果不加密的话, ...

存太多密码,半天刷不出想要的。所以只存相关的,例如账号和密码,填写时快速连刷就有了。

这个当然是明文咯,只比写在本子上多一层卡片外壳。

打赏

参与人数 1家元 +6 收起 理由
jf201006 + 6 認真回帖

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-3 13:14:12 | 显示全部楼层
lishibai 发表于 2023-8-3 08:38
这个高级,要是设备在小巧一些就更好了

主要占空间的是 RC522 天线以及底层的 Leonardo.

实际上类似于个 USB 读卡器,能嵌到键盘里就好了:有精力手敲,没精力刷卡
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-3 13:15:14 | 显示全部楼层
szb314 发表于 2023-8-3 08:39
那个刷2次的是不是可以一次解决

理论上可以,不过输太快了容易被某宝拦截。

切换用 Tab,确认用 Enter
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-3 13:15:29 | 显示全部楼层
look_99 发表于 2023-8-3 10:11
万物都可DIY    ‘表’有点多。。。

感谢支持!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-3 13:20:47 | 显示全部楼层
yuyue9999 发表于 2023-8-3 10:50
公交卡能复制到小卡里面吗,现在学生卡都是发行的大卡,携带不方便

这个卡分两种情况:离线储值 vs 联网储值。

早些年公车没有随时随地的 4G 网络,大多数是离线储值;近些年不知有没升级到联网版本。
理论上卡片可以复制,但【离线储值】方式下容易被查水表,仅【联网储值】稍稳妥。

直接去配钥匙地方(可以配门禁卡)问配卡师傅就行,能搞就能搞,不能搞就是太费事或者容易翻车。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-3 13:23:14 | 显示全部楼层
慕名而来 发表于 2023-8-3 11:24
手里有一个这种模块,因为摸不着头绪就一直没能上手,感谢楼主的分享。

这种模块如果不是大店,有一定概率 QFN 虚焊。

我之前入过一批,到手都是通讯不正常。上放大镜看到 QFN 芯片虚焊,拿烙铁补一圈立刻支棱起来了。
我 1L 的 RC522 板就是补焊过的,可以看到芯片上有松香痕迹。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-3 13:24:40 | 显示全部楼层
lmn2005 发表于 2023-8-3 11:29
手头有块RC522 射频读卡模块,但用商家提供的例程玩不了,不知道在哪里出问题。 ...

如果连线、电平转换没啥问题的话,考虑 QFN 虚焊。

能焊接的话自己搞,焊不好的话建议多买几套相互验证测试。板子是不错,只要通了基本不掉链子。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-3 13:25:06 | 显示全部楼层
aping365 发表于 2023-8-3 11:47
贴是好帖,无奈不懂

哈哈欢迎交流: )
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-3 13:28:49 | 显示全部楼层
tomyluo 发表于 2023-8-3 13:06
Windows好像有自带的支持“智能卡”的功能吧

之前一直没了解过这块,看了下也是类似于 IC 卡刷卡的登陆流程。

请教下这个需要怎么样的读卡器支持? 某宝随便买个 IC 读卡器不像是能用的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-3 17:02:27 | 显示全部楼层
alangxl 发表于 2023-8-3 16:51
要把调用命令也一起写入,刷卡直接打开某应用或某网站并输入账号密码自登陆 ...

对就是这个套路,badusb 攻击
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-4 12:36:50 | 显示全部楼层
lishibai 发表于 2023-8-4 08:30
公交卡是加密的,搞不了吧

早年的 M1 卡只要不是全加密,用个 PN532 单元几分钟就能解开,饭卡啥的大多如此。

现在全加密卡只能是爆破或者侧信道,用 PM3 之类现场嗅探也不错。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-4 12:37:21 | 显示全部楼层
茶壹杯 发表于 2023-8-3 19:40
LZ做的实验板正是茶想做又做不好的
求在立创开源吧  谢谢啦

没用 JLCEDA,老软件 proteus 画的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-4 13:45:15 | 显示全部楼层
lishibai 发表于 2023-8-4 13:04
全加密是只指ak18,还是指那些cpu卡?

M1 只要全扇区加密了,安全性还凑合;至于更高的滚动码 CPU 啥的更难搞。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-4 16:03:01 | 显示全部楼层
茶壹杯 发表于 2023-8-4 15:10
哦    会用proteus的都是高手
茶以前自动劝退了 哈哈

最开始只是仿真方便,后来发现画图也不错,再后来发现 win10 一样很溜也就保留了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-6 00:09:44 | 显示全部楼层
冰凌若水 发表于 2023-8-5 13:15
买的华凌冰箱,说明书内附带了一张NFC卡贴,带NFC功能的手机靠上去会提示下载美居app,本来想写入其它网址 ...

M1 卡默认密码全 FF,我写这个帖子的时候需要定制几张卡,结果手欠写到全锁了。

好在写卡程序是自制的,查看推测密码被写全 00;直接重构了写卡程序,用 00 作认证,然后写回 FF 密码。、
成功解开。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-6 00:58:19 | 显示全部楼层
lishibai 发表于 2023-8-5 14:39
那看来智能门锁都没戏了

做到顶天了,也就是小区门禁的手感
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-7 16:22:41 | 显示全部楼层
happysea72 发表于 2023-8-7 10:01
挺好的折腾,可以继续想想其他应用

挂个喇叭,滴好人卡滴好人卡
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-7-2 08:29 , Processed in 0.327600 second(s), 18 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表