ISO/IEC 14443定义了TypeA、TypeB两种卡片读写标准:
Type A型卡在读写机上向卡传送信号时,是通过13.56MHz的射频载波传送信号。其采用方案为同步、改进的Miller编码方式,通过100%ASK传送;当卡向读写机具传送信号时,通过调制载波传送信号。使用847kHz的副载波传送Manchester编码。
而Type B型卡在读写机具向卡传送信号时,也是通过13.56MHz的射频载波信号,但采用的是异步、NRZ编码方式,通过用10%ASK传送的方案;在卡向读写机具传送信号时,则是采用的BPSK编码进行调制。

  • TypeA卡
    • MifareOne(市面上的卡大部分都是M1卡,广泛应用于公交、地铁、门禁等诸多领域)
      • S50 (容量:1K)
      • S70 (容量:4K)
    • NTAG
      • NTAG213(容量:180Bytes 可读写:144Bytes)
      • NTAG215(容量:540Bytes 可读写:504Bytes)
      • NTAG216(容量:924Bytes 可读写:888Bytes)
    • UID卡(M1模拟卡,可以随意修改UID)
  • TypeB卡
    • CPU卡(如居民二代身份证、部分银行卡等)

1 TypeA卡

1.1 M1卡

M1卡常见的卡片型号分为S20卡、S50卡、S70卡等,区别在于存储大小不同

M1卡读、写新的扇区前要先通过认证。

Mifare Classic 提供 1 Kb - 4Kb 的容量,现在国内采用的多数是 Mifare Classic 1k(S50)[后面简称 M1 卡],而我以后的测试也大多是基于 M1 卡开展。

1.1.1 S50卡

S50分为16个扇区、每个扇区4块(0~3 Block)、共64块,每块16个字节。
M1 卡有从 0 到 15 共 16 个扇区,每个扇区配备了从 0 到 3 共 4 个段,每个段可以保存 16 字节的内容,为什么这里要强调从 0 开始呢?这跟 C 语言里面数组下标默认从 0 开始是差不多的,好计算地址偏移,我们不必太过在意,只是要记住是从 0 开始,写入数据的时候不要写错地方就可以了。每个扇区的第 4 个段(也就是 3 段)是用来保存 KeyA,KeyB 和控制位的,因为 M1 卡允许每个扇区有一对独立的密码保护,这样能够更加灵活的控制数据的操作,控制位就是这个扇区各种详细权限计算出来的结果。

按块号编址为0~63,第0扇区的块0用于存放厂商代码UID,已经固化不可更改。
每张 M1 卡都有一个全球唯一的 UID 号,这个 UID 号保存在卡的第一个扇区(0 扇区)的第一段(0 段),也称为厂商段,其中前 4 个字节是卡的 UID,第 5 个字节是卡 UID 的校验位,剩下的是厂商数据。并且这个段在出厂之前就会被设置了写入保护,只能读取不能修改,当然也有例外,有种叫 UID 卡的特殊卡,UID 是没有设置保护的,其实就是厂家不按规范生产的卡,M1 卡出厂是要求要锁死 UID 的。下图很清晰的列出了 M1 卡的结构。
image.png
image.png

其它扇区的块0、块1、块2为数据块,用于存储数据,块3为控制块,分别存放:
密码A(6bytes)、存取控制(4bytes)、密码B(6bytes)

每个扇区的密码和存取控制是独立的,可以根据实际需要设定各自的密码及存取控制。三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限。如果进行减值操作,必须验证KEYA, 如果进行加值操作,必须验证KEYB。

在存储控制前后的密码KEYA与密码KEYB读取出来都为0x00,并不代表该密码就是0x00,而是对密码进行了保护。修改认证密码可以防止别人获取到数据。通常卡片出厂时秘钥为{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}、Android NFC库通常的读写的秘钥为 {0xD3,0xF7,0xD3,0xF7,0xD3,0xF7}

1.2 NFC Forum

为推动NFC技术发展,2004年,诺基亚、飞利浦和索尼建立了近场通信论坛(NFC Forum)。NFC Forum,作为技术规范的制定者,定义了如下5种类型的NFC标签。

NFC Forum Type 1

NFC Forum Type 1标签基于ISO14443A。具有可读、重新写入的能力,用户可将其配置为只读。存储能力为96字节,用来存网址URL或其他小量数据。然而,内存可被扩充到2k字节。通信速度为106 kbit/s。文章源自堕落的鱼-https://www.duoluodeyu.com/2687.html
典型的芯片为Topaz 512 (BCM20203)文章源自堕落的鱼-https://www.duoluodeyu.com/2687.html

NFC Forum Type 2

NFC Forum Type 2标签也是基于ISO14443A,具有可读、重新写入的能力,用户可将其配置为只读。其基本内存大小为48字节,但可被扩充到2k字节。通信速度也是106 kbit/s。文章源自堕落的鱼-https://www.duoluodeyu.com/2687.html
典型的芯片为Mifare Ultralight / Ultralight C, NTag203/210/213/215/216等。文章源自堕落的鱼-https://www.duoluodeyu.com/2687.html

NFC Forum Type 3

NFC Forum Type 3标签基于索尼FeliCa系统,产于日本,主要广泛应用在亚洲。数据通讯速度为212 Kbit/s。故此类标签较为适合较复杂的应用,成本较高。文章源自堕落的鱼-https://www.duoluodeyu.com/2687.html
典型的芯片为Sony公司的FeliCa S系列。文章源自堕落的鱼-https://www.duoluodeyu.com/2687.html

NFC Forum Type 4

NFC Forum Type 4类型的标签被定义为与ISO14443A、B标准兼容。制造时被预先设定为可读/可重写、或者只读。芯片内存更大,通信速度介于106 kbit/s和424 kbit/s之间。适用于多种应用。文章源自堕落的鱼-https://www.duoluodeyu.com/2687.html
典型的芯片为 DESFire系列,容量2K,4K,8K不等。文章源自堕落的鱼-https://www.duoluodeyu.com/2687.html

NFC Forum Type 5

NFC Forum Type 5类型的标签,是近几年被定义的最新类型的NFC标签,对应的RFID协议是ISO15693系列RFID芯片。NFC Forum引入此系列的芯片,是为了满足日益增长的各种远距离、小型化的NFC标签及其应用。

2 详细参考链接

Type A型和Type B型卡的主要区别
Mifare和CPU卡简介与比较
Mifare Classic 破解参考:http://t.zoukankan.com/k1two2-p-5415400.html

更多的RFID卡结构可以阅读以下内容。
S50非接触式IC卡性能简介(M1)
M1-S70卡片介绍
高频 IC 卡指南
飞利浦官方 M1 卡文档