获取手机设备的IMSI / IMEI 信息


IMSI 全称为 International Mobile Subscriber Identity,中文翻译为国际移动用户识别码。它是在公众陆地移动电话网(PLMN)中用于唯一识别移动用户的一个号码。在GSM网络,这个号码通常被存放在SIM卡中。

IMEI 全称为 International Mobile Equipment Identity,中文翻译为国际移动装备辨识码, 即通常所说的手机序列号,用于在手机网络中识别每一部独立的手机,是国际上公认的手机标志序号,相当于移动电话的身份证。序列号共有15位数字,前6位(TAC)是型号核准号码,代表手机类型。接着2位(FAC)是最后装配号,代表产地。后6位(SNR)是串号,代表生产顺序号。最后1位(SP)一般为0,是检验码,备用。国际移动装备辨识码一般贴于机身背面与外包装上,同时也存在于手机记忆体中,通过输入*#06#即可查询。

Android中获取IMSI和IMEI的代码很简单,如下:view sourceprint?1 TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 

2 String imsi = mTelephonyMgr.getSubscriberId(); 

3 String imei = mTelephonyMgr.getDeviceId(); 

4 Log.i("IMSI", imsi); 

5 Log.i("IMEI", imei);

另外不要忘了在AndroidManifest.xml中加上读取手机状态的权限view sourceprint?1 <uses-permission android:name="android.permission.READ_PHONE_STATE"/>



===========================


IMSI国际移动用户识别码(IMSI)   international mobile subscriber identity 

国际上为唯一识别一个移动用户所分配的号码。

从技术上讲,IMSI可以彻底解决国际漫游问题。但是由于北美目前仍有大量的AMPS系统使用MIN号码,且北美的MDN和MIN采用相同的编号,系统已经无法更改,所以目前国际漫游暂时还是以MIN为主。其中以O和1打头的MIN资源称为IRM(International Roaming MIN),由IFAST (International Forum on ANSI-41 Standards Technology)统一管理。目前联通申请的IRM资源以09打头。可以看出,随着用户的增长,用于国际漫游的MIN资源将很快耗尽,全球统一采用IMSI标识用户势在必行.

IMSI共有15位,其结构如下:

MCC+MNC+MIN

MCC:Mobile Country Code,移动国家码,共3位,中国为460;

MNC:Mobile Network Code,移动网络码,由两位数字组成,用于识别移动用户所归属的移动网.MIN:移动用户识别号码,是一个十位的等长号码.

可以看出IMSI在MIN号码前加了MCC,可以区别出每个用户的来自的国家,因此可以实现国际漫游。在同一个国家内,如果有多个CDMA运营商,可以通过MNC来进行区别. IMEI    国际移动装备辨识码    International Mobile Equipment Identity由15位数字组成的"电子串号",它与每台手机一一对应,而且该码是全世界唯一的。每一只手机在组装完成后都将被赋予一个全球唯一的一组号码,这个号码从生产到交付使用都将被制造生产的厂商所记录。 首先你要知道什么是手机串号,IMEI俗称“串号”存储在手机的EEPROM(俗称码片)里,每一个移动设备都对一个唯一的IMEI。其组成结构为TAC(6位数字)+FAC(两位数字)+SNR(6位数字)+SP (1位数字)。TAC(设备型号核准号码),由欧洲型号认证中心分配。如果熟悉并了解这个号码对我们今后识别手机会起到非常大的作用.首先TAC码前三位在不同的时期会发生变化,过去的TAC码前三位在现在的手机上不会出现。过去的一些老型号的手机基本上都是446/448开头,如moto v328 nokia 7110,而且即使同一部手机在不同的时期也会有不同的TAC码如大家最熟悉的8210升级8250,如果前三位是448902就不能升级,因为CPU不同。因此过去所说的只要是同一型号的手机TAC码一定一样的说法是不够准确的,再如爱立信的同一型号手机T39MC在不同地区的地方亦会有不同的号码大陆行货为520406香港则为520407。我们知道这些区别后就可以通过TAC码来进行“设备识别”了,而不必去费心的去牢记IMEI的7.8位数字代表的产地。 

另外如果是同一型号的手机其TAC码不同至少说明该机在硬件上有差别,比如NOKIA8210,采用老版本CPU的8210的TAC码是448902,而一般能够写入8250软件版本TAC码则是350开头。实际上TAC码前三位代表的更多的是手机FTA后分配IMEI的时间,真正的设备型号鉴别还是后三位。在2手市场JS通常用T20的主板换上T29的外壳冒充T29售卖,然而T20TAC码为520259真正的T29SC则为520341,因此在拿到这样的手机的时候你只需要查看IMEI的TAC就能够了然于胸,但这并不意味IMEI7,8位没有作用,FAC(工厂装配码)由厂家编码,通常表示生产厂家及其装配地。这也是过去我们最为关注的数字,因为一般作为鉴别产地的号码,它能有非常有效的帮助用户识别手机来源和真伪。比如NOKIA的40/60地球人都知道代表产地是北京和东莞,只要不是这两个号码都被视为水货。而且如果我们结合TAC更可以进一步了解该机的真实身份,例如前面说过T20/T29,我们知道T29是爱立信在北京生产的而T20则产于南京,那么如果一部T29的IMEI上是520259-63。。。呵呵~~那么肯定是假货了。 

有时FAC也不能完全证明手机是否是行货,T68上市后热买一度造成缺货,因此爱立信代理商调集了一部分马来西亚生产(FAC码71)紧急救援,因此这部分有入网许可证T68同样是“行货”。(前面我们我们说过了IMEI和取得入网许可证之间的联系)不过,需要指出的是这部分T68仅限于前期一部分软件版本为R1B的T68。 

FAC码也不是一成不变的即使是同一产地的产品,如西门子3508I和MOTO C300因为其产量巨大已经从开始的37升级到40,而C300的行货FAC也有80/81/82。尤其重要的是欧洲型号认证中心今年重新分配了IMEI,FAC被和TAC合并在一起,FAC码的数字统一从00开始,因此无论什么型号什么品牌其7,8位均为00,如最新的C289,三星V200 、西门子A55、 索尼爱立信T618都在手机上出现了351***00这样的IMEI。幸好我们有前面介绍过的TAC码鉴别办法,如T618的IMEI虽然过去的FAC现在统一为00但港行和大陆行货TAC后三位上还是有差异的.港行为351253大陆T618为351254,其实这里已经说明了一个问题351253代表的是T610(中文繁体版)351254则为T618。而TAC码的真正含义正在于此--设备型号核准。 

接下来该说SNR码了。SNR码即序号码,也由厂家分配。识别每个TAC和FAC中的某个设备的。每一部手机的SNR都不会一样.简单的说该号码可以说明手机出产日期的先后,通常数值越大说明该机型出厂时间越晚,所以如果一部刚上市不久的手机的IMEI上出现了6位的数字你就得了小心了,因为刚上市不久的手机其SNR最多不会超过四位,大家可以在购机时留意一下。也许这可以作为鉴别手机是否被JS修改IMEI的好办法之一。 

SP备用码,顾名思义用来做备用的,关于SP只有一点需要说明现在的SP基本上没有象过去文章所说那样“一般为0”了,其号码由厂家做设置,可忽略。 

当然,有些手机在IMEI 上做了自己的定义.爱立信手机在待机时输入*#06#就会出现17位的IMEI,其最后两位的主要作用是用来识别软件版本。这里需要说明的是三星V200也开始使用17位的IMEI了,最后两位的主要作用是用来识别软件版本,一般来说数值越低版本也越低,比如T618的R1A版本为02而R1F版本则为03,最新的R1L版本是05。

   IMEI为TAC + FAC + SNR + SP
    其组成为:
1、前6位数(TAC)是"型号核准号码",一般代表机型。
2、接着的2位数(FAC)是"最后装配号",一般代表产地。
3、之后的6位数(SNR)是"串号",一般代表生产顺序号。
4、最后1位数(SP)通常是"0",为检验码,目前暂备用。

IMEI码贴在手机背面的标志上,并且读写于手机内存中。它也是该手机在厂家的"档案"和"身份证号"。

如何获得手机的IMEI码:可以在手机上按“*#06#”获得手机的IMEI码。 



你可能感兴趣的:(android,mobile,三星,中国移动,Nokia)