13-SIM数据交互之-FCP

20 篇文章 ¥99.90 ¥299.90

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

对于FCP的格式分成两种

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

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

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

1.1 文件描述符 82

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

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

如下表格定义:

b8b7b6b5b4b3b2b1含义
0X------文件访问属性
00------非共享文件
01------共享文件
0-XXX---文件类型
0-000---工作EF
0-001---内部EF
0-010---RFU
0-011---
0-100---
0-101---
0-110---
0-111---DF 或 ADF
0----XXXEF结构
0----000无参考信息
0----001透明文件(二进制)
0----010线性固定文件
0----011RFU
0----100
0----101
0----110循环文件
0----111RFU
1XXXXXXXRFU

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

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

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

文件1:MF(3F00)

FCP内容如下:62278202782183023F00A507800171C00200018A01058B032F0602C60C90016083010183018183010A

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

描述标签状态内容
FCP模板标签‘62’M62 27
文件描述符‘82’M82027821
文件标识符‘83’C183023F00
DF 名称(AID)‘84’C2只对ADF是必须的
专有信息‘A5’C3A507800171C0020001
生存周期‘8A’M8A0105
安全特性‘86’, ‘8B’, ‘8C’ 或 ‘AB’C48B032F0602
PIN状态模板DO‘C6’MC60C90016083010183018183010A
总文件大小‘81’O可选

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

所属字节原始内容内容分析
162FCP模块标签
227FCP模块的长度(十进制:30)
382文件描述符标签
402文件描述符长度(十进制:2)
578文件描述符(DF 共享文件)
621文件描述符数据编码
783文件识别符标签
802文件识别符长度(十进制:32)
9-103F00文件识别符
11A5专有信息标签
1207专有信息长度(十进制:7)
1380UICC特性标签
1401UICC特性长度(十进制:1)
1571UICC特性(允许时钟停止,无优先级别 支持电压级别A、B、C)
168A生命周期标签
1701生命周期长度(十进制:1)
1805生命周期(操作状态-激活)
198B安全特性标签
2003安全特性长度(十进制:3)
21-222F06EF_ARR的文件标识符
2302EF_ARR中对应的记录数(十进制:2)
24C6PIN状态模块标签
250CPIN状态模块(十进制:12)
2690PS_DO标签
2701PS_DO长度(十进制:1)
2860PS_DO
2983密钥索引标签
3001密钥索引长度(十进制:1)
3101密钥索引(PIN Appl 1)
3283密钥索引标签
3301密钥索引长度(十进制:1)
3481密钥索引(Second PIN Appl 1)
3583密钥索引标签
3601密钥索引长度(十进制:1)
370A密钥索引(ADM1)

文件2:DF(7F10)

FCP内容如下:621E8202782183027F108A01058B032F0602C60C90016083010183018183010A

所属字节原始内容内容分析
162FCP模块标签
21EFCP模块的长度(十进制:30)
382文件描述符标签
402文件描述符长度(十进制:2)
578文件描述符(DF 共享文件)
621文件描述符数据编码
783文件识别符标签
802文件识别符长度(十进制:2)
9-107F10文件识别符
118A生命周期标签
1201生命周期长度(十进制:1)
1305生命周期(操作状态-激活)
148B安全特性标签
1503安全特性长度(十进制:3)
16-172F06EF_ARR的文件标识符
1802EF_ARR中对应的记录数(十进制:2)
19C6PIN状态模块标签
200CPIN状态模块(十进制:12)
2190PS_DO标签
2201PS_DO长度(十进制:1)
2360PS_DO
2483密钥索引标签
2501密钥索引长度(十进制:1)
2601密钥索引(PIN Appl 1)
2783密钥索引标签
2801密钥索引长度(十进制:1)
2981密钥索引(Second PIN Appl 1)
3083密钥索引标签
3101密钥索引长度(十进制:1)
320A密钥索引(ADM1)

文件3:ADF(7FF0/A0000000871002FF86FFFF89FFFFFFFF)

FCP内容如下:622C820278218410A0000000871002FF86FFFF89FFFFFFFF8A01058B032F0602C60C90016083010183018183010A

所属字节原始内容内容分析
162FCP模块标签
22CFCP模块的长度(十进制:44)
382文件描述符标签
402文件描述符长度(十进制:2)
578文件描述符(DF 共享文件)
621文件描述符数据编码
784DF名称标签
810DF名称长度(十进制:16)
9-24A0000000871002FF86FFFF89FFFFFFFFDF名称
258A生命周期标签
2601生命周期长度(十进制:1)
2705生命周期(操作状态-激活)
288B安全特性标签
2903安全特性长度(十进制:3)
30-312F06EF_ARR的文件标识符
3202EF_ARR中对应的记录数(十进制:2)
33C6PIN状态模块标签
340CPIN状态模块(十进制:12)
3590PS_DO标签
3601PS_DO长度(十进制:1)
3760PS_DO
3883密钥索引标签
3901密钥索引长度(十进制:1)
4001密钥索引(PIN Appl 1)
4183密钥索引标签
4201密钥索引长度(十进制:1)
4381密钥索引(Second PIN Appl 1)
4483密钥索引标签
4501密钥索引长度(十进制:1)
460A密钥索引(ADM1)
2.EF的FCP

序号描述标签状态
1FCP模板标签‘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

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

所属字节原始内容内容分析
162FCP模块标签
217FCP模块的长度(十进制:23)
382文件描述符标签
402文件描述符长度(十进制:2)
541文件描述符(工作EF 透明文件 共享文件)
621文件描述符数据编码
783文件标识符标签
802文件标识符长度(十进制:2)
9-102FE2文件标识符
118A生命周期标签
1201生命周期长度(十进制:1)
1305生命周期(操作状态-激活)
148B安全特性标签
1503安全特性长度(十进制:3)
16-172F06EF_ARR的文件标识符
1804EF_ARR中对应的记录数(十进制:4)
1980文件大小标签
2002文件大小长度(十进制:2)
21-22000A文件大小(十进制:10)
2388短文件标识符标签
2401短文件标识符长度(十进制:1)
2510短文件标识符

说明:从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

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

所属字节原始内容内容分析
162FCP模块标签
219FCP模块的长度(十进制:25)
382文件描述符标签
405文件描述符长度(十进制:5)
542文件描述符(工作EF 线性固定文件 共享文件)
621文件描述符数据编码
7-80037记录长度(十进制:55)
907记录个数(十进制:7)
1083文件标识符标签
1102文件标识符长度(十进制:2)
12-136F06文件标识符
148A生命周期标签
1501生命周期长度(十进制:1)
1605生命周期(操作状态-激活)
178B安全特性标签
1803安全特性长度(十进制:3)
19-206F06EF_ARR的文件标识符
2101EF_ARR中对应的记录数(十进制:4)
2280文件大小标签
2302文件大小长度(十进制:2)
24-250181文件大小(十进制:385)
2688短文件标识符标签
2700短文件标识符长度(不支持SPI)

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

creatorly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值