SIM卡

SIM卡是(Subscriber Identity Module 客户识别模块)的缩写,也称为智能卡、用户身份识别卡,GSM数字移动电话机必须装上此卡方能使用。它在一电脑芯片上存储了数字移动电话客户的信息,加密的密钥以及用户的电话簿等内容,可供GSM网络客户身份进行鉴别,并对客户通话时的语音信息进行加密。


标准SIM卡

SIM卡主要用于GSM系统,但是兼容的模块也用于UMTS的UE(USIM)和IDEN电话。有人把CDMA2000和cdmaOne的RUIM卡和UIM卡,也称作SIM卡,虽然两者作用类似,并遵守了一样的所有机械、电气标准和部分软件标准,但是上层应用并不一定兼容。SIM由CPU、ROM、RAM、EEPROM和I/O电路组成。用户使用SIM时,实际上是手机向SIM卡发出命令,SIM卡应该根据标准规范来执行或者拒绝;SIM卡并不是单纯的信息存储器。

SIM卡在GSM系统中的应用,使卡和手机分离,SIM卡唯一标识一个客户。一张SIM卡可以插入任何一部GSM手机中使用,而使用手机所产生的通信费则自己记录在该SIM卡所唯一标识的客户帐上。SIM卡容量有8K、16K、32K、64K,其中512k以上的大容量的SIM卡统称为STK卡。

SIM卡物理结构

现在SIM卡拥有四种的物理结构,最早的版本的尺寸是与标准信用卡相同(85×54×0.78毫米),触点则符合ISO 7816对ID-1型IC卡的规定。


现时四种大小的SIM卡类型

由于手机小型化,目前的SIM卡,又称“Mini SIM”,一般裁剪为25x15毫米的插入式。发售时一般嵌在一个ID-1型卡中,使用前沿着预制切口取下。

2010年,欧洲电信标准协会(European Telecommunications Standards Institute)再从Mini SIM发展出缩小为15x12毫米的“Micro SIM”卡,Micro SIM卡首次使用在苹果公司所推出的iPad及iPhone 4,后续iPhone 4S、iPad 2等众多智能手机都有采用。


现在SIM卡均提供多种尺寸选择

2011年,苹果公司提出“Nano SIM”卡(8.8x12.3毫米)标准,经过2012年的一番竞争,该标准被欧盟采纳为4FF标准。“Nano SIM”卡最早被应用在iPhone 5与iPad mini。

SIM卡原理与内部结构

SIM卡实际是装有微处理器的芯片卡,在这里面存储了数字移动电话客户的信息,加密的密钥以及用户的电话簿等内容,可供GSM网络客户身份进行鉴别,并对客户通话时的语音信息进行加密。


SIM卡接线位置

它的内部有5个模块,并且每个模块都对应一个功能:微处理器CPU(8位)、程序存储器ROM(3~8kbit)、工作存储器RAM(6~16kbit)数据存储器EEPROM(128~256kbit)和串行通信单元。这5个模块被胶封在SIM卡铜制接口后与普通IC卡封装方式相同。这5个模块必须集成在一块集成电路中,否则其安全性会受到威胁,因为芯片间的连线可能成为非法存取和盗用SIM卡的重要线索。

SIM卡的供电分为5V(1998年前发行)、5V与3V兼容、3V、1.8V等,现在的Micro SIM与Nano SIM卡均是1.8V,要求手机产生的SIM卡供电电压与该SIM卡所需的电压相匹配。SIM卡插入手机后,电源端口提供电源给SIM卡内各模块。

SIM卡在与手机连接时,最少需要5个连接线:电源(Vcc) 、时钟(CLK) 、数据I/O口(Data) 、复位(RST) 、接地端(GND),如下图:


SIM卡接线位置


SIM卡接线位置

SIM卡保存的数据

(1)由SIM卡生产厂商存入的系统原始数据。

(2)由GSM网络运营部门或者其他经营部门在将卡发放给用户时注入的网络参数和用户数据。包括鉴权和加密信息Ki(Kc算法输入参数之一:密匙号);国际移动用户号(IMSI);A3:IMSI认证算法;A5:加密密匙生成算法;A8:密匙(Kc)生成前,用户密匙(Kc)生成算法;

(3)由用户自己存入的数据。比如,短消息、固定拨号,缩位拨号,性能参数,话费记数等。

(4)用户在用卡过程中自动存入和更新的网络接续和用户信息类数据。包括最近一次位置登记时的手机所在位置区识别号(LAI),设置的周期性位置更新间隔时间,临时移动用户号(TMSI)等。


SIM卡保存的数据

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

GSM网络登录原理

对于一个用户号码来说,IMSI和KI码是唯一的。TMSI是随时变动的。但IMSI很用以被复制。KI码需要攻击算号才出来。TMSI是电信服务商发给的。

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相同,则认为该用户合法。

熟知这个原理之后,一些有锁手机的卡贴、写卡解卡等手段的解锁均是从这几个步骤发展而来。以有锁at&t合约iPhone为例,需要登陆中国移动网络。iPhone是利用要at&t卡的IMSI在中国移动的网络里取得进网许可,首先利用卡贴或者写卡解卡等手段写进at&t的IMSI码,向中国移动发送此IMSI码,此时中国移动认为这个卡是at&t国际漫游过来的,就分配给他一个TMSI(临时的IMSI),此时TMSI与IMSI配合登录个人帐户系统的时候中国移动发现他是国内的用户,继而开放权限,按照正常帐户处理了。


卡贴利用SIM卡登陆漏洞实现解锁

当然这只是最简单的解锁方法,其中卡贴是比较简单的解锁方式,但是有可能存在信号与稳定问题,而写卡解卡能够比较好解锁手机,但是其破解过程,当中的KI码攻克是比较困难的事情,只有获取了KI码,才有可能获取内部的IMSI码,加上随着加密技术的不断发展,现在有很大一部分的新SIM卡均很难进行破解写卡。

SIM卡常见故障

1、每当手机打开时,手机都要与SIM卡进行数据交流。没插卡时,这些信号是不会送出的。当手机插入SIM卡后无任何反应或插入SIM卡显示出错时,这可能是因为SIM卡开关不良或接触不良或使用废卡产生的。如果换新卡后故障仍然存在,那么故障一般发生在SIM卡供电部分。在SIM卡插座的供电端、时钟端、数据端,开机瞬间可用示波器观察到读卡信号,如无此信号,应为SIM卡供电开关周边电阻电容元件与卡脱焊问题。

2、如SIM卡在一部手机上可用,在另一部手机上不能用,可能是在手机中已经设置了“网络限制”和“用户限制”功能。这可以通过16位网络控制码(NCK)或用户控制码(SPCK)启动该手机的限制功能,这需要网络运营商解决。另外,这种故障也可能是SIM卡供电偏低或接触不良造成的 。

3、一般SIM卡的检测需要再初始开机时执行,当开机检测不到SIM卡存在时,将提示“插入SIM卡”;如果检测SIM卡已存在,但机卡之间的通信不能实现,会显示“检查SIM卡”;当SIM卡对开机检测信号没有响应时,手机也会提示“插入SIM卡”;当SIM卡在开机使用过程中掉出、由于松动接触不良或使用报废卡时,手机会提示“SIM卡错误”。

剪卡需要注意的问题

前面我们已经了解到SIM卡的物理与内部的结构,其真正起到作用的是很小的一部分,其余的金属与塑料均是无意义的封装面积。


观察SIM大小与金属部位的位置

剪卡前,我们需要分辨SIM卡的类型,早期的SIM卡与现在SIM卡,表面的结构与连接线是不一样的。SIM卡金属部分,有位置的接线是没有功用的(如SIM卡结构接线图所示),因此裁剪去也并不会对SIM卡产生影响。只要裁剪的时候注意保持SIM卡有功用的接线位置保持完整即可。按照现在来看,较新的SIM卡都可以进行裁剪操作,只有年代较为久远的才需要进行SIM卡的更换。


剪卡后需要进行打磨

剪卡的方法有比较多种,最直接粗暴的便是利用剪刀,按照SIM卡贴纸来进行裁剪,过程中需要适当剪大一些,好进行后期的打磨调整。此外直接购买剪卡器也是一件更方便的事情,现在市面上有Micro SIM与Nano SIM两种剪卡器。前者可以轻松裁剪好,只需进行边缘的稍微打磨即可使用,而Nano SIM卡裁剪后,由于其厚度要更加薄,因此打磨方面需要多花一些功夫与时间。

手机SIM卡知识大科普的更多相关文章

  1. SIM卡是什么意思?你所不知道的SIM卡知识扫盲(详解)【转】

    原文链接:http://www.jb51.net/shouji/359262.html 日常我们使用手机,SIM卡是手机的必须,没有了它就不能接入网络运营商进行通信服务.SIM卡作为网络运营商对于我们 ...

  2. 三种尺寸:手机SIM卡使用指南

    毫无疑问目前卖的最火的手机非iPhone 5s莫属,相信仍有不少网友目前处于观望之中,由于iPhone 5s和iPhone 5c采用与iPhone相同的Nano-SIM卡,因此不少新用户在使用之前也徒 ...

  3. Android开发之获取手机SIM卡信息

    TelephonyManager是一个管理手机通话状态.电话网络信息的服务类.该类提供了大量的getXxx(),方法获取电话网络的相关信息. TelephonyManager类概述: 可用于訪问有关设 ...

  4. Windows mobile 下读取手机SIM卡信息(转)

    Windows mobile 下读取手机SIM卡信息 c#改善 Windows mobile 下读取手机SIM卡信息

  5. 017 Android 获取手机SIM卡序列号和读取联系人

    1.获取手机SIM卡序列号 //5.存储sim卡系列号 //5.1获取sim卡系列号 TelephonyManager manager = (TelephonyManager) getSystemSe ...

  6. 【工具类】获取手机sim卡的运营商

    加入权限:<uses-permission android:name="android.permission.READ_PHONE_STATE" /> package ...

  7. 手机SIM卡介绍 三类不同标准的SIM卡

    SIM卡的全称是Subscriber Identity Module,翻译过来也叫客户识别模块,也叫做智能卡.用户身份识别卡.这块小小的芯片可以存储用户的号码.信息,以及一定数量的联系人数据,配合我们 ...

  8. 手机SIM卡无法识别解决方案

    SIM卡是工作中测试用的,经常插拔到不同的手机,前两天SIM卡放到手机中都能正常识别,今天插入到另一款手机中发现无法识别.心里糟了,是不是卡坏了,根据之 前的直觉,在公司找了一块橡皮,在SIM卡的芯片 ...

  9. Android 获取手机SIM卡运营商

    直接上代码: /** * 获取SIM卡运营商 * * @param context * @return */ public static String getOperators(Context con ...

随机推荐

  1. My97DaePicker 用js实现文本框日期相减求天数

    <tr>                <td align="center" style="background-color: #cccccc;font ...

  2. 部署WSP出现错误—已在此服务器场中安装ID为XXXXX的功能

    stsadm -o deploysolution -name ***.wsp -immediate -allowGacDeployment -url http://*** -force   

  3. [Java]HashMap的两种排序方式

    先将 Map 中的 key 和 value 全部取出来封装成 JavaBea 数组,再将这个数组排序,排序完成后,重新写回 Map 中,写回时采用 LinkedHashMap 可以保证迭代的顺序. 下 ...

  4. Oracle聚合求和和聚合求积(顺便解决BOM展开的问题)

    本文参考网址:http://www.itpub.net/thread-1020772-1-1.html 我们在日常的工作中,经常遇到了针对某一列的值,进行求和,求平均值,在一些特殊的业务场景下,我们需 ...

  5. linux杂记(⑨)vi使用说明

    基本上vi共分为三种模式,分别是[一般模式]].[编辑模式]与[指令列命令模式].这三种模式的作用是: 一般模式:以vi处理一个档案的时候,一进来该档案就是一般模式.在这个模式中,你可以使用[上下左右 ...

  6. The following classes could not be found: - android.support.v7.internal.widget.ActionBarOverlayLayou解决方案

    如图出现如下的错误的时候,一般都是升级Androdi Studio 后导致的,引入库不全,或者其他 东西缺少,可以如下解决方案: 或者如下的解决方案: 在布局文件的Design界面中,修改原来的App ...

  7. android-SQLite 和 Content

    SQLite 游标(Cursor)相当于指向底层数据中结果集的指针,而不是提取和返回结果值的副本,是在结果集中对位置(行)进行控制的管理方式. moveToFirst:把游标移动到查询结果的第一行 m ...

  8. QT完美转换特殊字符的大小写

    Util::ShowMessage(QString::fromUtf8("ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØŒŠþÙÚÛÜÝŸ€")); Util::ShowMess ...

  9. C# 保留小数点后两位(方法总结)

    最简单使用: float i=1.6667f; string show=i.ToString("0.00"); //结果1.67(四舍五入) 其他类似方法: string show ...

  10. oracle slient静默安装并配置数据库及仅安装数据库不配置数据库shell

    <1,>仅安装数据库软件不配置数据库 ./x86oracle.sh /ruiy/ocr/DBSoftware/app/oracle /ruiy/ocr/DBSoftware/app/ora ...