关键词:SIM、UICC、USIM、ICCID、IMSI、MSISDN、LAI、MCC、MNC、PIN/PUK、SIMCON
难度:进阶
前置知识:Android 数据存储总览、GSM 基本概念、十六进制编辑基础
一、概述
SIM 卡是移动设备里最容易被忽视、但单件信息密度最高的证物。
它不是"存储通讯录的小芯片",而是一张遵循 GSM 11.11 标准的智能卡(smart card)。
智能卡在网络侧的身份是唯一凭证——没有它,手机连不上任何基站。运营商必须靠它完成鉴权,于是它得把三件事存下来:这张卡属于哪个国家、哪家网络、哪个用户、最近在哪些小区出现过。
这份清单是运营商在网络侧写下来的,不是用户能编辑的。
没有把它纳入检材会怎样:位置类结论会失去最可靠的一条独立旁证。手机本机的定位缓存,应用能覆盖,系统日志能清理。而 SIM 卡上的驻留位置列表由网络侧驱动写入,用户正常操作清不掉。
只有手机本机数据时,"这台设备当时在哪个区域"往往只有一个来源。SIM 卡数据一进来,整个结论的强度就变了。
在取证流程中的位置:本篇属于独立的证据线,与设备取证平行,不从属于它。
特点是几乎不受设备状态影响。手机锁屏、加密、应用数据全在 FBE 密钥后面,SIM 卡照样能读。设备侧全面受阻的时候,这往往是最后的出口。
它同时是身份关联的枢纽。IMSI 与 ICCID 是把卡的记录、手机本机的账号、流量会话串成同一个人的关键标识。
SIM 卡取证的三个特点:
- 物理尺寸极小,信息密度极高。25mm × 15mm 的卡片里装着几十个结构化文件,涵盖身份标识、网络参数、联系人、短信,以及近期的驻留位置。
- 它是"运营商视角的设备快照"。手机本机日志可能被用户清理、可能被应用覆盖,但卡内位置值由网络侧驱动写入,用户无法正常清除——这使它成为位置类证据里可靠度较高的一类。但它只有一个值,没有历史,所以"快照"这个词比"轨迹"准确。
- 它只反映"插卡的那张卡",不反映设备全貌。eSIM、双卡双待、换卡换机都会让 SIM 卡证据与设备证据脱节,必须与其他工件交叉验证。
涉及的证据形态里,有几个标识符必须按原样写进报告:
| 形态 |
具体位置 |
结构特征 |
| 物理载体 |
UICC 卡的 8 触点(ISO/IEC 7816) |
C4 是 I/O 数据通道,剪掉就读不出任何数据 |
| 文件树 |
MF(3F00)→ ADF(USIM 用 AID A0000000871004)→ DF → EF |
树形,遵循 ISO 7816-4 |
| 应用目录 |
USIM 应用 AID = A0000000871004,SIM 应用 AID = A0000000871002 |
现代 4G/5G 读的是 USIM,不是老的 SIM |
| 身份标识 |
ICCID(卡号)、IMSI(用户标识)、MSISDN(手机号) |
归属判断与交叉关联的入口 |
| 网络标识 |
MCC / MNC / LAI / TMSI |
LAI = 小区 ID + LAC,位置分析的载体 |
| 联系人与短信 |
EF 下的联系人文件、短信文件(SMS 在 SIM/USIM 应用下) |
读取受访问保护约束 |
| 访问保护 |
PIN / PUK / CHV |
错误次数超限会永久锁卡——这是本篇最重要的一条不可逆风险 |
| 物理转储 |
卡片的完整物理镜像 |
用于留存与复核,见 3.7 |
能回答什么:这张卡属于哪个国家、哪家运营商、哪个用户、最近在哪些小区出现过(对应哪个区域)、卡内联系人与短信、这张卡与手边这台设备是否匹配。
不能回答什么:用户用这张卡做过什么。它只记录卡侧状态,不记录使用行为。也答不了精确位置——LAI 到小区,不到坐标。答不了持卡人身份,IMSI 属于一个号段,不是一个人。基站侧的通话与上网记录同样答不了,那属于运营商侧数据,需另行授权调取,不在卡上。
本文不做的事:不提供 PIN/PUK 的爆破或绕过方法。错误尝试次数超限会永久锁卡——这既是技术事实,也是法律边界:解锁必须由有权知道密码的人完成,或在有明确授权的前提下进行,并遵循最小化原则。不做卡的克隆或复制,涉及他人通信身份,性质远重于数据取证。
读者前提:需要 GSM 网络的基本概念(基站、小区、鉴权)、ISO 7816 的分层文件模型,以及硬件操作能力(读卡器选择、触点识别)。工具只需一支支持 USIM 的读卡器与对应软件。
强烈建议先读 4.2 解锁操作——这是本领域唯一会永久销毁证据的操作。其余操作错了可以补救,这一项不能。
二、核心原理
2.1 UICC 与 SIM 的关系
严格说,手机里插的是 UICC(Universal Integrated Circuit Card,通用集成电路卡),"SIM 卡"是通俗叫法。UICC 是物理载体,上面可以运行多个应用,其中之一是 SIM(Subscriber Identity Module,用户身份模块)。
UICC(物理卡)
├── SIM(GSM 应用) ← 2G/3G 通用
├── USIM(UMTS 应用) ← 3G/4G 通用,文件名为 USIM
├── USIM2(第二张 USIM) ← 双卡设备
└── 其他应用(出行卡、银行卡等)
这个区分有实际意义:现代 4G/5G 网络读的是 USIM 应用,不是老的 SIM 应用。
工具在读取时先读 ATR 判断卡内有哪些应用,再按 AID 逐个 SELECT。
3G00 与 2G00 不是文件 ID,而是某些工具对 AID 的简写(分别指 USIM 与 SIM 应用)。标准的 AID 是:
| 应用 |
AID |
| SIM(GSM) |
A0000000871002 |
| USIM |
A0000000871004 |
SELECT 之后,DF(GSM) 与 DF(USIM) 都挂在 7F20 下,靠当前选中的 AID 区分看到的内容。
所以读卡工具必须支持 USIM。只支持老 SIM 的工具会读不到现代字段(6FE3 EPSLOCI、6F08/6F09 密钥等),或者只能读到 GSM 时代的 KC。
2.2 物理规格与针脚定义
| 项目 |
规格 |
| 早期全尺寸卡 |
85mm × 54mm × 0.76mm |
| 标准卡(ID-1) |
25mm × 15mm × 0.76mm |
| 微型卡(ID-000) |
15mm × 12mm |
| 卡端 |
8 个触点(ISO/IEC 7816 定义) |
| 工作电压 |
1.8V / 3.0V(由复位应答中的电压指示字节决定) |
ID-1 卡的 8 触点功能如下,取卡时按触点排布是唯一的物理线索:
| 触点 |
名称 |
功能 |
| C1 |
VCC |
供电(1.8V 或 3.0V) |
| C2 |
RST |
复位 |
| C3 |
CLK |
时钟 |
| C4 |
I/O |
数据双向通道 |
| C5 |
VPP |
编程电压(现代卡常悬空) |
| C6 |
VEE |
地 |
| C7 |
RST2 |
第二复位(备用) |
| C8 |
CLK2 |
第二时钟(备用) |
物理截取 SIM 卡的常见做法是从手机中取出卡,剪成小片保留触点。
剪掉了 C4(I/O),卡就读不出任何数据——这是 SIM 取证最常见的硬件级失败原因。 剪之前必须确认数据触点保留。
2.3 层级文件系统
SIM 卡的内部文件是三层树形结构,遵循 ISO 7816-4:
MF(Master File,主文件,3F00) ← 根
├── DF(Dedicated File,专用文件) ← 目录
│ ├── EF(Elementary File,基本文件) ← 数据实际存放处
│ └── DF(可嵌套)
└── EF
常见的专用文件(DF):
| DF |
文件 ID |
父目录 |
用途 |
EF(DIR) |
2F00 |
MF |
UICC 上的应用目录,列出卡内装了哪些应用 |
DF(GSM) |
7F20 |
MF |
GSM 应用根目录(SIM 与 USIM 各自的 GSM 分支) |
DF(TELECOM) |
7F10 |
MF |
电话号码簿与短信等业务文件的父目录 |
DF(PHONEBOOK) |
5F3A |
DF(TELECOM) |
联系人目录(USIM 的 PBR 增强结构) |
DF(MULTIMEDIA) |
5F3B |
DF(TELECOM) |
MMS 目录 |
7F10 和 7F20 是 MF 下的平级兄弟,不是父子。 这一点写错会直接导致 SELECT 路径失败:
MF 3F00
├── 7F10 DF.TELECOM
│ ├── 5F3A DF.PHONEBOOK (USIM 增强电话簿,内含 4F30 EF.PBR)
│ ├── 6F3A EF.ADN
│ ├── 6F3B EF.FDN
│ └── 6F3C EF.SMS
├── 7F20 DF.GSM
│ ├── 6F07 EF.IMSI
│ ├── 6F20 EF.Kc (GSM 侧的 8 字节密钥)
│ ├── 6F30 EF.PLMNsel
│ └── 6F7E EF.LOCI
└── 2FE2 EF.ICCID ← 注意:ICCID 直接挂在 MF 下,不在上面任何一个目录里
完整路径要写全三段:3F00:7F10:6F3C 才是 EF(SMS) 的定位。写成 3F00:7F20:6F3C 会返回 6A82(文件不存在)——这是排查方向,不是卡损坏。
另一层容易混的地方:USIM 也是一个应用(ADF),选中后它自己有一套根目录,里面同样有 7F20 分支。SIM 应用的 7F20 和 USIM 应用的 7F20 文件 ID 相同、内容不同,靠 SELECT 的 AID 区分。所以工具显示「7F20 下是 SIM 还是 USIM 的文件」取决于当前选中的应用,这是正确行为。
EF 按访问结构分四类,取证价值完全不同:
| 类型 |
结构 |
特点 |
取证价值 |
| Transparent |
固定长度 |
固定字节数,读一次全出 |
高,ICCID / IMSI / PLMN / 位置值都在这类 |
| Linear fixed |
线性定长记录 |
每条记录等长 |
高,ADN/FDN/SMS 属此类,偏移可算 |
| Cyclic |
循环记录 |
覆盖写,只留最近 |
中,LDN 只保最后一次 |
| TLV / BER |
变长 TLV |
自描述长度 |
中,配置类参数如 6F38 UST、6F4E 等能力配置 |
结构类型本身是取证判据:知道一个 EF 是 linear fixed 还是 cyclic,就知道它的记录数与单条偏移怎么算、哪些位置是空闲槽位(linear fixed 的空闲记录通常是 FF 填充,可据此判断"曾经有过多少条")。
2.4 标识符体系:ICCID / IMSI / MSISDN
这是最容易混淆的一组。三者完全不同,取证时必须分开记录。
| 标识 |
全称 |
长度 |
存哪 |
能否唯一定位设备 |
| ICCID |
Integrated Circuit Card ID |
19–20 位 |
卡内透明文件 |
否,只是卡序列号 |
| IMSI |
International Mobile Subscriber Identity |
15 位 |
SIM/USIM 透明文件 |
是,全球唯一的用户身份 |
| MSISDN |
Mobile Subscriber ISDN Number |
号码 |
运营商侧为主 |
否,且卡上未必有 |
ICCID 的结构(以 89 91 10 1200 00 320451 0 为例):
89 91 10 1200 00 320451 0
│ │ │ │ │ │ └─ Luhn 校验位(1 位)
│ │ │ │ │ └──────── 卡序列号(6 位)
│ │ │ │ └─────────── 交换配置码(2 位)
│ │ │ └──────────────── 生产年月 YYYYMM(4 位)
│ │ └─────────────────── 发行方标识号(2 位)
│ └────────────────────── 国家码(2 位)
└───────────────────────── 主行业标识(MII,2 位)
前 7 位(MII + 国家码 + 发行方标识)组成 IIN(Issuer Identification Number)。
IMSI 的结构:
MCC(3 位) + MNC(2–3 位) + MSIN(其余位数)
│ │ └─ 用户号码,与手机号不同
│ └───────────── 移动网络代码
└───────────────────── 移动国家码
IMSI 与手机号(MSISDN)是两个独立标识。用户可以换号不换卡,也可以补卡不改号。所以:
- 不能用 IMSI 直接查手机号,必须通过运营商的 HLR 查询(需授权)
- IMSI 有 15 位,但早期网络存在 14 位的遗留格式,解析时不要假设定长
2.5 网络标识:MCC / MNC / LAI / TMSI
这组参数是 SIM 卡上位置取证的核心。
| 标识 |
全称 |
含义 |
| MCC |
Mobile Country Code |
3 位国家码(中国 = 460) |
| MNC |
Mobile Network Code |
2–3 位网络码 |
| LAI |
Location Area Identity |
MCC + MNC + LAC,共 5–6 位 |
| TMSI |
Temporary Mobile Subscriber Identity |
临时身份,每次开机重新分配 |
| RAI |
Routing Area Identity |
LAI + Routing Area ID,粒度更细 |
LAI 的取证机制是本篇最值得理解的部分——而这里有一个必须先纠正的误解。
SIM/USIM 卡上不保存 LAI 历史列表,只保存「最后一次」的位置。 这一族文件都是单值透明文件,每个接入域一个,覆盖写:
EF(LOCI) '6F7E' 11 字节 transparent 电路域(CS)
├─ 1–4 TMSI(4 字节,按 TS 24.008 编码)
├─ 5–9 LAI(5 字节)
├─ 10 RFU(GSM 11.11 记为 TMSI TIME)
└─ 11 Location update status
EF(PSLOCI) '6F73' 14 字节 transparent 分组域(PS)
├─ 1–4 P-TMSI
├─ 5–7 P-TMSI signature value(3 字节)
├─ 8–13 RAI(6 字节 = LAI 5 + RAC 1)
└─ 14 Routing Area update status
EF(EPSLOCI) '6FE3' 18 字节 transparent EPS 域(LTE,USIM 侧)
├─ 1–12 GUTI(12 字节,取自 TS 24.301 的 EPS mobile identity 部分)
├─ 13–17 Last visited registered TAI(5 字节)
└─ 18 EPS update status
LAI 那 5 字节不是「MCC 3 + MNC 2 + LAC 2」按字节平铺,而是三个标识的紧凑数字打包:MCC 占 2 字节半、MNC 占 1 字节半(末位按 MNC 位长补 F)、LAC 占 2 字节,字节内是数字 BCD、低半字节在前。所以「460-00 + LAC 2A10」在文件里占 5 字节而不是 7 字节。TAI 结构同理,是 MCC + MNC + TAC 的同样打包。
必须记住的否定性事实:卡上没有"位置历史列表"。
「关机重开机不必扫频、只遍历卡上 LAI 列表逐一问询」这个说法在终端侧的缓存/内存优化层面成立,
但那不是卡上存着多条记录。卡上只有一个当前值,每次位置更新是覆盖写入。
任何声称"从 SIM 卡读出了 LAI 历史"的结果,数据一定来自终端或网络侧,不是卡本身。
两个取证特性直接由这个结构推出来:
- 覆盖写 → 卡上没有位置历史。想知道"这台卡去过哪些地方",卡本身答不了,需要终端日志(基站信息缓存、Cell ID 记录)或运营商侧数据
- 写入由网络侧驱动 → 用户无法正常清除。但"无法清除"只对当前值成立
仍然必须理解的局限:LAI 精度只到"位置区"级,一个位置区可能覆盖整个城市的一片区域。LAI 不是 GPS 坐标,详见 4.3。
TMSI 的取值有独立价值:它在每次开机时重新分配。若设备关机后再未启动,TMSI 是陈旧的;若设备一直运行,TMSI 可能仍然有效——但同样地,卡上只有当前这一份,没有历史。
2.6 访问保护:PIN / PUK / CHV
SIM 卡的访问控制机制,以及必须严格遵守的操作红线:
| 机制 |
长度 |
尝试上限 |
失败后果 |
| PIN(CHV1) |
4 位 |
3 次 |
卡被锁定,需 PUK 解锁 |
| PUK(CHV2) |
8 位 |
10 次 |
卡永久损坏,需更换 |
| PIN2 |
4 位 |
3 次 |
需 PUK2 解锁 |
这张表是本篇最重要的操作约束:
PUK 连错 10 次,SIM 卡会永久失效(bricking)。这不是软件锁定,是芯片级熔断,运营商也无法恢复。
这意味着:在授权范围不明确时,绝不能尝试 PIN 解锁。 三次错误尝试本身就可能造成不可逆后果——如果委托方手上没有 PUK,这张卡就废了。
正确做法,按这个顺序:
- 先确认授权范围(见 4.2),书面确认是否允许解锁
- 优先使用卡内已有的可读数据——即使不解锁,很多 Transparent 文件的公开部分仍可读取(ICCID 不需要 PIN)
- 如果委托方能提供 PUK 且明确授权,再进行尝试,并记录每次尝试
不要做的事:写脚本暴力枚举 PIN。4 位 PIN 只有 10000 种,但在 3 次尝试限制下毫无意义——平均要试 5000 次才有一次命中,而卡只给你 3 次。本文不提供任何绕过尝试次数限制的方法:这类手段在多数司法辖区属于破坏访问控制的违法行为,即便技术上可行也不应实施。本篇只讨论在有明确授权的前提下,如何用最少次数完成合法解锁。
2.7 eSIM 与物理 SIM 的差异
现代设备越来越多用 eSIM(嵌入式 SIM,UICC 形态的芯片直接焊在主板上,或以封装形式存在)。
取证上的差异是根本性的:
| 维度 |
物理 SIM |
eSIM |
| 可否取出 |
可取出 |
不可取出 |
| 取证方式 |
读卡器直接读 |
只能从设备侧读 eSIM 管理数据 |
| 换卡后 |
旧卡留存,可独立分析 |
旧配置可能被覆盖 |
| 主要风险 |
物理丢失 |
与主板绑定,设备销毁即不可恢复 |
eSIM 的取证路径目前主要靠这几条:
- 设备系统层暴露的 eSIM 配置(Android 的
euicc 相关服务、iOS 的 CoreTelephony 调试接口)
- 部分厂商的诊断/工程模式
- 运营商侧的 eSIM 平台记录(需运营商配合)
也就是说,eSIM 场景下,SIM 卡取证退化为设备取证的一个子任务,没法像物理卡那样独立获取。
三、操作步骤
3.1 硬件准备与读卡器选择
必备器材:
| 器材 |
规格要求 |
说明 |
| SIM 读卡器 |
支持 ISO 7816,支持 1.8V/3.0V 自动切换 |
便宜的 USB 读卡器常不支持 3.0V |
| SIM 卡座 |
带金属压片,接触可靠 |
避免松动导致间歇性读失败 |
| 防静电袋 |
— |
防止静电损坏 |
| 相机 |
带微距 |
全程拍照记录 |
| 标签 |
编号 + 日期 |
封存标识 |
读卡器选择盯三个指标:
- 必须支持 UICC 而非只支持旧 SIM。所谓"GSM 手机读卡器"往往是老式,只读 2G 应用
- 1.8V / 3.0V 双电压。现代 4G USIM 多为 1.8V,老卡是 3.0V
- 接触式(而非 NFC)。手机用 NFC 模拟读取的方案兼容性差,且不能保证稳定
取卡流程每一步都要拍照:
1. 记录设备开机状态(若设备在开机,先拍照屏幕)
2. 关机 → 取 SIM 卡托
3. 拍照:卡托在设备中的位置
4. 取出卡 → 立即拍照:卡正反面,ICCID 可见
5. 装入读卡器 → 拍照:连接方式
6. 开始读取
注意:很多设备在关机状态下取卡会触发"卡未被正确移除"提示,但这不影响卡的电芯供电状态。若设备在开机状态取卡,部分机型会短暂给卡断电,影响数据完整性——关机取卡是更安全的做法。
3.2 判定是否需要 PIN 解锁
读卡的第一件事是评估锁定状态,不是直接尝试解锁。
# 用 SIM 工具读取卡状态(示例工具名为通用占位)
sim_read --reader /dev/ttyUSB0 --info
典型输出: