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

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

描述 标签 状态 内容
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 6217
文件描述符 '82' M 82024121
文件标识符 '83' M 83022FE2
专有信息 'A5' O 可选
身存周期 '8A' M 8A0105
安全特性 '86', '8B', '8C', 或 'AB' C1 8B032F0601
文件大小 '80' M 8002000A
总文件大小 '81' O 可选
短标识符(SFI) '88' O 880110

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

所属字节 原始内容 内容分析
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 6219
文件描述符 '82' M 82054221003707
文件标识符 '83' M 83026F06
专有信息 'A5' O 可选
身存周期 '8A' M 8A0105
安全特性 '86', '8B', '8C', 或 'AB' C1 8B036F0601
文件大小 '80' M 80020181
总文件大小 '81' O 可选
短标识符(SFI) '88' O 8800

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

所属字节 原始内容 内容分析
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,百度百科等

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容

  • SIM卡里面的内容跟我们平常电脑的文件管理系统类似,一个文件夹下面有文件夹也有文件,文件夹下面又有文件夹,一层接一...
    Creator_Ly阅读 2,757评论 0 2
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,451评论 0 13
  • 海底轮 情绪问题 恐惧 不安全生殖轮 生殖 泌尿 下腰背情绪问题 正常 接受失衡 内疚 太阳轮 胃 肠 脾情绪 正...
    竹影青灯阅读 222评论 0 0
  • 思维距离这个词, 我第一次看到的时候,觉得特别生动。人与人之间各种各样差别的根源就是来自于思维。也就是大家现在常说...
    申湘黔阅读 540评论 3 1
  • 昨晚做了几个梦,没错,是几个。 都是一些个乱七八糟的梦,导致一晚上都睡不好。 其实也不是第一天这样了,而是每天都一...
    汪先生要上进阅读 352评论 2 2