13-SIM数据交互之-FCP

在SIM数据交互之-C0(GET RESPONSE)里面已经有列出一些fcp的数据,但是没有解析fcp里面具体的数据格式和内容,这边再进行一些补充

对于FCP的格式分成两种

  • MF,DF,或者ADF的FCP
  • EF的FCP

1.MF,DF,或者ADF的FCP


序号 描述 标签 状态
1 FCP模板标签 ‘62’ M
2 文件描述符 ‘82’ M
3 文件标识符 ‘83’ C1
4 DF 名称(AID) ‘84’ C2
5 专有信息 ‘A5’ C3
6 生存周期 ‘8A’ M
7 安全特性 ‘86’, ‘8B’, ‘8C’ 或 ‘AB’ C4
8 PIN状态模板DO ‘C6’ M
9 总文件大小 ‘81’ O
字母 含义
M 必须。
O 可选。
C1 对于DF或MF,必选。对于ADF,可选。
C2 DF名称只对ADF是必须的。
C3 对于MF,专有信息是必须的,对于DF/ADF,是可选的。
C4 有,且只有一个标签必须有。

对上面的文件描述符进行简要说明,其他描述的还没理解透,以后有进展接着更新

1.1 文件描述符 82

在《3-SIM文件结构及文件操作指令》里面有讲到文件的结构,其实就是MF/DF/EF/ADF。MF/DF/ADF目录下只有FCP文件,EF下面除了有FCP外还有有BO或B2文件。

可是我们怎么知道一个文件对应的是什么类型的文件,所以文件描述符的作用就体现出来了,该文件可以让我们判断上面的所有类型。

如下表格定义:

b8 b7 b6 b5 b4 b3 b2 b1 含义
0 X - - - - - - 文件访问属性
0 0 - - - - - - 非共享文件
0 1 - - - - - - 共享文件
0 - X X X - - - 文件类型
0 - 0 0 0 - - - 工作EF
0 - 0 0 1 - - - 内部EF
0 - 0 1 0 - - - RFU
0 - 0 1 1 - - -
0 - 1 0 0 - - -
0 - 1 0 1 - - -
0 - 1 1 0 - - -
0 - 1 1 1 - - - DF 或 ADF
0 - - - - X X X EF结构
0 - - - - 0 0 0 无参考信息
0 - - - - 0 0 1 透明文件(二进制)
0 - - - - 0 1 0 线性固定文件
0 - - - - 0 1 1 RFU
0 - - - - 1 0 0
0 - - - - 1 0 1
0 - - - - 1 1 0 循环文件
0 - - - - 1 1 1 RFU
1 X X X X X X X RFU

下面我们取几个常用的文件描述符进行说明:

文件描述符 内容分析
41 共享文件 工作EF 透明文件(二进制)B0
42 共享文件 工作EF 线性固定文件 B2
46 共享文件 工作EF 循环文件 B2
78 共享文件 DF 或 ADF C0/F2
1.2 举例说明

上面表中可以很清楚的看到每个字段的含义,而且FCP的内容也都是按照上面的顺序排列,我们下面看几个例子就会比较清楚。

文件1:MF(3F00)

FCP内容如下:62278202782183023F00A507800171C00200018A01058B032F0602C60C90016083010183018183010A

我们将其按上面的表格进行类型分解可得:

扫描二维码关注公众号,回复: 11034438 查看本文章
描述 标签 状态 内容
FCP模板标签 ‘62’ M 62 27
文件描述符 ‘82’ M 82027821
文件标识符 ‘83’ C1 83023F00
DF 名称(AID) ‘84’ C2 只对ADF是必须的
专有信息 ‘A5’ C3 A507800171C0020001
生存周期 ‘8A’ M 8A0105
安全特性 ‘86’, ‘8B’, ‘8C’ 或 ‘AB’ C4 8B032F0602
PIN状态模板DO ‘C6’ M C60C90016083010183018183010A
总文件大小 ‘81’ O 可选

上表就可以比较直观的看到各标签对应的状态了,下表再做一个具体的数据分析

所属字节 原始内容 内容分析
1 62 FCP模块标签
2 27 FCP模块的长度(十进制:30)
3 82 文件描述符标签
4 02 文件描述符长度(十进制:2)
5 78 文件描述符(DF 共享文件)
6 21 文件描述符数据编码
7 83 文件识别符标签
8 02 文件识别符长度(十进制:32)
9-10 3F00 文件识别符
11 A5 专有信息标签
12 07 专有信息长度(十进制:7)
13 80 UICC特性标签
14 01 UICC特性长度(十进制:1)
15 71 UICC特性(允许时钟停止,无优先级别 支持电压级别A、B、C)
16 8A 生命周期标签
17 01 生命周期长度(十进制:1)
18 05 生命周期(操作状态-激活)
19 8B 安全特性标签
20 03 安全特性长度(十进制:3)
21-22 2F06 EF_ARR的文件标识符
23 02 EF_ARR中对应的记录数(十进制:2)
24 C6 PIN状态模块标签
25 0C PIN状态模块(十进制:12)
26 90 PS_DO标签
27 01 PS_DO长度(十进制:1)
28 60 PS_DO
29 83 密钥索引标签
30 01 密钥索引长度(十进制:1)
31 01 密钥索引(PIN Appl 1)
32 83 密钥索引标签
33 01 密钥索引长度(十进制:1)
34 81 密钥索引(Second PIN Appl 1)
35 83 密钥索引标签
36 01 密钥索引长度(十进制:1)
37 0A 密钥索引(ADM1)

文件2:DF(7F10)

FCP内容如下:621E8202782183027F108A01058B032F0602C60C90016083010183018183010A

所属字节 原始内容 内容分析
1 62 FCP模块标签
2 1E FCP模块的长度(十进制:30)
3 82 文件描述符标签
4 02 文件描述符长度(十进制:2)
5 78 文件描述符(DF 共享文件)
6 21 文件描述符数据编码
7 83 文件识别符标签
8 02 文件识别符长度(十进制:2)
9-10 7F10 文件识别符
11 8A 生命周期标签
12 01 生命周期长度(十进制:1)
13 05 生命周期(操作状态-激活)
14 8B 安全特性标签
15 03 安全特性长度(十进制:3)
16-17 2F06 EF_ARR的文件标识符
18 02 EF_ARR中对应的记录数(十进制:2)
19 C6 PIN状态模块标签
20 0C PIN状态模块(十进制:12)
21 90 PS_DO标签
22 01 PS_DO长度(十进制:1)
23 60 PS_DO
24 83 密钥索引标签
25 01 密钥索引长度(十进制:1)
26 01 密钥索引(PIN Appl 1)
27 83 密钥索引标签
28 01 密钥索引长度(十进制:1)
29 81 密钥索引(Second PIN Appl 1)
30 83 密钥索引标签
31 01 密钥索引长度(十进制:1)
32 0A 密钥索引(ADM1)

文件3:ADF(7FF0/A0000000871002FF86FFFF89FFFFFFFF)

FCP内容如下:622C820278218410A0000000871002FF86FFFF89FFFFFFFF8A01058B032F0602C60C90016083010183018183010A

所属字节 原始内容 内容分析
1 62 FCP模块标签
2 2C FCP模块的长度(十进制:44)
3 82 文件描述符标签
4 02 文件描述符长度(十进制:2)
5 78 文件描述符(DF 共享文件)
6 21 文件描述符数据编码
7 84 DF名称标签
8 10 DF名称长度(十进制:16)
9-24 A0000000871002FF86FFFF89FFFFFFFF DF名称
25 8A 生命周期标签
26 01 生命周期长度(十进制:1)
27 05 生命周期(操作状态-激活)
28 8B 安全特性标签
29 03 安全特性长度(十进制:3)
30-31 2F06 EF_ARR的文件标识符
32 02 EF_ARR中对应的记录数(十进制:2)
33 C6 PIN状态模块标签
34 0C PIN状态模块(十进制:12)
35 90 PS_DO标签
36 01 PS_DO长度(十进制:1)
37 60 PS_DO
38 83 密钥索引标签
39 01 密钥索引长度(十进制:1)
40 01 密钥索引(PIN Appl 1)
41 83 密钥索引标签
42 01 密钥索引长度(十进制:1)
43 81 密钥索引(Second PIN Appl 1)
44 83 密钥索引标签
45 01 密钥索引长度(十进制:1)
46 0A 密钥索引(ADM1)

2.EF的FCP


序号 描述 标签 状态
1 FCP模板标签 ‘62’ M
2 文件描述符 ‘82’ M
3 文件标识符 ‘83’ M
4 专有信息 ‘A5’ O
5 身存周期 ‘8A’ M
6 安全特性 ‘86’, ‘8B’, ‘8C’, 或 ‘AB’ C1
7 文件大小 ‘80’ M
8 总文件大小 ‘81’ O
9 短标识符(SFI) ‘88’ O
字母 含义
M 必须。
O 可选。
C1 有,且只有一个标签必须有。

在我们知道该文件是EF文件之后,我们就会对该文件下面的内容BO/B2进行读取,不过再读取之前,我们需要知道该文件内容的个数和长度。

2.1 文件大小 83和80

由于EF下面有两种文件,一种binary(B0),一种record(B2)。

对于B0来说只有一个文件,我们直接通过80字段的数据获取,对于B2的我们则需要通过80字段获取总长度,83字段获得一共有多少个B2,每个B2有多长。

2.2 举例说明

文件1:2FE2

FCP内容如下:62178202412183022FE28A01058B032F06018002000A880110

同样的我们也将EF的文件按上面的表格进行类型分解可得:

描述 标签 状态
FCP模板标签 ‘62’ M
文件描述符 ‘82’ M
文件标识符 ‘83’ M
专有信息 ‘A5’ O
身存周期 ‘8A’ M
安全特性 ‘86’, ‘8B’, ‘8C’, 或 ‘AB’ C1
文件大小 ‘80’ M
总文件大小 ‘81’ O
短标识符(SFI) ‘88’ O

上表就可以比较直观的看到各标签对应的状态了,下表再做一个具体的数据分析

所属字节 原始内容 内容分析
1 62 FCP模块标签
2 17 FCP模块的长度(十进制:23)
3 82 文件描述符标签
4 02 文件描述符长度(十进制:2)
5 41 文件描述符(工作EF 透明文件 共享文件)
6 21 文件描述符数据编码
7 83 文件标识符标签
8 02 文件标识符长度(十进制:2)
9-10 2FE2 文件标识符
11 8A 生命周期标签
12 01 生命周期长度(十进制:1)
13 05 生命周期(操作状态-激活)
14 8B 安全特性标签
15 03 安全特性长度(十进制:3)
16-17 2F06 EF_ARR的文件标识符
18 04 EF_ARR中对应的记录数(十进制:4)
19 80 文件大小标签
20 02 文件大小长度(十进制:2)
21-22 000A 文件大小(十进制:10)
23 88 短文件标识符标签
24 01 短文件标识符长度(十进制:1)
25 10 短文件标识符

说明:从83字段的数据可知文件描述符为41,所以改文件为B0,那就直接看80字段的文件大小为000A,即该B0长度为10个字节。

文件2:EF(6F06)

FCP内容如下:62198205422100370783026F068A01058B036F0601800201818800

同样的我们也将EF的文件按上面的表格进行类型分解可得:

描述 标签 状态
FCP模板标签 ‘62’ M
文件描述符 ‘82’ M
文件标识符 ‘83’ M
专有信息 ‘A5’ O
身存周期 ‘8A’ M
安全特性 ‘86’, ‘8B’, ‘8C’, 或 ‘AB’ C1
文件大小 ‘80’ M
总文件大小 ‘81’ O
短标识符(SFI) ‘88’ O

上表就可以比较直观的看到各标签对应的状态了,下表再做一个具体的数据分析

所属字节 原始内容 内容分析
1 62 FCP模块标签
2 19 FCP模块的长度(十进制:25)
3 82 文件描述符标签
4 05 文件描述符长度(十进制:5)
5 42 文件描述符(工作EF 线性固定文件 共享文件)
6 21 文件描述符数据编码
7-8 0037 记录长度(十进制:55)
9 07 记录个数(十进制:7)
10 83 文件标识符标签
11 02 文件标识符长度(十进制:2)
12-13 6F06 文件标识符
14 8A 生命周期标签
15 01 生命周期长度(十进制:1)
16 05 生命周期(操作状态-激活)
17 8B 安全特性标签
18 03 安全特性长度(十进制:3)
19-20 6F06 EF_ARR的文件标识符
21 01 EF_ARR中对应的记录数(十进制:4)
22 80 文件大小标签
23 02 文件大小长度(十进制:2)
24-25 0181 文件大小(十进制:385)
26 88 短文件标识符标签
27 00 短文件标识符长度(不支持SPI)

说明:从83字段的数据可知文件描述符为42,所以改文件为B2,所以接着看下面的记录长度和记录个数,一个记录长度为0x37,记录个数为7个。我们可以通过80字段的文件总大小进行验证是否一样,总文件大小为0x0181。(验证正确:0x37 * 0x07 = 0x0181)

参考文献:3GPP,ISO7816,百度百科等

发布了106 篇原创文章 · 获赞 76 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/Creator_Ly/article/details/84937151
sim