CDMA手机没有GSM系统上常见的IMEI,但CDMA系统内有其独有的ESN和MEID,很多朋友在遇到CDMA终端时经常会问CDMA终端如何获取IMEI。为了说明白这个问题,我先引用一下资料:
ESN (Electronic Serial Numbers):电子序列号。在CDMA 系统中,是鉴别一个物理硬件设备唯一的标识。也就是说每个手机都用这个唯一的ID来鉴别自己, 就跟人的身份证一样。一个ESN有32 bits, 也就是 32/8 = 4 bytes。随着CDMA移动设别的增多,ESN已经不够用了,所以推出了位数更多的MEID。ESN用8位的16进制来表示,如0x801EA066。
(上图中的ESN,10进制为22404361424,通常用16进制表示E0428CD0,该手机没有MEID)
MEID(Mobile Equipment ID):手机设备识别码。前面说过了,由于CDMA移动设备增多,导致原来8位的ESN不够用,所以推出了56bits的MEID码,MEID可以表示为14位的16进制码,如0xA1000002B0BEB2。开头的0xA表示CDMA手机,如果是0x9, 就表示多模手机。
(上图为酷派5910手机MEID,该手机没有ESN,MEID是“9”开头,表示是多模手机,该手机为双卡双待手机)
pESN(pseudo ESN):伪ESN。pESN的推出是为了解决前向兼容的问题,pESN的格式与ESN是完全一样的,唯一的区别是pESN是采用0x80开头的。将MEID转为pESN,就可以在支持ESN的C网内正常使用。
那么上面这段资料简单的说呢就是,CDMA设计之初使用的是ESN来区别每一台终端的,不过由于一开始设计时考虑不够长远,ESN的容量明显太小了,后来ESN就不够用于区别每台终端了,会出现重码。为了解决这个问题,就又设计了一个MEID。MEID虽然足够长,不会引起重码问题,但由于现有的用ESN来区别终端的网络仍然在运行,同时为了保持与没有MEID的老款手机的兼容(总不能你网络升级了,老手机就不让人家用了吧),所以在CDMA后台这边就把所有MEID经过转换,变成pESN(伪ESN)来区别终端。这样好了……现在你一个手机出厂时会有一个MEID(已经不是ESN了),然后用户会将自己的号码使用在这个终端上(不管是插卡还是烧号),网络后台会将MEID转换为pESN,转换的过程基本上是不可逆的(MEID转化为pESN具体的方法是,56 bits的MEID通过SHA-1 hash算法,挑出后6位,然后在开头加上0x80),最后网络这边用pESN区别每台终端。
很多人都问,从CDMA系统的话单上会调出一个类似机身码的号码,这个是什么?
很难讲。首先我不知道你的系统是如何获取这个号码的,很难讲是个什么号码被存储起来了。所以想像GSM系统一样用IMEI做工作的朋友,在CDMA这里需要另想其他办法。
另外还要再多引用几个参数,那就是UIMID、EUIMID和pUIMID,这两个参数引入后,呵呵,估计绝大部分的人都要绝望了。为什么这么说呢,因为在国内电信CDMA网络是机卡分离的系统,不同于国外烧号的CDMA系统,机卡分离后,手机本身自己的ESN就作废了,为了解决这个问题,就由手机的UIM卡(可以理解为CDMA系统的SIM卡也可以)内置一个UIMID,用于替代ESN。这个UIMID因为是与ESN由同一个机构管理,共用ESN资源,所以是同样面临被替代的问题,所以就又发展了pUIMID,这个不用解释了,伪UIMID,与前面的pESN作用相同,生成方法也基本相同,只不过是由另一个参数EUIMID来生成的,这个EUIMID就是前面提到的MEID的机卡分离系统的替代品。那么简单的说就是,UIMID替代了ESN,EUIMID替代了MEID,pUIMID替代了pESN。
只不过,唯一的区别在于,在CDMA 1X系统中(也就是普通2G语音、短信、1X上网中),采用的是UIMID/pUIMID这样的参数来完成网络鉴权。而在CDMA Evdo(也就是俗称3G上网)系统中,采用MEID这样的参数完成鉴权。因为EVDO的上网设备比较新,基本上都有MEID,所以不存在ESN兼容问题,所以才会在EVDO 3G上网时启用MEID来鉴权,而2G语音、短信的手机很可能无法使用MEID,只有ESN,所以才不能完全启用MEID这个参数。这里唯一留下的反查号码的空隙,就是这个EvDo上网,这里没有用UIM卡里的EUIMID,而是使用MEID。
所以呢,了解了原理后,我觉得在国内想用CDMA手机自身MEID来反串手机号码,基本上是很困难了。除非以上刚才罗列的这些系统和参数再进一步有所改进。不然,按照刚才说的这个尿性,想通过一个手机反查号码,基本上只能是这样的步骤。首先前提这个手机可以3G上网(如果是不上网的手机,就不用继续了),这样它会在系统中留下手机的MEID信息,和IMSI信息。当更换手机号后,并且确定这部手机又3G上网过,再查询MEID和对应的IMSI,才可以查到对应的手机号码。所幸现在手机不上网的很少了,所以也算不幸中的万幸。
最后说些无关紧要的话吧,既然已经知道CDMA后台系统是如何将MEID转换成pESN的,那么就可以自己来完成这一步骤,甚至可以逆向猜解。的确,我刚才是说过这个过程是基本不可逆的,但通过一定的方法碰撞,是有可能得到pESN转换前的MEID的,原理就是通过不断列举MEID,然后通过刚才提到的算法计算出pESN,与你需要的pESN去对比,如果对比成功说明MEID可能是你需要的那个。但这不能准确确定,因为存在多个MEID对应同一个pESN的问题,所以需要尝试很多次才能穷尽所有可能。当然了,想通过在后台对某个pESN来做工作,必须是要预先知道他的pESN的,那么就可用这样的方法自己推算出来。
顺便附上工具吧:
MEID Converter
可以看到,通过输入ESN,可以得到ESN的10进制号码。或者输入MEID,可以得到pESN和对应的pESN十进制号码。
ESN/MEID转换
这个工具可以将ESN号码后六位输入,然后自动穷举MEID来查找对应的MEID,目前的查找速度并不快,可能需要一点时间来完成这样的查找。
目前不知道这些工具是否支持多模手机的MEID查找。因为多模手机的MEID不是A1开头的,是99开头的,大家可以自己看看。有需要的朋友就下载吧。
相关资料:
MEID相关问题解答:http://wenku.baidu.com/view/9aed75f37c1cfad6195fa70e.html
MEID的发展现状与问题分析:http://www.docin.com/p-555856641.html
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。