wxws 发表于 2009-7-4 16:28:16

RFID 复制成功 有图 有主要程序 求COOL

为了不想交给 物业的非法的不合情理的,入门卡收费(30 元),
就想自己仿一张ID卡,由于没做过相关应用,在淘宝上查了一大堆,知道有专用的复制机出售,价格从200-1000都有,
用的卡是5557卡,后来请教大家,并查阅了相关资料,大致明白了原理,就想自己动手做复制机了。

从淘宝上买了:
2个2770的读卡模块(不带解码MCU):20*2=40元
2个线圈:3*2=6元
普通ID卡(研究学习编码用):5*2=10元
5张5557卡:5*5=25
加上邮费,一共100不到。

再花了三个晚上,终于完成了复制机。
是不是有点傻呀,哈。

不过学到了不少东西:
1:曼彻斯特_码 解码
2:基站芯片应用
3:5557卡读写与设置
有空再将东西贴出来,要喝酒去了。

autodash 发表于 2009-7-4 19:47:55

mark,坐等LZ上资料。

kyughanum 发表于 2009-7-4 20:08:03

LZ我也有几片2770~~把资料贴出来我看看啊

Longsword 发表于 2009-7-4 20:09:31

Mark too. Must be a terrific job!

wxws 发表于 2009-7-5 09:47:05

大部分相关知识都在:
http://www.ouravr.com/bbs/bbs_content_all.jsp?bbs_sn=666255
原创:用Mega32通过U2270B读取H4001RFID卡号的范例


首先,第一步 要做的是4100卡的波形分析与解码,读卡电路原贴就有,分立的,2270,4095都能用,都支持读写

4100卡的输出波形看这儿:我都用分隔线做出来标注:

http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_458531.jpg
(原文件名:卡波形.jpg)

解码思路在原贴24楼,不过有点错误,这是我整理后的:

曼彻斯特_码解码方法
  根据曼彻斯特_码的特点,得知曼彻斯特_码中高电平持续的时间有两种情况:半个位周期和一个位周期。高电平持续一个位周期的情况是因为其中前面半个位周期高电平属于前一位逻辑“0”所有,后半个位周期高电平是属于后一位逻辑“1”所有。

根据这个特点,我们分析图示的波形,
首先找一个下跳,然后找一个上跳,目的是确认是否接收到信号(曼彻斯特_码)而后进入一个延时阶段t(延时t大于半个位周期,小于一个位周期)。接着读入信号,它必须是“1”。 《也就是找01 (卡的最后位是0,头是1)》

那么这个“1”就肯定是数据序列中某一位(如果不是“1”,就从头再来)。

接下来就是找该位“1”的下跳,找到之后又延时t,继续读入下一位数据。
如果找到的是"0",则找上跳,再延时t,继续读入下一位

wxws 发表于 2009-7-5 09:59:06

这是解码程序,结果放在
unsigned long Id={0,0};    //存放ID内码 共64 BIT
没有做检验,因为最终目标是复制用,所以所有数据全部读进来共64BIT,包括前面那9个1。
我都是用ARDUINO平台做开发,但都大同小异,改下就通用。
由于2270芯片,没卡时也会一直有杂波,所以正好下面的函数不需要做错误退出延时处理了,
如果没有杂波,那就说明读卡电路不正常,哈哈。
程序经过逻辑分析仪分析,速度一流,载波使能后第一个完整周期就能够正确捕获。
也就是说,平时将2270的CFE置0,要读卡时再置1,再调用该函数就行。
商业的好象半秒读一次。这样省电。

#define Manchester_IN (PIND&(1<<PD2))   //曼彻斯特_码输入端
#define DELAYVALUE 350   //RF64 一个位=512us * 0.75 不用很严格,大于半个周期,小于一个周期就行。
                           //跟实际的读卡器的125K载波精确度相关,也与卡本身相关
unsigned long Id={0,0};    //存放ID内码 共64 BIT


int ReadAllCode(unsigned long iid[]){    //读所有数据 读到正确号 返回1
    int k,i,j;

    for(k=0;k<200;k++){    //找01 找200次,不能小于100,再大无意义
      
      while(Manchester_IN);   //找下降
      
      while(!Manchester_IN);    //找上升

      delayMicroseconds(DELAYVALUE);    //等 T
            //digitalWrite(TPin, HIGH);
            //digitalWrite(TPin, LOW);
      if(Manchester_IN){   //是否找到01
            //Serial.println("Found 01");
               // digitalWrite(TPin, HIGH);
               // digitalWrite(TPin, LOW);
            for(i=0;i<8;i++){    //再找8次1
                while(Manchester_IN);   //找下降
                delayMicroseconds(DELAYVALUE);    //等 T
                //digitalWrite(7, HIGH);
                //digitalWrite(7, LOW);
                if(!Manchester_IN)   //不是1就重找01
                  break;   
            };
            if(i==8)
                break;   //退出01循环,解数据体
      };
      
    }
    if(k>=200)         //未找到01与9个1
      return 0;
    //以上找数据头
   
      
    digitalWrite(TPin, HIGH); //测试用,这样用逻辑分析仪就能看到我的程序运行到哪儿了,找到了什么波形 分析起来很方便。
   
    //以下为读真正的数据共64-9=55bit
    //9个1
    iid=0x1ff;    //9个1
    iid=0x0;
   
    while(Manchester_IN);   //找下降
    for(i=0;i<2;i++) {   //共找2 长整型(32bit)实际是找 55 bit
      for( j=0;j<32;j++){    //找32位
            if((i==0) && (j==23)) //第一位只要读23位,前面是9个1
               break ;
               
            delayMicroseconds(DELAYVALUE);    //等 T
            iid<<=1;            
            if(Manchester_IN) {//是1
                iid|=1;
                while(Manchester_IN);    //等下降
            }else{               //是0
                while(!Manchester_IN);   //等上升   
            };   

      };
      //digitalWrite(7, HIGH);
      //digitalWrite(7, LOW);
    } ;

    //delayMicroseconds(5);
    digitalWrite(TPin, LOW);      
   
    return 1;
   
   
}//ReadAllCode()

wxws 发表于 2009-7-5 10:04:37

最新最可悲的消息:我们小区入口居然用的是IC卡,操,白费力了。找了朋友的卡来读,结果没成功。

不过这东西,已经能做为一个产品了,呵,复制机,淘宝上有人卖
http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_458535.jpg
这款TB上卖300左右 (原文件名:COPY-1.jpg)

http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_458536.jpg
这个卖500 (原文件名:COPY-2.jpg)

flyingfish 发表于 2009-7-5 10:04:38

一上网就碰上这么个高人,赞!

wxws 发表于 2009-7-5 10:40:54

再继续:
5557卡与写卡功能:
125K载波的芯片,都是用控制输出载波波形来写卡的。也就是说电路通用。
2270芯片就控制6号脚CFE(载波使能),具体看我附件的手册,里头要注意的地方,我已经做了标注:
中文ourdev_458537.pdf(文件大小:1.46M) (原文件名:T5557-中.pdf)
英文ourdev_458538.pdf(文件大小:720K) (原文件名:T5557-0603.pdf)

http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_458554.jpg
写卡波形 (原文件名:写卡波形.jpg)


这儿再要强调一下使用逻辑分析仪的方便哟,如果没有,这个小项目是不可能完成的。
我买的是周立功的LA1016,花了980,真希望哪位DX再搞个开源的出来玩玩。

bigworms 发表于 2009-7-5 10:45:14

mark

wxws 发表于 2009-7-5 10:50:51

要使5557卡能模拟标准ID卡,就得对5557进行配置:

具体看楼上
1:使能自动回复数据:AOR=0
2:最大数据块=2, 32bit * 2=64 bit
3: 数据回复速度: RF64
4:取消ST间隔符

http://cache.amobbs.com/bbs_upload782111/files_16/ourdev_458563.jpg
配置字 (原文件名:配置字.jpg)

这儿要提一下RF速度的概念,一开始我也没明白(可能就我没明白吧./emotion/em004.gif)
Rf速率说明:
RF/32 指一个位周期包含有32个调制载波信号。
如:125K调制时,一个调制信号周期为8us,
Rf32位时间=8*32=256us
Rf64位时间=8*64=512us

也就是说RF/32 RF/64 这个值越大,数据就越宽,相应的速度就变慢了。

wxws 发表于 2009-7-5 10:54:39

这儿的时序相当重要,不然有些卡能写,有些不能写。


//这个配置全能写
#define    Start_Gap 200    //起始350
#define    GapS    150      //间隔 300
#define    Bit_One    350    //数据1400ok
#define    Bit_Zero    100    //数据0 100 140ok

#define E5557_Config0x00148040//5557配置字
#define E5557_Default 0x000880E8//5557缺省配置字
#define U2270_CFE 19      //2270 第6脚 载波使能

////////////////////////////////////
//E5557 写卡相关
//
////////////////////////////////////
void Contrl_RF(int state,int dtime){    //控制载波时长开/关,us

    digitalWrite(U2270_CFE, state);   //切换至相关状态
    delayMicroseconds(dtime);      //延时
   
}

void Standard_Write(unsigned char Block,unsigned long W_Data){   
    //标准写5557卡 :块地址要写的数据32bit
    unsigned long Tbit;
    int i;
    //10 操作码
    //L    锁定码
    //32个数据位 1-32
    //3位 块地址   2-0
   
    //delay(6);    //POR 启动延时6MS
    digitalWrite(U2270_CFE, HIGH);
    delay(5);    //POR 启动延时5MS      //5
   
    Contrl_RF(0,Start_Gap);
   
    //10 对0页操作码
    Contrl_RF(1,Bit_One);    //1
    Contrl_RF(0,GapS);
    Contrl_RF(1,Bit_Zero);    //0
    Contrl_RF(0,GapS);

    //块锁信号 0:不锁
    Contrl_RF(1,Bit_Zero);    //0
    Contrl_RF(0,GapS);
   
    //数据 共32bit 数据
    Tbit=0x80000000;    //1000 0000 0000 0000 0000 0000 0000 0000
      
    for(i=0;i<32;i++){   
      if(W_Data & Tbit){
            Contrl_RF(1,Bit_One);    //1
      } else {
            Contrl_RF(1,Bit_Zero);    //0
      };
      Contrl_RF(0,GapS);   //数据间隔
      Tbit>>=1;    //右移一位,测下一个bit
    };
   
   
    //块地址
    Tbit=0x4;//100
    for(i=0;i<3;i++){
            if(Block & Tbit){
                Contrl_RF(1,Bit_One);    //1
            } else {
                Contrl_RF(1,Bit_Zero);    //0
            };
            Contrl_RF(0,GapS);   
            Tbit>>=1;    //右移一位,测下一个bit
      };
      
    //    给卡一个编程的时间
    //Contrl_RF(1,6000);    //延时6MS
    digitalWrite(U2270_CFE, 1);
    delay(7);      //10
    digitalWrite(U2270_CFE, 0);

}

wxws 发表于 2009-7-5 11:32:30

顺便再提一下我用的开发板

我用的是ARDUINO,16M晶振,168芯片
做产品,就用M8,不用改任何东西,重新编译一下就行了。
普通AVR板子,也应该能改成ARDUINO平台的,烧个BOOTLOAD就行了。

常用功能都做了封装,不用跟寄存器打交道,编程速度极快。上手也极快。
我是一个懒人,不想去记寄存器,呵。我想大家开发一个程序,只要一个编程思路就行了,
将精力放在寄存器上,是不应该的,当然你想当骨灰级的芯片专家就不是这个思路了。
我是极力推荐大家使用的,这么多种类的单片机,我的宗指是哪个方便用哪个,这个方便
有电路,也包括上位机软件。AVR除了EEPROM给我搞了点麻烦事,其他都挺好,能够满足我的应用。

www.arduino.cc

我还建了个QQ群40491285
可以交流下。

newbier 发表于 2009-7-5 11:35:53

现在流行IC卡的,支持楼主搞这个吧

kugel 发表于 2009-7-5 11:42:56

mark

af00 发表于 2009-7-5 11:55:28

有现成卖的

af00 发表于 2009-7-5 11:55:49

有现成卖的

hkap 发表于 2009-7-5 13:44:35

现在都流行MIFARE IC卡,ID卡大部分用于低档场合下

ndust 发表于 2009-7-5 14:24:03

jh

wxws 发表于 2009-7-5 16:34:32

一步步来,本来我都没接触过这方面的编程,短短几天能搞定,已经很高兴了。
虽然没有用上。

wxws 发表于 2009-7-5 23:59:57

再继续下一个小项目,RFID嗅探器,还是基于相同硬件。
因为我发现2270芯片,CFE关闭时,他的接收放大电路还是工作的,那么,相同硬件,只要将CFE关闭,那么将读头放在其他读卡器附近,就可以学习到其他卡片的信号了。

再有一个应用,由单片机直接仿真ID卡,好象也很简单哟,跟写卡程序相似,时序改一下就OK了。


感觉越走越危险了。。。。

dwrszgq 发表于 2009-11-16 10:17:29

我是做ID/IC卡设备开发的,希望多多交流学习!

html110 发表于 2009-11-16 21:05:09

mark一下

wawq2003 发表于 2009-11-16 22:04:23

mark一下,以备后续学习

clever0725 发表于 2009-11-16 22:32:27

hao

hollypower 发表于 2009-11-17 16:22:25

需要马克

icer1 发表于 2009-11-17 16:25:58

马克

maomao2126 发表于 2009-11-17 18:20:03

mark

yermin 发表于 2009-11-17 18:25:45

COOL

qiuhuawei 发表于 2009-11-17 18:31:15

记号

kele2009 发表于 2009-11-17 18:34:43

mark

shangxf 发表于 2009-11-17 18:35:58

不错看看

wangguanfu 发表于 2009-11-17 19:05:53

NB,帮顶

lileistone 发表于 2009-11-17 19:51:15

汗……楼主为了省30元,结果花了100多……还搭进去这么多功夫
学到东西倒是挺好,旁门左道还是慎重点

yunlong 发表于 2009-11-17 23:32:33

请教一下各位前辈(菜鸟学习啊)
我见过几种卡,都是封装在塑料卡片里面的,如果知道它用的是那种芯片呢?
拆开卡片看到的也不过是一小坨黑糕而已。

lv998127 发表于 2009-11-18 08:35:17

备份!

Forever 发表于 2009-12-15 09:18:17

牛人啊

skyxjh 发表于 2010-2-9 20:32:38

MARK

iscott 发表于 2010-2-9 21:34:37

我这用的HID的卡,楼主能搞掂吗

ottife 发表于 2010-2-9 22:35:59

mmmk

motion_ctrl 发表于 2010-2-9 23:06:46

mark

ccve365 发表于 2010-2-9 23:10:10

牛人啊
90%以上的门禁都是用ID卡,因为便宜啊

dzyong 发表于 2010-2-9 23:22:49

请勿非法使用~~~~

tmlee 发表于 2010-2-9 23:27:06

MARK

huntermax110 发表于 2010-2-10 09:33:36

回复【12楼】wxws
顺便再提一下我用的开发板
我用的是ARDUINO,16M晶振,168芯片
做产品,就用M8,不用改任何东西,重新编译一下就行了。
普通AVR板子,也应该能改成ARDUINO平台的,烧个BOOTLOAD就行了。
常用功能都做了封装,不用跟寄存器打交道,编程速度极快。上手也极快。
我是一个懒人,不想去记寄存器,呵。我想大家开发一个程序,只要一个编程思路就行了,
将精力放在寄存器上,是不应该的,当然你想当骨灰级的芯片专家就不是这个思路了。
我是极力推荐大家使用的,这么多种类的单片机,我的宗指是哪个方便用哪个,这个方便
有电路,也包括上位机软件。AVR除了EEPROM给我搞了点麻烦事,其他都挺好,能够满足我的应用。
www.arduino.cc
我还建了个QQ群40491285
可以交流下。

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

赞同

clever0725 发表于 2010-2-10 11:23:04

留着有空弄

cqsrmxxzyx 发表于 2010-2-10 13:15:03

邪恶地想到了学校的饭卡。。。

zpyws 发表于 2010-2-11 12:07:48

马克完后可以看吧

zpyws 发表于 2010-2-11 12:13:24

回复【楼主位】wxws
-----------------------------------------------------------------------

可以给出那个淘宝店铺的链接吗,我想做一个复制卡的机子玩玩,是不是只要买一个2270读卡模块,一个线圈,和几张5557卡就可以???

pygh 发表于 2010-2-11 12:32:35

MARK

hkap 发表于 2010-2-11 13:28:12

不错的资料,参考参考

zpyws 发表于 2010-2-11 15:09:05

对那个单片机仿真卡片极有兴趣,我之前也曾有这个计划,楼主做得如何了

chenerbox 发表于 2010-2-12 08:09:31

这个也能复制,记号

skyxjh 发表于 2010-2-17 00:40:26

再顶一次!

brightsm 发表于 2010-2-17 11:20:50

标记 一下

wwwavr 发表于 2010-2-17 11:36:11

mark

sonic5566 发表于 2010-2-17 12:02:11

mark

joni 发表于 2010-2-17 15:49:59

mark

ju748 发表于 2010-2-17 20:29:15

mark

hd12 发表于 2010-2-17 21:25:53

不得已用mark

pegg 发表于 2010-2-17 22:45:14

mark

pb486 发表于 2010-2-18 00:09:53

看看

fy024 发表于 2010-2-18 22:05:16

mark

alan8918 发表于 2010-2-18 22:31:48

mark

s3c44b0 发表于 2010-2-18 22:55:10

mark

relotus 发表于 2010-2-21 12:31:17

mark

lions 发表于 2010-2-21 12:41:11

hao

1181zjf 发表于 2010-2-21 13:08:10

ding

hclcwx 发表于 2010-2-21 13:10:28

ding

sunzhaod 发表于 2010-2-21 13:10:46

mark

oldfish01234 发表于 2010-2-21 15:14:52

Mark

axiaozi009 发表于 2010-2-21 16:38:46

mark

yaya001 发表于 2010-2-21 20:24:50

mark

wxws 发表于 2010-2-21 21:24:33

呵呵,这几天 怎么这个多人对这个感兴趣了呀?
单位全换电子锁了?

Ideal-007 发表于 2010-2-21 22:12:57

mark,
谢谢!

smartzou 发表于 2010-2-22 12:47:27

mark 嘿嘿

sdmcu51 发表于 2010-2-23 09:41:33

mark

crose0106 发表于 2010-2-23 16:09:32

Mark

minipc5 发表于 2010-3-3 05:08:20

mark

smhh 发表于 2010-3-12 12:30:42

mark

howmoney 发表于 2010-3-12 13:15:03

记号

cshx1986 发表于 2010-3-12 14:09:59

mark,坐等LZ上资料。

moon0213 发表于 2010-3-12 23:56:56

mark

jack_yu 发表于 2010-3-13 09:18:48

长知识了。谢谢楼主!!!

liangyurongde 发表于 2010-3-13 11:46:10

mark

linfeng286 发表于 2010-3-13 13:42:34

mark

hongyancl 发表于 2010-3-13 14:26:49

dddddddddddd

qiushui 发表于 2010-3-23 16:03:19

读写T5557卡,有高人用51MCU加三个三极管,一个运放和几个电阻电容组成. 现在酒店的感应卡锁绝大部分都用的T5557卡, 据我了解, 都没用U2270B模块, 极大的降低了成本.

sanluli 发表于 2010-3-23 16:21:07

mark

yishi10 发表于 2010-3-24 08:40:55

cool

renmin 发表于 2010-3-28 15:56:51

太牛啦,高手就是高手

mcu_lover 发表于 2010-3-28 16:15:22

学习

tick 发表于 2010-3-28 16:41:47

支持+ mark

liurangzhou 发表于 2010-3-29 10:11:28

mark

czxf 发表于 2010-3-29 12:02:59

marj

XUEPENGBIN 发表于 2010-3-31 13:51:11

谢谢楼主!刚好公司要用!先标记一下!

thinki 发表于 2010-4-1 16:03:10

mark

lang 发表于 2010-4-8 09:09:31

看看这些好东西,也想到了我们08年搞的一个东西,也是用来"复制"ID卡用的,不过在其上可以任意设置ID号码,也无须外接电源,与ID卡比较起来就是厚点
见图:
http://cache.amobbs.com/bbs_upload782111/files_28/ourdev_544408.JPG
(原文件名:ID card.JPG)

hjk3344547 发表于 2010-4-8 09:33:35

用过RC500的

fy024 发表于 2010-4-8 09:48:57

mark
页: [1] 2 3 4
查看完整版本: RFID 复制成功 有图 有主要程序 求COOL