初探IMEI【译】

简介:
一直想清楚的理解IMEI是什么,但是怎么也找不到合适的下笔思路,最终还是把imei.org上的这篇介绍翻译过来,做个记录。
原文地址:http://imei.org/2013/05/imei-number-decode/
译文:
你可能听说过IMEI,也知道它是移动设备的标识ID,但是你知道它的具体功用吗?IMEI自手机出产后就伴随其一生,究竟什么是IMEI,如何理解它的数字含义?
智能手机是全世界范围内偷窃事件的“主角”,不要低估IMEI的重要性,把IMEI备份一下是一个明智的决定。本文会解释为什么我们的手机需要IMEI,同时会列出如何找到并记录IMEI的技术方法。
IMEI是什么?
IMEI的全称是International Mobile Equipment Identity,每台设备都必备的一个唯一标识,用来区分设备与设备。当你购买一台新的手机设备时,你会在收据上看到IMEI;当你需要修理手机时,手机服务商可能会要求你提供IMEI。标准的IMEI是一个14位数字,同时也有IMEI/SV这样的16位数字形式(仅新设备有),SV是由软件设计的。当然苹果的iPhone GSM有 15位数字,而CDMA是14位数字。不管如何,IMEI的设计动机不仅仅是一个ID标识,它也可以用来阻止网络访问,还可以用IMEI来进行运营商解锁。
如果你的手机失窃,你可以将情况上报到你的手机服务商,他们会阻止这台手机进行一切的网络访问,同时警察也可以通过IMEI来识别丢失的设备。
IMEI怎么查看?
多数手机在你输入拨号*#06#后就能看到IMEI了,当然也有其他的一些方法:
• iOS:Settings->General->About(设置->通用->关于手机),这样也可以看到有IMEI(需要自己下滑寻找)。iPhone手机同样可以在sim卡托盘上找到IMEI,当然如果你不是使用原生的托盘就看不到了。
• Android:Settings->About(设置->关于),这里可以看到IMEI,序列号和其他的信息。
• 老的Sony或者索爱:输入 * Right * Left Left * Left *
• 新的索爱或者Blackberry:Options->Status(选项->状态)
你可以使用http://imei.org/check-iphone-carrier/ 服务通过输入IMEI来获得手机的运营商信息
如何解释IMEI:
2004年以来,统一的IMEI格式为:AA-BBBBBB-CCCCCC-D,这是一个15位数字号,其中:
• AA:两位数字号,表示Reporting Body Identifier,用来表示由TAC(Type Allocation Code)分配的GSMA。
• BBBBBB:TAC(FAC)的剩余部分。
• CCCCCC:机器序列号(SNR)
• D:Luhn 检测位
举例来说,现在iPhone 5的TAC为01-332700,而三星的Galaxy S2为35-853704,而C部分的SNR是由手机制造商自定义的生产序列号,最后一位校验位是通过算法来生成的。
IMEI是手机相关的,与sim卡无关,当你的手机被偷后,无论手机重置还是更换sim卡,IMEI都是不变的,这时你是可以通过联系你的手机服务商来锁住手机的服务的。如果这行不通,可以联系你所在地区的运营商来锁定IMEI对于运营商网络的访问。
有时候IMEI是变化的,尽管这不合法。有些窃贼有能力将合法的新的IMEI安装到你的手机里从而重新启用这个手机。另外鉴于犯罪动机,还有人会利用IMEI来监听设备。
综上,IMEI是手机的重要的唯一性ID,你需要去备份并记住它。

翻译结束。
最后附加一些说明。
关于TAC:http://en.wikipedia.org/wiki/Type_Allocation_Code
关于最后一位校验位的算法:
以14位IMEI为例,校验位假设是C
1. 从后向前,记录下每隔两位的数字,记为列表A
2. 从后向前,记录下除A以外的数字,记为列表B
3. 将A中的数字都乘以2,如果一个数字乘以2后大于10,那么把这个结果拆为两个数字(个位数一个,十位数一个),记为列表A'
4. 把A'和B中的所有数字求和,记为S

计算S*9%10,记为F,如果F等于C,校验通过,否则IMEI有问题。


 
 
   1: if len(arg0)==15:
   2:             check_bit = int(arg0[-1])
   3:             i = len(arg0)-2
   4:             l,r = [],[]
   5:             while i>=0:
   6:                 m = int(arg0[i])*2
   7:                 if m<10:
   8:                     l.append(m)
   9:                 else:
  10:                     l.append(m%10)
  11:                     l.append(m/10)
  12:  
  13:                 r.append(int(arg0[i-1]))
  14:                 i-=2
  15:             l.reverse()
  16:             r.reverse()
  17:             if sum((sum(l),sum(r)))*9%10==check_bit:
  18:                 return True
  19:         return False
目录
相关文章
|
算法 5G
【5G NR】手机身份证号IMEI与IMEISV
手机上的“IMEI”是指国际移动设备识别码(IMEI),通常称为手机序列号。它用于识别移动网络中的各个独立手机和其他移动通信设备,相当于手机身份证号,它是全球唯一的。
897 0
【5G NR】手机身份证号IMEI与IMEISV
|
监控 安全 JavaScript
浅谈移动端设备标识码:DeviceID、IMEI、IDFA、UDID和UUID
场景 : 客户提出一个问题就是把用户的登录记录和设备绑定到一起,就是每个人都是固定的设备(可能是安全因素吧)。一开始想的是回去设备的IMEI号和用户账号绑定起来,结果发现IMEI不对外开发,只能另寻他法,最后通过获取设备序列号作为唯一标识。
浅谈移动端设备标识码:DeviceID、IMEI、IDFA、UDID和UUID
|
4月前
|
安全 开发者 iOS开发
如何获取安全获取苹果udid,imei
【8月更文挑战第12天】在iOS系统中,苹果出于隐私考量已禁止开发者直接获取设备UDID与IMEI。替代方案包括:1) **供应商标识符** (`[UIDevice currentDevice].identifierForVendor`),适用于同一开发者账号下的应用,可能随应用卸载重装而变化;2) **广告标识符** (`[ASIdentifierManager sharedManager].advertisingIdentifier`),用于广告追踪,用户可选择重置或限制。处理这些标识符时务必遵守苹果隐私政策。
|
API
如何获取IMEI号和MEID号
如何获取IMEI号和MEID号
427 0
|
存储 Java Android开发
2022最新手机设备标识码(IMEI、MEID、UDID、UUID、ANDROID_ID、GAID、IDFA等)教程
2022最新手机设备标识码(IMEI、MEID、UDID、UUID、ANDROID_ID、GAID、IDFA等)教程
1298 0
2022最新手机设备标识码(IMEI、MEID、UDID、UUID、ANDROID_ID、GAID、IDFA等)教程
|
iOS开发
IPhone 获取IMSI序列号
IPhone 获取IMSI序列号
269 0
|
Android开发
Android 获取手机 Imei 和 DeviceId
从 Android 10 开始,应用必须具有 READ_PRIVILEGED_PHONE_STATE 特许权限才能访问设备的不可重置标识符(包含 IMEI 和序列号)。
1725 0