SIM卡的基本知识

SIM卡(Subscriber Identity Module),即用户识别卡,它是一张符合GSM规范的“智慧卡”,SIM卡有大小之分,大卡尺寸54mmx84mm(约为名片大小),小卡尺寸为25mmx15mm(比普通邮票还小)。其实“大卡”上面真正起作用的是它上面的那张“小卡”,“小卡”上起作用的部分只有小指甲盖那么大。目前国内流行样式是“小卡”,小卡也可以换成“大卡”(有个卡托即可)。“大卡”和“小卡”分别适用于不同类型的GSM移动电话,早期的机型如摩托罗拉GC87C、308C等手机用的是“大卡”,现在新出的机型基本上都是用“小卡”。SIM卡可以插入任何一部符合GSM规范的移动电话中,“实现电话号码随卡不随机的功能”,而通话费则自动计入持卡用户的帐单上,与手机无关。

SIM卡知识进阶

  (一)SIM卡内保存的数据可以归纳为以下四种类型:

  (1)由SIM卡生产厂商存入的系统原始数据。
  (2)由GSM网络运营部门或者其他经营部门在将卡发放给用户时注入的网络参数和用户数据。包括:
    *鉴权和加密信息Ki(Kc算法输入参数之一:密匙号);
    *国际移动用户号(IMSI);
    *A3:IMSI认证算法;
    *A5:加密密匙生成算法;
    *A8:密匙(Kc)生成前,用户密匙(Kc)生成算法;
  (3)由用户自己存入的数据。比如,短消息、固定拨号,缩位拨号,性能参数,话费记数等。
  (4)用户在用卡过程中自动存入和更新的网络接续和用户信息类数据。包括最近一次位置登记时的手机所在位置区识别号(LAI),设置的周期性位置更新间隔时间,临时移动用户号(TMSI)等。

  这些数据都存放在各自的目录项内,第一类数据放在根目录,当电源开启后首先进入根目录,再根据指令进入相关的子目录,每种目录极其内部的数据域均有各自的识别码保护,只有经过核对判别以后才能对数据域中的数据进行查询,读出和更新。上面第一类数据通常属永久性的数据,由SIM卡生产厂商注入以后无法更改,第二类数据只有网络运行部门的专门机构才允许查阅和更新,再第三、四类数据中的大部分允许用户利用任何手机对其进行读/写操作。

  (二)SIM卡结构

  (1)SIM卡能够储存多少电话号码取决于卡的EEPROM的容量(有2K、3K、8K容量),若有8KB的存储容量,可供储存以下信息:
    *100组电话号码及其对应的性名文字;
    *15组短信息(Short Message);
    *25组以上最近拨出的号码;
    *4位SIM卡密码(PIN)。
  (2)SIM卡是带有微处理器的芯片卡,内有5个模块,每个模块对应一个功能:CPU(8位)、程序存储器ROM(6-16kbit)、工作存储器RAM(128-256kbit)、数据存储器EEPROM(2-8kbit)和串行通信单元,这5个模块集成在一块集成电路中。SIM卡在与手机连接时,最少需要5个连接线:
    *电源(Vcc)
    *时钟(CLK)
    *数据I/Q口(Data)
    *复位(RST)
    *接地端(GND)
  (3)SIM卡背面上20位数字iccd所代表的含义如下:
    *前6位(898600):是中国的代号;
    *第7位:业务接入号,对应于135、136、137、138、139中的5、6、8、9;
    *第8位:SIM卡的功能位:一般为0,现在的预付费SIM卡为I;
    *第9、10位:各省的编码;
    *11、12位:年号;
    *13位:供应商代码;
    *14-19位:用户识别码;
    *20位:校验位。

GSM网络登录步骤

  1. 手机开机后会从SIM卡中读取IMSI(15个数字)和TMSI(4字节);
  2. 手机登录网络时,将会IMSI或TMSI发给网络;
  3. 网络判断到该IMSI或TMSI有效,要生成一个128bit的RAND,然后发给手机;
  4. 手机收到RAND后,将RAND发给SIM卡;
  5. SIM以里面的KI为密钥对RAND进行A3A8运算,生成(SRES+Kc);
  6. 手机读取(SRES+Kc)(32bit+64bit),并将SRES发给网络;
  7. 网络自己进行一次A3A8运算,如果结果与手机返回的SRES相同,则认为该用户合法。

(0)

相关推荐

  • SIM卡的基本知识

    SIM卡(Subscriber Identity Module),即用户识别卡,它是一张符合GSM规范的"智慧卡",SIM卡有大小之分,大卡尺寸54mmx84mm(约为名片大小),小卡尺寸为25mmx15mm(比普通邮票还小).其实"大卡"上面真正起作用的是它上面的那张"小卡","小卡"上起作用的部分只有小指甲盖那么大.目前国内流行样式是"小卡",小卡也可以换成"大卡"(有个卡托即可).

  • Android获取手机SIM卡运营商信息的方法

    本文实例讲述了Android获取手机SIM卡运营商信息的方法,对于Android程序设计有非常实用的价值.分享给大家供大家参考之用.具体方法如下: 主要功能代码如下: /** * 获取SIM卡运营商 * * @param context * @return */ public static String getOperators(Context context) { TelephonyManager tm = (TelephonyManager) context .getSystemServic

  • Android4.X读取SIM卡短信和联系人相关类实例分析

    本文实例讲述了Android4.X读取SIM卡短信和联系人相关类.分享给大家供大家参考,具体如下: 1. IccSmsInterfaceManager 这个类的主要作用有两个 <1>通过 SMSDispatcher,发送短信数据 <2>更新和查询SIM卡的短信数据 IccSmsInterfaceManager 是一个Binder 服务类,Binder接口是 ISms. IccSmsInterfaceManager 被创造时 Binder服务会被注册. IccSmsInterface

  • Android手机卫士之绑定sim卡序列号

    现在开始具体 处理每一个导航页面的逻辑,首先看第二个导航页 这里需要实现绑定sim卡序列号的功能,注意添加相应的权限:uses-permission android:name="android.permission.READ_PHONE_STATE" private SettingItemView siv_sim_bound; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(sa

  • Android4.X中SIM卡信息初始化过程详解

    本文实例讲述了Android4.X中SIM卡信息初始化过程详解.分享给大家供大家参考,具体如下: Phone 对象初始化的过程中,会加载SIM卡的部分数据信息,这些信息会保存在IccRecords 和 AdnRecordCache 中.SIM卡的数据信息的初始化过程主要分为如下几个步骤 1.RIL 和 UiccController 建立监听关系 ,SIM卡状态发生变化时,UiccController 第一个去处理. Phone 应用初始化 Phone 对象时会建立一个 RIL 和UiccCont

  • 浅析Android手机卫士sim卡绑定

    读取sim卡的序列号,保存起来,一旦sim发生变更了,认为是小偷的sim卡,发出警告 读取sim卡序列号 获取TelephonyManager对象,通过getSystemService(TELEPHONY_SERVICE) 调用TelephonyManager对象的getSimSerialNumber()方法,得到String类型的序列号 把序列号保存在SharedPreences里面 需要加权限 android.permission.READ_PHONE_STATE 检测sim卡是否变更 使用

  • Android获取手机通讯录、sim卡联系人及调用拨号界面方法

    android获取手机通讯录联系人信息 复制代码 代码如下: private void getPhoneContacts() {        ContentResolver resolver = this.getContentResolver();                // 获取手机联系人       Cursor phoneCursor = resolver.query(Phone.CONTENT_URI,                  new String[] { Phone

  • Android 判断SIM卡属于哪个移动运营商详解及实例

    Android 判断SIM卡属于哪个移动运营商 第一种方法: 获取手机的IMSI码,并判断是中国移动\中国联通\中国电信 TelephonyManager telManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); /** 获取SIM卡的IMSI码 * SIM卡唯一标识:IMSI 国际移动用户识别码(IMSI:International Mobile Subscriber Identification

  • Android 判断SIM卡是中国移动\中国联通\中国电信(移动运营商)

    第一种方法: 获取手机的IMSI码,并判断是中国移动\中国联通\中国电信 TelephonyManager telManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); /** 获取SIM卡的IMSI码 * SIM卡唯一标识:IMSI 国际移动用户识别码(IMSI:International Mobile Subscriber Identification Number)是区别移动用户的标志, * 储存在

  • Android获取双卡双待手机的SIM卡信息示例代码

    前言 需要验证手机号的功能,但是国内的手机多是双卡双待的,无法获取到两个号码.在Android的官方文档是没有提供相应的Api的,因为标准的Andoird是没有双卡的,好像也只有国内才会搞双卡双待的神器吧. 以下记录一下做这个功能所学习到的东西. Android 获取本机手机号(适用于双卡双待手机) 直接上代码: import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import

随机推荐