一:了解Sim卡和GSM网络登录步骤的基本知识

(一)名词解释:

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

(二)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相同,则认为该用户合法。
下图是手机的登录网络的过程图:

SIM卡基础知识-LMLPHP

二:所需设备、软件

硬件设备:
1.一个凤凰芯片的SIM卡读写卡器
2.JDM编程器
3.16F877卡 一张(64K和256K都可以,在下面的步骤中有一点区别)
4.自己的使用的sim卡 一张
5.iPhone一台及随机带的AT&T sim卡 一张
6.有com口的PC一台

软件(附件有下载):

1.读卡器驱动
2.Simscaner,woronscan,simsearchk
3.icprog
4.Sim-Emu 6.01 Configurator v2.0
5.SIM_EMU_6[1].01_iPhone
6.simdata

三:破解自己的sim卡imsi 和ki

1.确定你自己的sim卡是v1版的卡还是v0版的卡,规律如下:
中国移动的卡:看你的SIM卡背面的iccid码,第三行的前面两位是sim卡的制造年份。如果是00、01、02、03、04,那么你这个卡是v1卡,破解非常容易。如果是05、06、07,那么可以肯定是v0卡,同样可以破解!
中国联通:界限比较模糊,它的年份区别是iccid的第二行第2、3位数字表示。00、01、02、03、04都是v1卡,05上半年是v1卡,下半年是v0的,之后都是v0.但是根据地区的不同,依然有05、06年的卡是v1的卡。

2.安装读卡器驱动,插入自己的Sim卡
(1)如果你的卡是v1卡(根据判断,如果不能判断做v0卡处理)  
运行simmax—simscaner软件,出现软件界面后在菜单栏点击“扫描备份”选择“扫描”

出现提示不用管它“确定”,程序开始链接读卡器。链接成功后出现解码界面,直接点击"解码”。

1小时左右,提示破解成功,并得将到一个dat文件提示你保存,需要输入密码,可以为空,直接回车存放路径自己选择。

此时你已经得到了主要的ki文件,可以使用simdata等软件查看dat文件内包含的iccid、imsi、smsp几组值,将它们明文保存下来。

(2)如果你手上的是v0卡,最为关键的是v0卡的破解
第一步:进入“设备管理器” 查看读卡器的端口 
第二步:一个放大镜图标的程序,它就是破解v2卡的一个主力工具simsearchk1.3。打开这个软件。在com框选择好刚才在设备管理器看到的端口号 com x  频率设置成19200(高速),然后点击“连接”   上方的大框就会显示ATR=一串数字,那就表示“连接”成功,然后按“读卡”软件就开始破解sim卡了,“次数”那个框格在数数。这需要等待,你准备一个晚上吧。快的数40000次就可以了,慢的要100万。
注意:如果你的点链接后ATR返回值=00,那就端口不对,或者是频率不对。请检查你读卡器边上的小开关,靠近接口是高速19200.远离接口那端是9600(低速),有的sim卡是不支持高速破解的,那么就要跳到低速破解(这提到的是huczi卖的那种读卡器)!
第三步:耐心等待之后,simsearchk计算成功!小方框里会提示你,恭喜你,你的卡可破解,第x组ki:xxxx  (到了这里,你就注定能成功了),如果没有等它解卡成功夜不要气馁,还有其他方法可以破解的。那些是进级的方法就不在这里说先了。

第四步:关闭第五步的软件,打开v2卡软件包里的woronscan1.09.exe。同样先要设置端口,在菜单栏点击”选项“选择“phonix卡”,然后点“配置”选择正确的com和速率 然后点“确定”。
然后点“ki”图标,弹出一个窗口。会看见有个圆点默认在第1列的位置。你需要把点  点在刚才提示的  第x组的x+1列!举例,你得到第5组ki 1245,那么你就将圆点点在第6列的位置,把下方的“勾”也点上,然后把,12填在“勾”下方的框格,再把45填在再下方的框格。然后点击“开始”软件开始数数,数512次,就有结果,它会提示“可能的配对”

如果能够得到可能的配对,就表示当前列的ki是正确的,得到的可能配对用于“下一个列”   下一个列是第几列呢?这个顺序决定于,刚才第一个软件提示的:第x组ki”的x。我们的测试顺序以“列”为标准。
测试顺序非常重要,要严格遵循
提供第0对KI时,就填在1列 调试顺序为: 5,3,7,2,6,4,8
提供第1对KI时,就填在2列 调试顺序为: 6,4,8,1,5,3,7
提供第2对KI时,就填在3列 调试顺序为: 7,1,5,2,6,4,8
提供第3对KI时,就填在4列 调试顺序为: 8,2,6,1,5,3,7
提供第4对KI时,就填在5列 调试顺序为: 1,3,7,2,6,4,8 
提供第5对KI时,就填在6列 调试顺序为: 2,4,8,1,5,3,7
提供第6对KI时,就填在7列 调试顺序为: 3,1,5,2,6,4,8
提供第7对KI时,就填在8列 调试顺序为: 4,2,6,1,5,3,7
圆点与勾的规则:圆点是是测试某一列就点在某一列,勾 就是测试过的和测试中的(圆点所在列)都要打上。
还是上面的例子,我们得到的是第6列,所以应该选择:2,4,8,1,5,3,7 的破解顺序,如下图。

注意:有的朋友有可能会碰到最后一组ki出不来,原因是:前面的某一列存在两组ki值能够得到可能值,你只是测试到了一组有可能值,就往下一列测试了,这就是原因。建议测试过程中用一张纸记录,并且测试完得到的所有“可能配对”。
只要你有第一个ki,那么就一定能成功的。成功后,会提示ki是什么(一串很长的字串)还有imsi也会提示出来,复制出来,粘贴在写字板里 去掉中间的空格。

四:获得AT&T卡的的iccid和imsi

将你自己的sim卡取下,插入at&t的sim卡,用刚才安装的simscaner查看iccid和imsi,明文保存并记录。

五:烧写SIM_EMU_6.01_iphone.HEX到877卡中

插好jdm烧写器,将silver卡插入jdm烧写器的插槽,注意芯片的位置。

然后打开icprog程序,下面4张图是设置界面。

这一步是将经过修改的simemu16进制文件写入877卡的rom里。

烧写中

写入成功

六:把SIM_EMU_6.01_iphone_EP.HEX写到 877卡的EEPROM

将877卡取下插入usb读卡器中,安装Sim-Emu 6.01 Configurator v2.0软件,然后打开Sim-Emu 6.01 Configurator v2.0。在steup配置号端口com和频率例如com5 9600,然后电击eeprom。
如果你用的是256K的卡:
会出现No card inserted的提示

点Card中的Read, 此时软件就会识别到已经写好经过改编的sim emu系统的silvercard,刚才红色NO CARD INTSERTED变成了黑色的SIM EMU 6.01s,并读取卡片中的eeprom

马上选择cancel,会直接出现如下界面,如果你用的是64K的卡也将直接是此界面:

点Disk里的Read,载入“SIM_EMU_6.01_iphone_EP.HEX”,然后点Card里的Write 写入到877卡的 EEPROM 。
输入pin1,默认1111,点ok,输入pin2,默认1234,点ok,并把pin1设置成Disable PIN。

七:将ki imsi iccid等数据,写入877卡

选择configure选项,在config mode 中点选  card,然后点选read from card,提示输入pin1码,1111,然后返回了界面, 再次选择read from card,此时软件开始从0位置读取内容,直读到9.你会发现0和9位置是红色的,表示这是有数据的位置!然后自动回到0的位置,并显示出0位置的号码信息。

此时是0位置,将你自己由先前破解得到的sim卡数据数值进相应的框格中。只需要改写imsi 框格 ki框格和sms cetre框格的数据。(格式如+8613800200500)。数据格式有准确要求,每两个数值之间都要,用空格隔开。
最好是在记事本中将数据间添加空格后,复制进去。 (改写imsi的时候,贴币哦主要不要去动你的鼠标滚轮,会使数据消失,数据消失后,请关闭软件重新开始)。PIN1填1111,PUK1填11111111,在下方的iccid中填写AT&T卡的iccid (中间没有空格,最好使用复制功能,复制进去,手动输入容易出错)。其他选项都不要改动!

然后选择第9位置,此时的imsi是填写AT&T的imsi,注意空格,反复检查!下面的ki,是填写 你自己sim卡的ki,可以复制进来,pin1填写1111  puk 填11111111(如果已经填好就不要再填了),然后直接点击 write to card。(如果提示你要填写pin2码,那么就填写1234,puk2码是12345678)。提示你输入pin2码   1234,确定后提示ok,并返回先前窗口,再点击  write to card。提示写入成功!

05-08 15:34