📊 内码格式

ID卡和M1卡内码常见格式详解

曼彻斯特码、ABA码、维根码的转换方法与实战应用

📖

概述

ID卡和M1卡每张卡的芯片都有一个唯一的芯片内码,不同的读卡器读出来的内码号不一样,是因为卡片的内码有多种国际标准的编码规则。

💡 关键区别

曼彻斯特码为16进制,ABA码维根码均为10进制。

🏷️

一、ID卡内码常见格式

1.1 曼彻斯特内码结构

ID卡的曼彻斯特内码由三部分组成:

// ID卡曼彻斯特内码 = 版本代码 + 客户代码 + ID代码 版本代码 (H9) + 客户代码 (H8) + ID代码 (H7~H0) // 举例:12 5533FFFF 1 2 5 5 3 3 F F F F H9 H8 H7 H6 H5 H4 H3 H2 H1 H0

📌 版本代码

示例中为"1"

📌 客户代码

示例中为"2"

📌 ID代码

示例中为"5533FFFF"(8个十六进制字符)

1.2 ABA码格式

ABA码是将十六进制转换为十进制的表示方式:

ABA (8H)

ID代码(8个十六进制字符)换算为10进制

示例:5533FFFF → 1429471231(10位数字)

ABA (6H)

ID代码后6个字符换算为10进制

示例:33FFFF → 03407871(8位数字)

ABA (4H)

ID代码后4个字符换算为10进制

示例:FFFF → 65535(5位数字)

1.3 WG维根码格式

维根码是将多个十六进制位分别转换为十进制:

WG26 (2H+4H)

倒数第6、5位 + 最后4位换算为10进制

示例:33 + FFFF → 051, 65535

WG34 (4H+4H)

倒数第8、7、6、5位 + 最后4位换算为10进制

示例:5533 + FFFF → 21811, 65535

1.4 转换方法详解

什么叫WG码,什么叫ABA码?以EM卡为例:每张EM卡会有5个字节的数据,其中第一个字节为厂商资讯,基本应用的是4个字节的内容。

📊 码制转换规则
  • 4个字节的16进制值直接转换成10进制 → ABA8码
  • 后3个字节的16进制值直接转换成10进制 → ABA6码
  • 4个字节分前两后两转换,中间用分号隔开 → WG32码
  • WG32码再加两码校验码 → WG34码
  • 后3个字节分前一后二转换 → WG24码
  • WG24码再加两码校验码 → WG26码
⚠️ 重要提示

一般EM卡片上喷的码会有两个,前一个基本上为ABA码(大多数为ABA8),后一个基本上是WG码(大多数为WG26)。码数越高,重码率越低。

1.5 卡面18位内码转换

卡面上常见的18位内码转换方式:

// 18位码 = ABA(8H) + WG26(2H+4H) 1429471231 ← ABA(8H): 5533FFFF → 10进制 051, 65535 ← WG26: 33(16进制) → 051 + FFFF(16进制) → 65535 // 所以前十位可以转换成后面的八位,但后面的八位因为使用的位数有限,不能转换成前面的十位

1.6 如何从ID卡表面18位号码倒推原始UID号

10位数卡号与8位数卡号的转换关系:

// 示例数据: 10位数卡号: 0013961168 16进制: 00 D5 07 D0 8位数卡号: 213 02000 前3位: 213 (对应D5) 后5位: 02000 (对应07 D0) // 转换规则: // 10位转16进制是4个字节 // 第一个字节不要 // 第二个字节 = 8位前3位 // 第三四个字节 = 8位后5位 // Excel公式: =(MOD(X,256*256))+(MOD(INT(X/(256*256)),256)*100000)
💳

二、M1卡内码常见格式

M1卡和ID卡一样,每张卡的芯片都有一个唯一的芯片内码。

2.1 曼彻斯特码(16进制)

假设第0扇区第0块的数据为:

2A 83 15 5E E2 88 04 00 47 C1 29 D2 4D 00 06 07 前4字节 UID部分 校验位等

正码

取0扇区0块的前4个字节,按原始顺序:

正码数据: 2A 83 15 5E 合并为: 2A83155E (共8个十六进制字符)

反码

取0扇区0块的前4个字节,字节顺序反读:

反码数据: 5E 15 83 2A (5E在左,2A在右) 合并为: 5E15832A (共8个十六进制字符)
⚠️ 关键区别

反码不是"位反转",而是"字节顺序反读"。正码 2A 83 15 5E 反读后变成 5E 15 83 2A

2.2 ABA码(10进制)

正码转10进制

2A83155E (16进制)

= 0713233758 (10进制)

反码转10进制

5E15832A (16进制)

= 1578468138 (10进制)

2.3 正码反码转换示例

// 原始数据: 2A 83 15 5E E2 88 04 00 47 C1 29 D2 4D 00 06 07 // 正码(按原始顺序取前4字节): 正码数据: 2A 83 15 5E 合并为: 2A83155E // 反码(字节顺序反读): 反码数据: 5E 15 83 2A 合并为: 5E15832A // 正码转10进制: 2A83155E (16进制) = 0713233758 (10进制) // 反码转10进制: 5E15832A (16进制) = 1578468138 (10进制)

2.4 MF1卡内码格式完整对照表

原始码:9A 13 F4 65 18 08 04 00 02 36 3E 60 74 50 F2 1D

格式正码反码
8H9A13F46565F4139A
7HA13F4655F4139A
6H13F465F4139A
5H3F4654139A
4HF465139A
8H10D25849990131710494618
8H9D584999013710494618
8H8D8499901310494618
8H7D4999013494618
8H6D999013494618
8H5D9901394618
8H4D90134618
6H10D00013077490015995802
6H9D001307749015995802
6H8D0130774915995802
6H7D13077495995803
6H6D307749995804
6H5D0774995805
6H4D77495806
4H6D062565005018
4H5D6256505018
4H4D25655018
WEG24019,62565244,05018
WEG3239443,6256526100,05018
📝 18位内码格式

1710494618 244,05018 = 8H10D正码 + 空格 + WEG24

⚠️ 格式说明
  • 8H:8位十六进制,不够8位前面补0
  • 10D:10位十进制,不够10位前面补0
  • 8H10D:8位十六进制转10位十进制
  • XD:X位十进制数
✅ 正码反码说明
  • 正码:9A13F465(原始码前4字节),手机Taginfo读取为此码
  • 反码:65F4139A(原始码前4字节反读)
  • ABA码10进制:正码=2584999013,反码=1710494618

2.5 实用建议

🔢

三、进制转换参考

3.1 ASCII码表

ASCII控制字符(0-31)

DecHexOctChar说明
000000NUL空字符
101001SOH标题开始
202002STX正文开始
303003ETX正文结束
404004EOT传输结束
505005ENQ请求
606006ACK确认
707007BEL响铃
808010BS退格
909011HT水平制表
100A012LF换行
110B013VT垂直制表
120C014FF换页
130D015CR回车
140E016SO移出
150F017SI移入
1610020DLE数据链路转义
1711021DC1设备控制1
1812022DC2设备控制2
1913023DC3设备控制3
2014024DC4设备控制4
2115025NAK否定应答
2216026SYN同步空闲
2317027ETB传输块结束
2418030CAN取消
2519031EM介质结束
261A032SUB替补
271B033ESC转义
281C034FS文件分隔符
291D035GS组分隔符
301E036RS记录分隔符
311F037US单元分隔符
3220040SP空格

ASCII可打印字符(33-126)

DecHexCharDecHexCharDecHexCharDecHexChar
3321!3422"3523#3624$
3725%3826&3927'4028(
4129)422A*432B+442C,
452D-462E.472F/48300
49311503225133352344
53355543665537756388
57399583A:593B;603C<
613D=623E>633F?6440@
6541A6642B6743C6844D
6945E7046F7147G7248H
7349I744AJ754BK764CL
774DM784EN794FO8050P
8151Q8252R8353S8454T
8555U8656V8757W8858X
8959Y905AZ915B[925C\
935D]945E^955F_9660`
9761a9862b9963c10064d
10165e10266f10367g10468h
10569i1066Aj1076Bk1086Cl
1096Dm1106En1116Fo11270p
11371q11472r11573s11674t
11775u11876v11977w12078x
12179y1227Az1237B{1247C|
1257D}1267E~1277FDEL
⚠️ 重点强调(请务必记住)
💡 RFID应用

在RFID卡片写入URL时,字符串会被转换为ASCII码的十六进制值。例如:

3.2 转换公式

十六进制 → 十进制

例如:0x2A = 2×16¹ + 10×16⁰ = 32 + 10 = 42

十进制 → 十六进制

除以16取余,倒序排列

例如:42 ÷ 16 = 2 余 10 → 2A

📋

四、格式总结

卡类型码制进制示例
ID卡曼彻斯特码16进制125533FFFF
ABA码/WG码10进制1429471231 / 051,65535
M1卡正码16进制2A83155E
反码16进制5E15832A
💡 记住要点