卡贴的imis_gid1_gid2参数解释

机制与原理:

sim卡的身份主要包含iccid imsi GID1 GID2这四个参数,以区分不同sim卡归属。

iphone锁定sim卡方法是通过选取这几个参数进行锁定。ios在激活基带的时候,iphone会把sim卡的这几个参数打包进激活请求包内,同时也会加入imei等参数。

ios的激活服务器会根据imei查询它的数据库把它对应的策略取出,如果是无锁机,它就就不比对sim的参数,也就是任意sim卡都可接受。如果是这个imei是有锁机的策略,服务器就会继续验证sim卡的信息是否符合这个imei的锁定策略,如果符合就把激活证书签发给iphone,这个证书也包含了sim卡信息验证条件,手机收到这个证书后也会根据证书要求对sim卡进行一样的验证步骤,如果插入的sim卡不符合证书要求的,就会提示sim卡无效。

为什么会有iccid通用激活?

在某些策略中,运营商会给出一段特别的iccid范围,以区别这这些卡在iphone使用时配置参数需要不一样,或者是某种测试需要。当前卡贴使用的“通用激活”,激活的时候提交给苹果服务器的sim卡信息包含有特殊效果的iccid和imsi归属美国at&t公司的,苹果收到这样的激活请求时,会允许大部分的imei通过,签发激活证书。

IMSI是主要的识别参数:

IMSI的全称是International Mobile Subscriber Identity,国际移动用户识别码。IMSI由移动国家代码(MCC,Mobile Country Code)、移动网络代码(MNC,Mobile Network Code)和移动订户识别代码(MSIN,Mobile subscription identification number)依次连接而成,MCC 和MNC是国际电联分配给各个商用运营商的唯一识别码。苹果主要是通过判断imsi的的MCC和MNC是否归属IMEI的锁定策略,也就是卡贴模拟的主要对象。

 GID1和GID2识别参数:

它们是SIM卡文件系统里的非必要文件,叫“组ID码”,主要用于同一个运营商发行的sim卡,需要区别用于不同的业务时,而采用这个id进行识别与区分。

为什么需要采用这个参数?

这个参数的主要使用者还是美国的运营商,美国是联邦制国家,各个州的法律相对独立,但是基础运营商是共用的,美国的主要基础运营商是AT&T,Sprint,Verizon,T-mobile。然后衍生出很多虚拟运营商。这些虚拟运营商都是租用基础运营商的网络,发行自己的SIM卡和资费套餐。但是网络名称,APN接入参数等都要与基础运营商发行的sim卡有区别,这就要求手机需要识别比imsi更多的参数才能准确识别出当前使用的sim卡是否是虚拟运营商,一个虚拟运营商可以跟多个基础运营商合作,这就会发生这个虚拟运营商发行的SIM卡会有不同的MNC,这样对只锁定sim卡imsi的作为识别方法的策略就会有影响,这样的客观现实,就要求手机生成商对这些sim卡的使用许可做更详细的判断,自然就会使用GID参数作为识别对象。

iPhone的锁定SIM卡的方法:

了解了锁定方法,才能更好的理解解锁方法。锁定sim卡是手机制造商与网络运营商相互达成协议的结果,运营商要求定制版的手机,仅能支持自有SIM卡才能使用。但是运营商的SIM卡的发行又受到MCC,MNC的限制。有的运营商旗下没有虚拟运营商,所以它使用MCC+MNC作为识别参数足够了,有的运营商有虚拟运营商合作,就要求手机设备商进行区别了。有的虚拟运营商采用的iccid号段进行区分,有的使用GID进行区分,所以苹果都需要给出相应的识别方法。苹果的ios系统包括了全部合作的运营商sim发行需求,不管合作运营商要求识别imsi 还是iccid还是gid,都可以进行准确区分。

卡贴做的事情

卡贴的主要作用就是把sim卡的身份信息进行修改,以通过iPhone的识别。所以涉及到的参数是 ICCID/IMSI/GID1/GID2这四个参数,只要把这四个参数进行对应的修改,就可以激活任意一台有锁的iPhone设备。

我们如何知道iphone锁定了哪个运营商?

手机的imei是硬件识别的唯一码,苹果也是根据这个唯一码进行索引并分配锁定策略的。在手机的出厂阶段,就已经加入数据库,哪些imei码的手机是销售给哪个运营商的。这个锁定信息是可以通过苹果的数据库接口进行查询到的。唯一来源就是苹果的数据库。而且这个查询接口是半公开状态,很多公众号都提供付费查询。

确定了锁定运营商如何设定参数?

由于参与定制机型的运营商有很多,卡贴产品的设置列表不足予囊括所有运营商,所有都带有“input imsi“这个入口,可以通过直接输入IMSI的MCC和MNC参数设定卡贴解锁的对象。之前几乎没有虚拟运营商参与iphone的定制,所以imsi输入就足够应付常见的机型,但是后来有更多的虚拟运营商参与了iphone定制,imsi的输入不能满足了,就需要加入GID参数的输入。

这些参数可以从ios系统的carrier bundl文件里查询到当前与苹果合作的所有运营商以及使用的参数。

以下内容就是我们分享的参数文件与使用方法。

下载carrier bundl文件    下载查看工具

解压文件后,可以看到很多子文件夹,这里包含了所有运营商的mcc和mnc,还有运营商名称。

filelist.png


  举sprint 运营商为例子

sprint_gid.png

文件夹中就可以看到这个直接以imsi的mccmnc为头部310120后加GID2是01为文件名,这个名称已经指出,只要是sim卡的imsi是310120而且gid2的值是01,手机就会加载这个文件里边的配置来驱动这个sim卡。

sprint2.png

进入这个文件夹,就会看到里边包含好多个文件,第一个文件夹是签名文件,签名的意思是,这些文件都是已经进行签名的,读取的时候需要对比签名,如果有修改就会被丢弃,识别为文件破坏,不被采用。其中carrier.plist包含了一些设定值。

simlist.png

从这个文件里可以看到sprint公司要求iphone识别这些sim卡为sprint的网络支持的sim卡,加载的apn 彩信配置也要以这个文件为基础。比如是否支持热点分享等都在这个文件指定。从这个文件可以看出,即使我们不设定gid,而改为设定iccid是89011201开头的iccid提交,手机也可以接受它。

我们再挑一个虚拟运营商的配置看看:

boot.png

这个虚拟运营商是挂在at&t网络下的,但是它的配置识别就需要使用310380,并且gid1需要是38,这个就是设定卡贴解锁 这个运营商时需要 设定参数3103800,并且GID1需要设定38,设定后这个虚拟运营商锁定机型就能被激活,然后通过tmsi方式获得信号。

我们超雪的卡贴根据新的变化,进行了优化,在V1.33版本,加入gid的直接输入。这样可以解决在没有iccid的情况和不需要最新ios版本的情形下直接激活任意机型,获取完整的激活证书,比如中国电信需要的cdma网络证书。

gid.jpg

另外ipcc的作用就是,使用新的版本覆盖掉ios系统当前使用的运营商配置文件,ipcc文件可以从beta版本的ipsw文件里解压缩提取出来,也可以通过越狱系统,把完整路径下是文件进行整体的狸猫换太子的操作。也就是ios系统按照imsi的识别路径进行了文件调用,但是调用的文件以及被认为的整体替换掉了,这样就把配置全部匹配了。比如解锁att的机型,ios系统按照att的文件路径取得文件内容,正常条件下取得是att的文件,但是如果通过越狱替换了这些文件,ios取得的就是 你替换掉的文件了,比如你用中国移动的去替换了。那ios取得是中国移动的,在关于本机显示的名称就不是at&t而是 中国移动。热点之类的都正常显示,lte也显示为4G,频点参数也正常,信号会更强。

  • 软件
  • 固件
  • 其他