标题：SIM卡读卡器
详解
SIM卡(Subscriber Identity Module)。即用户识别模块，是一张符合GSM规范的"智慧卡"。SIM卡可以插入任何一部符合GSM规范的移动电话中，"实现电话号码随卡不随机的功能"，而通话费则自动计入持卡用户的帐单上，与手机无关。 SIM卡作为智能卡中特殊的一类卡，采用标准的接触式IC卡。他受到ISO7816标准(接触式集成电路IC卡的规定)和ETSI(欧洲电信标准委员会)的GSM11.11等标准的规范。他沿袭了智能卡在安全中的特色，并在移动用户认证和移动商务中扮演重要的角色。
读卡器
sim卡读卡器是一种读取sim卡内部信息的硬件接口电路，和平常见到的各种储存卡的读卡器相似。能够读出sim卡中的电话薄、短信、以及其他信息，并能完成电话薄的修改，从而备份电话薄。此外，现在已经出现一些读卡器具有破解功能，能够完成特定sim卡的烧制，实现一卡多号，或一号多卡。
还有一种sim卡读卡器，是可以直接读TF卡的。
功能
支持 GSM和CDMA SIM卡，读取、编辑、备份手机电话本和短讯信息
2) 轻松排序、批量修改电话簿、短讯信息打印等多种功能
3) 支持MSM信息一族在线资料的及时保存，适合几个SIM卡同时修改信息
4) 现代手机与电脑进行信息数据交换的设备，本产品适用于SIM卡（GSM和CDMA） 
5) 可安全保存，建立，编辑信息同时可自由修改手机的PIN 密码
6) 外观优美, 无需外接电源, USB 接口，支持USB 1.1 ，快速读写，即插即用
7) 系统要求:支持windows 98, ME, 2000, XP
设计一
目前手机用户将一些重要的电话号码都储存在手机的SIM卡上。如果手机失窃，用户可以买一部新的，但是储存的号码怎么办呢?如果用户能事先将储存在SIM卡上的电话号码做一份电子拷贝，这样就算手机丢失了，用户还是可以很容易地将保存的号码写入到新的SIM卡里。为此，研究并设计了SIM卡读卡器，通过他可以将手机SIM卡中信息读取到电脑中，方便地实现电话簿和短消息的编辑、备份和管理。为经常使用手机的用户提供了一个经济、便捷的信息备份管理解决方案。 2 SIM卡常识 SIM卡是一张符合GSM规范"智能卡"，他实际上是一个装有微处理器的芯片卡，内部有5个模块，且每个模块都对应一个功能：CPU(8位)、程序存储器(3～8 kb)、工作存储器(6～16 kb)、数据存储器(128～256 kb)和串行通信单元。SIM卡能实现存储数据(电话本、短消息等)和在安全条件下(个人身份号码PIN、鉴权钥Ki正确)完成客户身份鉴权和客户信息加密算法的全过程。这些功能都是由SIM卡内的一部具有操作系统的微处理机完成。SIM卡具有机卡分离(SIM-ME接口)、通信安全可靠、成本低等特点。 (1) SIM卡的物理特征：可以分尺寸为54 mm×84 mmID-1 SIM(大卡)和尺寸为25 mm×15 mmPlug-in SIM(小卡)两种。 (2) SIM卡的存储容量：一般SIM卡有8 kB的存储容量，另外还有容量分别为16 k和32 k的SIM卡，即STK SIM卡。 (3) SIM卡的使用温度：标准温度-25～+70℃，极限温度-35～85℃，极限情况下每次使用不得超过4小时，总共使用不得超过100次。 (4) SIM卡的使用寿命：物理寿命是取决于客户的插拔次数，约在1万次左右；而集成电路芯片的寿命取决于数据存储器的写入次数，不同厂家其指标有所不同，就Mo-torola经试验室试验约5万次左右。平均寿命约为4年。
设计二
3 SIM卡与移动台设备的接口 SIM卡芯片有8个触点，与移动台设备相互接通： (1) 电源VCC(触点C1)：4.5～5.5 V，ICC<10 mA； (2) 复位RST(触点C2)； (3) 时钟CLK(触点C3)：卡时钟3.25 MHz； (4) 不提供(触点C4)； (5) 接地端GND(触点C5)； (6) 编程电压VPP(触点C6)； (7) 数据I/O口(触点C7)； (8) 不提供(触点C8)。 SIM卡同移动台设备连接时至少需5个连接线：数据I/O口(Data)、复位(RST)、接地端(GND)、电源(VCC)、时钟(CLK)。他与基带单元的接口电路如图1所示。其中SIM CD为SIM卡检测脚，用于检测SIM卡的拔插；SIM CLK为ME提供的读/写SIM卡的参考时钟；SIMRST为SIM卡复位信号；SIM IO为串行数据输入/输出线，由20 kΩ上拉电阻上拉至高电平；SIM RnW为读/写控制信号，用以指示当前SIM_IO线上数据传输的方向；SIM PWCTRL为功率控制信号，可在空闲方式时控制SIM卡上的电源关闭，从而降低功耗，延长待机时间。 4 SIM卡内部数据结构 SIM卡共有3类数据文件：主文件(Master File，MF)、专用文件(Dedicate File，DF)、基本文件(ElementFile，EF)。组织结构规定如下： 0x3F00代表根目录，0x2FXX代表根目录下的基本文件； 0x7FXX代表一级子目录，0x6FXX代表一级子目录下的基本文件； 0x5FXX代表二级子目录，0x4FXX代表二级子目录下的基本文件。 5 SIM卡上电复位流程 SIM卡符合国际标准ISO7816的要求，按照协议中的规定，SIM应有8个触点，包括电源接口、复位控制接口、时钟输入接口、数据输入输出接口，SIM卡工作时整体电流消耗小于10 mA。SIM卡的时钟频率可由外部提供，在指定时问内运行鉴权过程时至少需要13/4 MHz的时钟频率，其他情况下，使用最小为13/8 MHz的时钟频率。I/O端口的数据传输波特率为时钟频率的1/372。 5.1 触点接通与冷复位时序(Activation and cold reset) 初始时，所有端口皆处于低电平(L)态，电压范围0～0.4 V；VCC电源电压先上电(H态)，后提供VPP编程电压，在智能SIM卡中，VPP端无用，电压范围5 V±0.4 V；VCC电源端稳定一段时间后，将IO端口置为接收方式(H态)，并提供稳定的CLK时钟信号(注：IO口需在提供CLK信号前或在提供CLK信号后200个时钟周期内(ta)置为接收方式)；RST复位信号需在提供CLK信号后400个时钟周期内(tb)保持L态，之后才可置为H态；提供复位信号后400～40 000个时钟周期内(tc)，I/O口有复位应答。 5.2 热复位时序(Warm reset) 热复位在冷复位失败情况下使用，过程中保持VCC为H态，且有稳定的CLK时钟信号；热复位时需保持RST端为L态的时间至少为400个时钟周期(te)；在RST端置L态之前或之后200个时钟周期时间内(td)，IO口应置为接收方式；在RST置为H态后的400～40 000个时钟周期内，I/O口有复位应答。 5.3 时钟停止时序(Clock stop) 外部控制停止时钟，可使SIM卡通信暂时中断，过程中保持VCC端与复位端RST为H态；要停止时钟，需在I/O口输出最后一个字符之后等待至少1 860个时钟周期(tg)；恢复时钟后至少等待700个时钟周期(th)，I/O开始有字符输出。 5.4 触点释放时序(Deactivation) 将RST端置为L态；结束CLK输入并将I/O口置为L态；最后将VCC端置为L态。
设计三
5.5 SIM卡的复位应答 SIM卡的触点被激活之后，终端启动一个冷复位。如果SIM卡在冷复位后回送的字节数不符，或在19 200个初始etu之内复位应答未完成，终端不立即终止卡片操作过程，而是再发一个热复位信号。如果仍然得到同样的结果，那么，接口没备应释放触点，否则卡将继续进行后续操作。流程如图6所示。 复位应答最多为32个字节(包括历史字符，不包括初始字符)，其中历史字符最多为15个字符，协议分为T=O与T=1两种，一张SIM卡只支持其中的一种协议。位持续时间：在IO上的位持续时间被定义为一个基本时间单元etu。复位应答期间的位持续时间称为"初始etu"。初始etu=372/fs=372个时钟周期。复位应答之后的位持续时间称为"当前etu"，当前etu=F/D/fs。F为时钟频率变换因数，D为比特率调整因数，均在SIM卡复位应答的接口字符TA1中给出，缺省值为F=372，D=1，即复位应答之后的当前etu=初始etu。复位应答过程中相连两字符起始位前沿之间的最小时间间隔为12个初始etu，最大时间间隔为9 600个初始etu，所有应答字符在19 200个初始etu的时间内传送完，即从第一个字符的起始位前沿到最后一个字符起始位前沿后的12个初始etu结束)。 复位应答格式： TS 初始字符(强制性的)，确定后续字符传送顺序(高位先送还是低位先送)； TO 格式字符(强制性的)； TA1/TB1/TC1/TD1～TAi/TBi/TCi/TDi 接口字符(选择性的)； T1～TK历史字符(选择性的)； TCK 校验字符(有条件的)T=0时不出现。
6 SIM卡信息交互规程 6.1 SIM卡信息交互指令格式 6.1.1 命令格式 CLA 命令类别代码，GSM为0xA0； INS 指令编码； P1/P2/P3 指令参量，P3由INS决定，代表通讯的数据信息长度，有指令与响应两个方向； DATA 指令附加数据。 6.1.2 应答格式 DATA：响应数据； SW1/SW2：返回命令状态。 6.1.3 通用错误返回代码表 6.2 常用的基本指令 6.2.1 目录或文件选择指令(SELECT) 选择一个文件，选择成功后，对线性固定型文件，记录指针不确定。对循环型文件，记录指针指向最近更新或增加的一条记录。 CLA=A0，命令类别代码，GSM为0xA0；INS：指令编码，SELECT为A4；P1=00，按文件标识符选择；P2=00，应答： 目录地址： 正确命令响应为： 0x9F代表命令正确执行，XX为SIM卡返回的数据长度；返回0x94/0x04，代表给出的目录地址是错误的。在复位应答之后(ATR)，主要文件(MF)被默认为选中，成为当前目录。然后，可采用符合下列原则的SELECT功能来选择每种文件： ① 选择DF或MF设为当前目录；DF是在选择任何他的EF之前被先选择出来 ② 选择EF设为当前文件，DF或MF是EF的上层。当前EF总是当前目录的下层。 可选择的文件包括：属于当前目录的直接子文件；属于当前DF的父文件的直接子DF；当前月录的上层；当前DF；MF。
设计四
6.2.2 取前一命令应答数据指令(GET RESPONSE) Length(R)：响应数据最大长度。 全部命令响应为： 0x90/0x00代表命令正确执行。 6.2.3 从透明的数据文件中读取以二进制形式存储的字节串指令(READ BINARY) Offset：要读取数据的偏移地址； Length(R)：响应数据最大长度。 全部命令响应为： 0x90/0x00代表命令正确执行；返回0x94/0x00，代表没有数据文件被选中，即当前被选中的可能是目录而不是文件；返回0x94/0x08，代表当前目录或数据文件与指令不一致，即当前数据不是以二进制形式存储的；返回0x98/0x04，代表本次操作不满足存取安全规则，密码认证未通过。 7 SIM卡数据读写测试 SIM卡数据读写测试的具体步骤及其结果如下： Step1 SIM卡首先上电复位，原则是先接通触点，后启动冷复位，若冷复位失败，启动热复位，若热复位也不成功，则释放触点并报错。冷复位或热复位成功后，SIM卡应输出复位应答。 实验测试中取得的复位应答信号如下： 0x3B代表协议为正向约定；0x67代表TB1与TC1出现，历史字符字节数为7；0x00代表不需要VPP；0x29～0x22为7个历史字符。 Step2 复位成功后，发送目录选择指令，将当前目录选取到GSM目录，指令如下： 7F20为GSM目录地址； SIM卡返回： 代表命令正确执行，且响应字符有34个字节。 Step3 发送取命令响应数据指令： 0x22代表指令返回数据最大为34个字节； SIM卡返回： 0xC0代表响应数据对应的指令为SELECT；0x90/0x00代表命令正确执行。 Step4 再次发送目录选择指令，将当前目录选取到IMSI目录，指令如下： 6F07为IMSI数据目录； SIM卡返回： 代表命令正确执行，且响应字符有15个字节。 Step5：发送取命令响应数据指令： 0x0F代表指令返回数据最大为15个字节； SIM卡返回： 0xC0代表响应数据对应的指令为SELECT；0x90/0x00代表命令正确执行。 Step6 选取到所需要进行操作的目录后，执行读取数据指令，由于IMSI号是以二进制形式存储的，所以使用二进制数据读取指令： 0x00代表数据偏移地址为0，即从第一个字节开始读数据；0x09表示IMSI信息有9个字节； SIM卡返回： 0xB0代表响应数据对应的指令为READ BINARY；0x08代表IMSI号有8个字节数据；0x90/0x00代表命令正确执行。符合国际移动用户识别码IMSI(International Mobile Subscriber Identification Number)的编码规则，即IMSI(国际移动用户识别码)=MCC(移动国家号)+MNC(移动网号)+MSISDN(移动用户号码)。 8 结 语 SIM卡符合GSM规范，采用标准的接触式IC卡，受到ISO7816标准的规范。本文在研究接触式集成电路IC卡国际标准ISO7816的基础之上，提出了一种SIM卡读卡器的设计方案，针对SIM卡信息交互规程给出了具体的测试步骤，测试结果证明了该设计的可行性，读卡器能够稳定可靠地工作。 [1]