赞
踩
1、通讯格式
数据包长度 L(1byte) + 命令字 C(1byte) + 数据包 D(L-1bytes)
2、通讯方向
-> 下位机送给上位机
<- 上位机送给下位机
3、扇区划分
- 扇区0 块0 块1 块2 块3
- 扇区1 块4 块5 块6 块7
- 扇区2 块8 块9 块10 块11
- 扇区3 块12 块13 块14 块15
- 扇区4 块16 块17 块18 块19
- 扇区5 块20 块21 块22 块23
- 扇区6 块24 块25 块26 块27
- 扇区7 块28 块29 块30 块31
- 扇区8 块32 块33 块34 块35
- 扇区9 块36 块37 块38 块39
- 扇区10 块40 块41 块42 块43
- 扇区11 块44 块45 块46 块47
- 扇区12 块48 块49 块50 块51
- 扇区13 块52 块53 块54 块55
- 扇区14 块56 块57 块58 块59
- 扇区15 块60 块61 块62 块63
4、IC 卡读写器数据包
1) 寻卡
- <- 02 02 26 ( 02 为命令字,26 为 RegMfOutSelect )
- -> 03 00 04 00 ( 00 为命令成功代码,04 表示 Mifare One 卡 )
- <- 02 0B 0F
- -> 01 00
2) 防冲突
- <- 01 03 ( 03 为命令字 )
- -> 05 00 52 00 75 7A ( 52 00 75 7A 为卡号 CardSerialNo )
- <- 02 0B 0F
- -> 01 00
3) 选择
- <- 01 04 ( 04 为命令字)
- -> 03 00 80 00
- <- 02 0B 0F
- -> 01 00
4) 终止
- <- 01 01 ( 01 为命令字)
- -> 01 00
- <- 02 0B 0F
- -> 01 00
5) 参数设置
- <- 01 0C ( 0C 为命令字 )
- -> 01 00
6) 密码下载 ( 扇区 1 密码为 12 个 F )
- <- 09 06 60 01 FF FF FF FF FF FF (06为命令字,60为PICC_AUTHENT1A(61为PICC_AUTHENT1B),01为扇区号,12个F为密码)
- -> 01 00
- <- 02 0B 0F
- -> 01 00
7) 数据读(扇区1块0块1块2)
- <- 02 02 52 ( 02 为命令字,52 为 PICC_REQALL )
- -> 03 00 04 00 ( 04 为 RegFIFOLength )
- <- 01 03 ( 03 为命令字 )
- -> 05 00 52 00 75 7A ( 52 00 75 7A 为卡号 )
- <- 01 04 ( 04 为命令字 )
- -> 03 00 08 00
- <- 04 05 60 01 04 (05为命令字,60为PICC_AUTHENT1A(61为PICC_AUTHENT1B),01为扇区1,04为RegFIFOLength)
- -> 01 00
- <- 02 08 04 ( 08 为命令号, 04 为块号 )
- -> 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (16个00为数据)
- <- 02 08 05 ( 08为命令号, 05 为块号 )
- -> 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (16个00为数据)
- <- 02 08 06 ( 08 为命令号, 06 为块号 )
- -> 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (16个00为数据)
- <- 02 08 07 ( 08 为命令号, 07 为块号 )
- -> 11 00 00 00 00 00 00 00 ff 07 80 69 ff ff ff ff ff ff (第一个00为返回代码,后面6个00为密码A,ff 07 80 69为控制位,后面6个ff为密码B)
- <- 02 0B 0F
- -> 01 00
8) 数据写(扇区1块0块1块2)
- <- 12 09 04 12 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ( 09 为命令字, 04 为块号, 12 开始的 16 个字节为要写的数据 )
- -> 01 00
- <- 02 0B 0F
- -> 01 00
- <- 12 09 05 45 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ( 09 为命令字, 05 为块号, 45 开始的 16 个字节为要写的数据 )
- -> 01 00
- <- 02 0B 0F
- -> 01 00
- <- 12 09 06 78 90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ( 09 为命令字, 06 为块号, 78 开始的 16 个字节为要写的数据 )
- -> 01 00
- <- 02 0B 0F
- -> 01 00
- <- 12 09 07 11 11 11 11 11 11 ff 07 80 69 11 11 11 11 11 11 ( 09 为命令字, 07 为块号, 把密码 A 和密码 B 都修改成 1 )
- -> 01 00
- <- 02 0B 0F
- -> 01 00
9) 块值操作 ( 初始化 )
- <- 12 09 04 11 11 11 11 EE EE EE EE 11 11 11 11 04 FB 04 FB ( 09 为命令字, 04 为块号, 11 开始的 16 个字节为要写的数据 )
- -> 01 00
- <- 02 0B 0F
- -> 01 00
10) 块值操作 ( 读出 )
- <- 02 08 04 ( 08 为命令字, 04 为块号 )
- -> 11 00 11 11 11 11 EE EE EE EE 11 11 11 11 04 FB 04 FB ( 11 后面的 16 个自己是读出来的数据 )
- <- 02 0B 0F
- -> 01 00
11) 块值操作 ( 加值 )
- <- 08 0A C1 04 22 22 22 22 04 ( 0A 为命令字, C1 为 PICC_INCREMENT, 04 为块号, 4 个字节的 22 是要加值的数据, 04 为块号 )
- -> 01 00
- <- 02 0B 0F
- -> 01 00
-
12) 块值操作 ( 减值 )
- <- 08 0A C0 04 11 11 11 11 04 ( 0A 为命令字, C1 为 PICC_DECREMENT 为块号, 4 个字节的 11 是要减值的数据, 04 为块号 )
- -> 01 00
- <- 02 0B 0F
- -> 01 00
13) 修改密码
- <- 02 02 26 ( 02 为命令字, 26 为 RegMfOutSelect )
- -> 03 00 04 00
- <- 01 03 ( 03 为命令字 )
- -> 05 00 52 00 75 7A (52 00 75 7A为卡号)
- <- 01 04 ( 04 为命令字 )
- -> 03 00 80 00
- <- 04 05 60 01 04 ( 05 为命令字, 60 为 PICC_AUTHENT1A (61为PICC_AUTHENT1B), 01 为扇区号,04 为 RegFIFOLength )
- -> 01 00
- <- 12 09 07 33 33 33 33 33 33 ff 07 80 69 33 33 33 33 33 33 ( 09 为命令字, 07 为块号, 33 后面的 12 个字节为新密码 )
- -> 01 00
- <- 02 0B 0F
- -> 01 00
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。