初探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
目录
相关文章
|
存储 算法 JavaScript
判断奇偶数
判断奇偶数
|
5月前
|
存储 编解码 API
3步搞定!阿里云视频点播入门保姆级教程
本文为阿里云视频点播系列教程首篇,面向零基础用户,详解从开通服务、上传视频、转码处理到播放器嵌入的完整流程,并提供代码示例与常见问题解决方案,助你快速上手音视频应用开发。
|
机器学习/深度学习 存储 人工智能
MNN:阿里开源的轻量级深度学习推理框架,支持在移动端等多种终端上运行,兼容主流的模型格式
MNN 是阿里巴巴开源的轻量级深度学习推理框架,支持多种设备和主流模型格式,具备高性能和易用性,适用于移动端、服务器和嵌入式设备。
3824 18
MNN:阿里开源的轻量级深度学习推理框架,支持在移动端等多种终端上运行,兼容主流的模型格式
|
负载均衡 网络协议 C#
C#实现WebSocket实时消息推送技术详解
C#实现WebSocket实时消息推送技术详解
1279 2
|
Web App开发 数据可视化 JavaScript
动画墙纸:将视频、网页、游戏、模拟器变成windows墙纸——Lively Wallpaper
动画墙纸:将视频、网页、游戏、模拟器变成windows墙纸——Lively Wallpaper
1309 0
|
机器学习/深度学习 人工智能 自然语言处理
ChatGPT最强专业学习资料集锦
本文旨在整理一份可供参考和学习的专业ChatGPT相关资料,包括ChatGPT相关论文、Github项目、以及当前市场上出现的ChatGPT相关产品等。
ChatGPT最强专业学习资料集锦
|
监控 安全 网络性能优化
一文了解什么是网管型交换机和非网管型交换机?
一文了解什么是网管型交换机和非网管型交换机?
1578 0
|
编译器 Linux TensorFlow
【Deepin 20系统】Tensorflow2.x离线下载cifar-10-python.tar.gz如何配置使用cifar10.load_data()
文章讨论了在Deepin 20系统上使用Tensorflow 2.x时,如何通过离线方式配置使用CIFAR-10数据集。
485 0
|
存储 机器学习/深度学习 自然语言处理
Transformer 自然语言处理(二)
Transformer 自然语言处理(二)
757 0
Transformer 自然语言处理(二)
|
存储 缓存 NoSQL