求SIM卡中EF(CHV)和MF/DF/EF的头结构

解决方案 »

  1.   

    主控文件(MF)是整个文件系统的根,它控制EEPROM中所有的空间,在此空间中可以创建DF、EF、SF文件。主要参数文件标识符:  2字节,取值为‘3F00’。
    文件类型:   1字节,取值为‘01’。
    文件大小:   2字节,分配给文件的空间,以字节为单位,该空间不包括文件头。通常文件大小由COS分配(建立文件时该参数填‘0000’)。

      

  2.   

    专用文件(DF)
    一个专用文件(DF)包括它本身和以这个DF下的所有文件组成文件功能组。一个DF包括文件头和文件体,在为文件体分配的空间中可以创建DF、EF。主要参数文件标识符:  2字节,取值不能为‘3F00’。
    文件类型:   1字节,取值为‘02’。
    目录类型:   1字节,‘00’:普通目录;‘01’:GSM目录;‘02’:TELECOM目录;其它值:保留。
    文件大小:   2字节,分配给文件的空间,以字节为单位,该空间不包括文件头。文件大小由COS分配。


    基本文件(EF)
    一个基本文件(EF)由一个文件头和文件体两部分组成。GSM系统中采用三种基本文件。文件头
    文件体图4.5-1 基本文件(EF)的结构透明文件(transparent)
    透明文件由连续的字节序列组成。字节序列操作是按照相对地址(OFFSET)进行的,透明文件第一个字节的相对地址为‘0000’。当读取或更新文件时,相对地址表示字节序列的起始地址。透明文件的文件体的大小在文件头中描述。图4.5-2 透明文件的结构
    主要参数文件标识符:  2字节,取值不能为‘3F00’。
    文件类型:   1字节,取值为‘04’。
    文件格式:   1字节,取值为‘00’。
    文件大小:   2字节,分配给文件的空间,以字节为单位,该空间不包括文件头。
    数据大小:   2字节,已利用的空间字节数。
    读写属性:   高4位表示READ,SEEK的存取条件;低4位表示UPDATE的存取条件。
    失效属性: 高4位表示REHABILITATE的存取条件;低4位表示INVALIDATE的存取条件。
    注:如果UPDATE的存取条件为NEVER,在数据大小<文件大小的情况下,可以在有效数据后连续添加数据,有效数据则不能更改。线性定长记录文件(linear fixed)
    线性定长记录文件(linear fixed)由固定长度的记录序列组成。第一条记录的记录号是1。记录的长度和记录条数存放在文件头中。
    图4.5-2 线性定长记录文件的结构这种类型的EF中有以下几种访问记录的方法:
    ——直接访问记录号(不影响记录指针)
    ——当记录指针没有设置时,那么可以用NEXT或PREVIOUS方式进入第一条记录或最后一条记录。
    ——当记录指针设置后,那么可以访问下一条(NEXT)记录(除非记录指针指在最后一条记录)或上一条(PREVIOUS)记录(除非记录指针指在第一条记录);
    ——采用模式搜寻方式
    从文件开始处向前(forward) 顺序搜寻。
    从记录指针(除非指针在最后一条记录)所在记录处向前搜寻。
    从文件末尾向后(backward)搜寻。
    从记录指针(除非指针在第一条记录)所在记录处向后逆序搜寻
    如果搜寻活动不成功,那么记录指针不变。
    记录不能超过255条,并且每条记录不超过255字节。主要参数文件标识符:  2字节,取值不能为‘3F00’。
    文件类型:   1字节,取值为‘04’。
    文件格式:   1字节,取值为‘01’。
    记录长度:   2字节,每条记录的长度,以字节为单位。
    记录条数:   2字节,记录总条数。
    已存在记录条数:1字节,已存在的有效记录的条数。
    记录指针: 1字节,记录号为1的记录的物理位置(第几条记录)。
    读写属性:   高4位表示READ,SEEK的存取条件;低4位表示UPDATE的存取条件。
    失效属性:   高4位表示REHABILITATE的存取条件;低4位表示INVALIDATE的存取条件。注:如果UPDATE的存取条件为NEVER,在已存在记录条数<记录条数的情况下,可以在有效记录后连续添加记录,有效记录数据则不能更改。
    循环定长记录文件(cyclic)
    循环文件用于以时间顺序存储的记录,当所有的记录空间都占用时,新的存储数据将覆盖最旧的信息。
    循环结构的EF由固定记录数的定长记录组成。在这种文件结构中,第一条记录和最后一条记录之间有一个指针链接。当记录指针指在最后一条记录那么下一条记录是第一条记录,同样地,当记录指针指在记录1那么它的上一条记录就是记录N。最新的记录包括最新的数据并且记录号是1,最旧的记录的记录号是N。
    图4.5-2 循环定长记录文件的结构对于更新操作,只能使用PREVIOUS方式。
    对于读操作,访问的方式有:NEXT,PREVIOUS,Current AND Record Number三种方式。
    在选取一个循环文件之后(为了进行读或更新操作),记录指针将指向最后更新或增加的记录。如果操作失败,记录指针不变。
    循环型文件中记录最多255个,并且每条记录中字节数不超过255个。
    主要参数文件标识符:  2字节,取值不能为‘3F00’。
    文件类型:   1字节,取值为‘04’。
    文件格式:   1字节,取值为‘03’。
    记录长度:   2字节,每条记录的长度,以字节为单位。
    记录条数:   2字节,记录总条数。
    已存在记录条数:1字节,已存在的有效记录的条数。
    记录指针: 1字节,记录号为1的记录的物理位置(第几条记录)。
    读写属性:   高4位表示READ,SEEK的存取条件;低4位表示UPDATE的存取条件。
    增值属性:   高4位表示INCREASE的存取条件;低4位保留。
    失效属性:   高4位表示REHABILITATE的存取条件;低4位表示INVALIDATE的存取条件。注:如果UPDATE的存取条件为NEVER,在已存在记录条数<记录条数的情况下,可以在有效记录后连续添加记录,已存在记录条数=记录条数后不能再添加记录。安全文件(SF)
    安全文件用于存储GSM应用中所涉及的用户鉴权密钥(Ki)、持卡人校验码(CHV1、CHV2)、持卡人校验码解锁码(PUK1、PUK2,分别对应CHV1、CHV2)、文件管理校验码(ADM1~ADM8),文件管理校验码解锁码(AUK1~AUK8,分别对应ADM1~ADM8)。ADM0不存储在安全文件中,它被保存在系统区中。
    对安全文件能够存储的这些对象,统称密钥。主要参数文件标识符:  2字节,可以与MF、DF、EF的文件标识符重名。
    文件类型:   1字节,取值为‘00’。
    文件大小:   2字节,分配给文件的空间,以字节为单位,该空间不包括文件头。
    数据大小:   2字节,已利用的空间字节数。密钥存储格式密钥类型 密钥标识 使能状态 尝试计数器 密钥值密钥类型密钥类型值 说  明
    00 鉴权密钥(Ki)
    01 持卡人校验码(CHV1、CHV2)
    02 持卡人校验码解锁码(PUK1、PUK2)
    03 文件管理校验码(ADM1~ADM8)
    04 文件管理校验码解锁码(AUK1~AUK8)
    其它 保留密钥标识
    由于目前SIM卡中只允许设置一个鉴权密钥(Ki),所以其密钥标识强制为‘00’。持卡人校验码(CHV1、CHV2)的密钥标识的取值范围为‘01’~‘02’,‘01’对应CHV1,‘02’对应CHV2。对称地,持卡人校验码解锁码(PUK1、PUK2)的密钥标识的取值范围也为‘01’~‘02’,‘01’对应PUK1,‘02’对应PUK2。文件管理校验码(ADM1~ADM8)的密钥标识的取值范围为‘01’~‘08’,‘01’对应ADM1,‘02’对应ADM2, 以此类推。对称地,文件管理校验码解锁码(AUK1~AUK8)的密钥标识的取值范围也为‘01’~‘08’,‘01’对应AUK1,‘02’对应AUK2, 以此类推。使能状态
    目前使能状态仅对CHV1起作用,对其他密钥不起作用(强制为‘00’)。b8 b7 b6 b5 b4 b3 b2 b1

    b8=0 ENABLED
    b8=1  DISABLED

    b1=0 ASCII编码
    b1=1  BCD编码
      

  3.   

    楼上的辛苦了,但我要的是EF(CHV)或者说密钥文件(安全文件的结构)
      

  4.   

    不好意思,我刚刚仔细阅读了下,还比较详细,但是我还是有些地方不太明白,想讨教下。
    第一个问题:
    比如11.11的命令
    VERIFY  CHV    20  00  CHV No. 08  S 
    CHANGE  CHV    24  00  CHV No. 10  S
    那这个安全文件应该是线性文件吧 
    第二个问题:
    那个MF/DF/EF的头结构可以照着11.11上规定的来吗?要是有表格形式发给我看看就太好啦,嘿嘿
      

  5.   

    不好意思,我刚刚仔细阅读了下,还比较详细,但是我还是有些地方不太明白,想讨教下。
    第一个问题:
    比如11.11的命令
    VERIFY  CHV    20  00  CHV No. 08  S 
    CHANGE  CHV    24  00  CHV No. 10  S
    那这个安全文件应该是线性文件吧 
    第二个问题:
    那个MF/DF/EF的头结构可以照着11.11上规定的来吗?要是有表格形式发给我看看就太好啦,嘿嘿