Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eMRTDreader

通过 Proxmark3 设备读取符合 ICAO DOC 9303 标准的电子机读旅行证件(护照、ID 卡等),提取 MRZ 信息与持证人面部照片。

功能

  • 支持 TD1(ID 卡,3 行 MRZ)和 TD3(护照,2 行 MRZ)格式
  • 通过 BAC(Basic Access Control)认证读取芯片数据
  • 解析并格式化展示 EF.DG1 中的 MRZ 字段(姓名、国籍、文件号、出生日期、有效期等)
  • 提取 EF.DG2 中的持证人面部照片(JPEG / JPEG 2000)
  • 交互式凭据输入,支持分字段输入或直接粘贴完整 MRZ 行

依赖

依赖 说明
Proxmark3 RFID 读卡器固件及客户端(已假设位于 ~/proxmark3)
CMake ≥ 3.10 构建系统
C11 编译器 Clang 或 GCC

构建

第一步:构建 libpm3rrg_rdv4(仅需执行一次)

cd ~/proxmark3/client/experimental_lib
./01make_lib.sh

完成后会在该目录的 build/ 子目录下生成 libpm3rrg_rdv4.dylib(macOS)或 libpm3rrg_rdv4.so(Linux)。

第二步:构建 eMRTDreader

cd ~/CLionProjects/eMRTDreader
mkdir -p cmake-build-debug && cd cmake-build-debug
cmake ..
make

也可以直接在 CLion 中打开项目并执行构建。

注意:如果 Proxmark3 不在默认路径 ~/proxmark3,请修改 CMakeLists.txt 中的 PM3_ROOT 变量。

使用

将电子证件放置在 Proxmark3 读卡器上,然后运行:

./eMRTDreader [串口路径]

示例(macOS):

./eMRTDreader /dev/cu.usbmodem1234

若不指定串口路径,程序会交互式提示输入。

交互流程

Proxmark3 串口 (如 /dev/cu.usbmodem*): /dev/cu.usbmodem1234

BAC 凭据输入方式:
  1. 分别输入文件号 / 出生日期 / 有效期
  2. 输入完整 MRZ 第2行(44字符,仅护照)
请选择 [1/2]: 1

文件号(9位,不足用<补齐): E12345678
出生日期(YYMMDD): 900101
有效期(YYMMDD): 251231

输出示例

=== ICAO DOC 9303 电子证件信息 ===

[MRZ 原始数据]
  第1行: P<CHNZHANG<<SAN<<<<<<<<<<<<<<<<<<<<<<<<<<<
  第2行: E12345678<CHN9001011M2512319<<<<<<<<<<<<<<2

[解析结果]
  文件类型: 护照 (TD3)
  持证人:   ZHANG SAN
  签发国:   CHN
  文件号:   E12345678
  国籍:     CHN
  出生日期: 1990年01月01日
  性别:     男
  有效期:   2025年12月31日

[生物特征]
  面部照片: /tmp/emrtd_1719022800/EF_DG2.jpg
  (可用图像查看器打开)

所有数据已保存至: /tmp/emrtd_1719022800
读取完成。

读取的所有原始数据文件(.bin)及提取的照片均保存在 /tmp/emrtd_<时间戳>/ 目录下。

工作原理

eMRTDreader
    │
    ├─ pm3_open()          连接 Proxmark3 硬件
    ├─ pm3_console()       执行 hf emrtd dump 命令
    │      │
    │      └─ [Proxmark3 内部]
    │             ├─ ISO 14443A/B 射频通信
    │             ├─ BAC 认证(3DES + SHA-1)
    │             └─ 读取 EF.DG1、EF.DG2 等数据组
    │
    ├─ 解析 EF_DG1.bin     BER-TLV → tag 0x5F1F → MRZ 字符串
    └─ 定位 EF_DG2.*       JPEG / JPEG 2000 面部照片

认证协议使用 BAC(Basic Access Control),凭据来源于证件 MRZ 可视区域(文件号、出生日期、有效期)。

已知限制

  • PACE 未支持:Proxmark3 当前未实现 PACE(Password Authenticated Connection Establishment)密钥建立,因此 EF.DG3(指纹)和 EF.DG4(虹膜)等需要 PACE 的数据组无法读取。
  • 仅读取:本工具为只读工具,不写入芯片数据。
  • BAC 强度:BAC 的安全性依赖 MRZ 字段的保密性,建议在可信环境下使用。

许可证

本项目依赖 Proxmark3(GPL v3)。请确保使用符合当地法律法规,仅对自己持有或获得授权的证件进行操作。

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages