搜索
bottom↓
回复: 34

DIY万能射频卡(门禁)(转)

[复制链接]

出0入0汤圆

发表于 2011-5-24 15:30:09 | 显示全部楼层 |阅读模式
转载自http://gbzdsq.com/?p=487
简介:万能射频卡

RFID(Radio-frequency identification)近来关于”射频识别”的项目是相当凸显.从这里(Instructables),到我们在澳大利亚当地11月份出版的<<芯片(Silicon Chip)>>杂志里的”射频门卡”项目.以至于最近我也花$15在ebay上买了个射频门卡来锁我的车库(所以我前面的邻居能拿到工具,如果他想的话).

众所周知:廉价的射频识别技术使用多年了,以至于他们变得相当不安全.研究人员已证明复制所有种类的射频卡,但是简单的射频识别技术标签仍然被用于门禁控制.即使我现在的公司也在使用他们 :)

前不久,我看”Hack A Day“,我看到有人做到一个惊人的项目.一个装着键盘的射频识别卡.之后几天,我无法再脑子里想象出这个卡的具体形象.这让我非常想自己制作一个欺骗的射频卡.原作者没有公布源代码,但是他们给我留下了足够多的线索.
所以,按照惯例.我自己搭建硬件读卡器,这样我可以从卡里读到数据,并制作自己版本的万能射频识别卡.

我做的射频卡(钥匙)成功的打开我的车库门,以及在我办公室的门!

为了让更多的人认识到射频识别系统设计的固有缺陷,我决定发表这篇文章.并允许人们自己制作万能射频卡.
这卡能让你进入任何一扇射频卡读卡进入的门?是的,假设一下两点都正确:

1)必须使用的125kHz RFID标签,我设计了这个项目使用了这个标准.并且,
2)你能够获得对标签背面的数字, 有了这个数字,你可以简单地把它输入到万能射频卡中,它会仿真这个标签.
那么,开始把.希望你喜欢这个项目.-记住:能力越大,责任越大.(译:貌似就是这样说超人滴.)


第一步:射频识别卡是怎么运作的?
射频识别,即无线电频率识别.是一种描述允许使用电子”标签”而无需电线储存传输数据的标准的术语.共同使用一种标准的编码格式频率的号码.我用的是较常用于门禁的是125kHz的标准.

125 KHz的RFID标签通常是用一个名片大小的一块塑料或圆盘包裹的.该标签由一个线圈连接到一个小芯片.当标签靠近读卡器,读卡器的能量由电感耦合到芯片里的标签.

从读卡器发出的能量有两种用途:首先,它给卡提供运行所需的电能.其次,他提供了一个数据传输的媒介.当通电时,标记位调节模式程序,得到一个信号,即读卡器可以检测标签.然后读卡器读取该位数据,并传递到门控制器.如果该位数据符合某个已授权的号码,门就会打开.反之,门就不会打开.

我在玩的RFID系统中,位数据看上去像这样:

1111111110010111000000000000001111100010111110111101001111010000
下一步我将为您描述(分析)这些数据模式.

读卡器与射频卡传输数据中很有意思,数据利用了曼彻斯特编码(这是为了使数据能够在一个单一的时钟信息,确保能够很容易接收传输的编码方式)进行传输.曼彻斯特编码方式总是在高低电平之间跳变.如果你要传输一个1,将是从低到高电平的变化(上升沿触发);如果你想发送一个0,就是从高到低电平的变化(下降沿触发).

实际有效数据传输的线圈短路了卡 – 适用于额外的负载在读卡器,变送器可以检测到它.


第二步:卡上存着什么?
我开始于建立一个RFID读卡器(在以后的文章会有更多详情).它可以显示卡当时正传送和发送的信息数据.

这种RFID卡,我得到他们背面的号码.这个号码表明卡内存储的什么数据.
这卡上有印着 0007820706 119,21922 而它发送的信息是:
111111111_0010111000000000000001111011110101001010101000010101100
第一组111111111开始序列 – 它是用来告诉读卡器,一个代码来了 – 读卡器也使用顺序锁定卡的数据。
存储的数据传输按的4位一组,在每个组的结尾是校验位的标准.
这些数据可以如下分组:
00101|11000|00000|00000|01111|01111|01010|01010|10100|00101|0110 |0 |
__2__|__C__| __0__|__0__|__7__|__7__|__7__|__5__|__A__|__2__|和校验|停止位|

这个代码是 2c 0077 55a2,如果我们把这组代码分成三部分,那么我们得到:
“2C”,”0077″(十进制119)和”55A2″(十进制21922).这就相当于119,21922.
2C是一个常数代码与所有发送的牌。它只是这个RFID系统标识符.

“校验”与”和校验”如何运作的?
一组数据的最后一部分即该卡是一种传输校验字,这是用来确保所有数据已成功接收.
首先,每组数据最后的奇偶位,即确保每位是偶位,例如2 =0010,其中1的个数是奇数(1)个,所以在后面加上个”1″,用来确保1的个数为偶数个.
再如:C=1100,其中1的个数是2个,已经是偶数个了,所以后面加个”0″.

00101 2
11000 C
00000 0
00000 0
01111 7
01111 7
01010 5
01010 5
10100 A
00101 2
2554—-”1″的个数
0110 和校验(加起来1的个数) + 0 停止位.

最后,”和校验”即使每个垂直位的1的个数进行奇偶检验.这样,每一个有水平和垂直位发送数据 – 一切都是有序的,否则读卡器将拒绝传输.

当我为我的工作解码Prox卡的数据,它遵循了类似的序列在这里,但(由于显而易见的原因),我没有实际公布的数字.同样,序列的一部分是设备代码,以及其他持相同的序列号是在卡的背面.


第三步:怎样仿真一张卡
那么,下一步是确定如何仿真一张卡 – 我需要的一张卡.我可以在其中输入卡号,所以必须有一个微处理器,以及用来输入数据的小键盘.

ATMega使用整流桥的125kHz射频场. 当微输出为低,中桥,二极管允许被打开的,在线圈中产生电流,这将有效地短出来.读卡器检测的额外负荷,并检测到一个位跳变.

原理图在这里(译注:如果下载不了,请到源地址,注_册后方可下载)

第四步:软件 -输入数据到我卡中
下一步就是软件了,使用的是Arduino IDE(集成开发环境).我实现了一个简单的菜单系统,他让我直接从键盘输入有关设置和CardID数据.在我的板上,还提供了显示数据使用的LED.

我碰到一个问题,是在我计算卡上的数据(校验和校验和) – 要读取成功,该卡在实时(大多数读卡器需要一个有效的数字顺序读取)输出数据,加入子程序和计算延迟所造成的无效数据卡输出至于读卡器响应。我的工作来解决这个问题的位填充数组被发送时,在发送更多的是卡。这样,完成一次计算。

当卡上电,它等待着被压的’模式’按钮。当前模式号码会显示使用了4个LED集。上的每个’模式’按钮增量按当前的模式。一旦正确的模式显示,那么’进入’的功能键开始执行。

模式1 – 进入低功耗(睡眠)模式
该卡进入低功耗模式,等待按下复位按钮被重新唤醒它.

模式2 – 输入一个十六进制功能的ID
该卡等待2个数字输入标志着该系统的设备代码(在这种情况下,它是2C型) – 该软件默认为2C型 – 因此这并不需要输入。

模式3 – 十进制卡号
该卡等待8个数字输入标志着该卡卡号仿真(在这种情况下,它是07820706) – 这是一个漫长的人数在卡的背面,而不是119,21922号打印出来。

模式4 – 转储设备和卡的ID
设施和卡ID为十六进制使用倾倒在卡上方的4个LED数字。

模式5 – 仿真(模拟)卡
该卡进入仿真模式 – 所有指示灯关闭。仿真模式只能退出按复位按钮。

该软件依赖于马克士丹利和亚历山大布雷维格的键盘库( Mark Stanley’s and Alexander Brevig’s Keypad Library )

http://www.arduino.cc/playground/Code/Keypad

代码

第5步:蚀刻电路板
根据标准,我用杂志纸墨粉转移到蚀刻电路板。如果你想看到的细节,看看这里。

印刷电路板的蚀刻有其边缘清理了一下使用的文件,并为IC洞钻腿。

附件是PDF文件,我用的是墨粉传输(?热转印)。

附件1: 打孔/丝印层(PDF)
附件2:PCB布线图(PDF)

第六步:安装各组件
为了使项目作为一个正常的Prox卡相同大小,我决定做一个小的PCB,与一个名片一样大小.

我决定使用从易趣买的表面贴装按钮,这意味着所有的组件必须到PCB的铜面,使按钮安装焊接标记.

我开始通过焊接的按钮,然后我安装上发光二极管,电阻器和电容器。我必须安装在PCB的底部16MHz的晶体,因为我没有表面贴装晶体。我也安装在卡上的连接键列一起12个跳线.

LED?

下一步安装ATMega168.我没有使用IC插座,因为我想减少电路板的厚度.(译:我们可以用IC插座)

接下来,制作线圈 – 我用废木材片,与4个螺丝固定在上面,并计算100 0.25毫米直径的绕组线线圈的匝数。在我除去了线圈的基座,我结束在每个边缘的透明胶带少量确保线圈没有放松。


然后,我把线圈和一个小电池盒安装在PCB的背面.

我的手艺让我接受,结果也相当满意.


第七步:给单片机编制程序
我用了一个标准的6针接头安装在PCB上,让一个5V的FTDI的USB – 232电缆将用于方案的芯片在原址 – 这是特别重要,因为的ATMega芯片直接焊接在印刷电路板,所以它couldn ‘T是移除插入到一个正常的Arduino的PCB,这是一个很小的代价拥有一个漂亮的小型项目。

该芯片编程使用PDE ,Arduino那是在第4步提供 – 使用正常的Arduino IDE中。

.PDE文件,我是专门提供廉价物品的标准RFID系统。这不是对其他IFID读者版本,我访问过….. (我只是想我要提及:-))

第八步:调试
调试是一件很简单的事 – 我把相关代码输入键盘,刷卡对读卡器响应,并返回一个令人满意的”滴”提示音,表示读取成功.

在我所接触的其他读者的测试只是作为奖励,取得了无限的geek 点.

图片弄不过来,不知道怎么弄想了解的去看上面的网址吧

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2011-5-24 16:16:44 | 显示全部楼层
要是能做m1 的仿真就好了

出0入0汤圆

发表于 2011-5-24 17:48:22 | 显示全部楼层
jh

出0入0汤圆

发表于 2011-6-18 21:04:47 | 显示全部楼层
我现在已经可以模拟任意的4001卡片的号码
现在我想用在我的工作中,将它用来代替我们原先用的昂贵的固定条码。

出0入0汤圆

发表于 2011-6-18 21:17:06 | 显示全部楼层
这个系统如何去获得目标卡背后的卡号是个问题~如果我不印刷这个卡号岂不是没办法了?

出0入0汤圆

发表于 2011-7-10 02:53:38 | 显示全部楼层
哈哈,做一个即可以读卡也可以模拟卡的设备,有一个按钮,按下去的时候就读卡并把卡号存储起来,放开按钮就模拟卡片。

把读卡距离做远一点。

看到谁身上带有卡,按着按钮靠近他(她)就可以复制卡了,然后就……

出0入4汤圆

发表于 2011-7-10 09:18:57 | 显示全部楼层
Mark

出0入0汤圆

发表于 2011-7-10 09:57:21 | 显示全部楼层
Mark

出0入0汤圆

发表于 2011-7-12 21:01:01 | 显示全部楼层
Mark RFID..............

出0入0汤圆

发表于 2011-7-30 16:09:42 | 显示全部楼层
网络地址有问题啊

出0入0汤圆

发表于 2011-7-30 17:33:42 | 显示全部楼层
我做过一个可以读卡,写卡和仿卡的三合一板,实现起来不难,主要是硬件

出0入0汤圆

发表于 2011-7-30 18:45:41 | 显示全部楼层
电脑里的东西

点击此处下载 ourdev_662308G7MIHY.pdf(文件大小:27K) (原文件名:射频卡__MCU_原理图.pdf)
点击此处下载 ourdev_662309QYJ0D4.pdf(文件大小:26K) (原文件名:射频卡__电源_原理图.pdf)
点击此处下载 ourdev_662310V8ALPA.pdf(文件大小:15K) (原文件名:射频卡__读卡器_原理图.pdf)

出0入0汤圆

发表于 2011-9-11 12:43:17 | 显示全部楼层
这个很有意思啊.

出0入0汤圆

发表于 2011-9-15 18:00:52 | 显示全部楼层
回复【楼主位】zyw19987
-----------------------------------------------------------------------

mark

出0入0汤圆

发表于 2011-9-15 20:39:46 | 显示全部楼层
哈哈   挺好玩的  讨厌公司的指纹机

出0入0汤圆

发表于 2011-9-15 22:52:20 | 显示全部楼层
嘿嘿,有趣。

出0入0汤圆

发表于 2011-9-16 00:06:38 | 显示全部楼层
ID卡阿

出0入0汤圆

发表于 2011-9-16 07:22:35 | 显示全部楼层
好玩。。mark

出0入0汤圆

发表于 2011-9-16 08:34:36 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-16 08:49:50 | 显示全部楼层
射频卡  MARK!

出0入0汤圆

发表于 2011-9-16 08:54:27 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-19 20:46:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-19 21:50:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-19 23:06:43 | 显示全部楼层
学习下

出0入0汤圆

发表于 2011-9-20 22:08:33 | 显示全部楼层
好东西啊!

出0入0汤圆

发表于 2011-9-20 22:34:31 | 显示全部楼层
学习了

出0入0汤圆

发表于 2011-9-22 18:00:42 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2011-10-10 13:59:06 | 显示全部楼层
http://www.ourdev.cn/bbs/bbs_content_all.jsp?bbs_sn=1426252
坛子里老陈大哥的一个帖子,我不知道他读出来的数据怎么会是那样的,卡上写着:0013434161  204,64817老陈大哥液晶上直接显示出“0013434161”不会是忽悠人吧(对老陈大哥为人并不怀疑)!呵呵怎么跟上面解释的不一样呢?:"这卡上有印着 0007820706 119,21922 而它发送的信息是:
111111111_0010111000000000000001111011110101001010101000010101100
第一组111111111开始序列 – 它是用来告诉读卡器,一个代码来了 – 读卡器也使用顺序锁定卡的数据。
存储的数据传输按的4位一组,在每个组的结尾是校验位的标准.
这些数据可以如下分组:
00101|11000|00000|00000|01111|01111|01010|01010|10100|00101|0110 |0 |
__2__|__C__| __0__|__0__|__7__|__7__|__7__|__5__|__A__|__2__|和校验|停止位|

这个代码是 2c 0077 55a2,如果我们把这组代码分成三部分,那么我们得到:
“2C”,”0077″(十进制119)和”55A2″(十进制21922).这就相当于119,21922.
2C是一个常数代码与所有发送的牌。它只是这个RFID系统标识符."

出0入0汤圆

 楼主| 发表于 2011-10-10 14:07:50 | 显示全部楼层
回复【6楼】aleyn 煮茶村长
-----------------------------------------------------------------------

能把村长请进来真是荣幸啊!好想在做村长的那块超级开发板呢!http://www.ourdev.cn/bbs/bbs_content_all.jsp?bbs_sn=645608

出0入0汤圆

发表于 2011-10-10 15:43:43 | 显示全部楼层
mark....

出0入0汤圆

发表于 2011-10-10 17:48:58 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-11 07:54:57 | 显示全部楼层
Mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 10:29

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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