﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Change Dir-随笔分类-翻译</title><link>http://www.blogjava.net/changedi/category/54730.html</link><description>先知cd——热爱生活是一切艺术的开始</description><language>zh-cn</language><lastBuildDate>Thu, 26 Feb 2015 03:07:48 GMT</lastBuildDate><pubDate>Thu, 26 Feb 2015 03:07:48 GMT</pubDate><ttl>60</ttl><item><title>初探IMEI【译】</title><link>http://www.blogjava.net/changedi/archive/2014/11/27/420789.html</link><dc:creator>changedi</dc:creator><author>changedi</author><pubDate>Thu, 27 Nov 2014 09:30:00 GMT</pubDate><guid>http://www.blogjava.net/changedi/archive/2014/11/27/420789.html</guid><wfw:comment>http://www.blogjava.net/changedi/comments/420789.html</wfw:comment><comments>http://www.blogjava.net/changedi/archive/2014/11/27/420789.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/changedi/comments/commentRss/420789.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/changedi/services/trackbacks/420789.html</trackback:ping><description><![CDATA[<p>一直想清楚的理解IMEI是什么,但是怎么也找不到合适的下笔思路,最终还是把imei.org上的这篇介绍翻译过来，做个记录。 </p><p>原文地址：<a href="http://imei.org/2013/05/imei-number-decode/">http://imei.org/2013/05/imei-number-decode/</a> 原文标题：<strong>What Is IMEI Number and How To Decode It</strong> </p><p>译文： </p><p>&#8220; </p><p>你可能听说过IMEI，也知道它是移动设备的标识ID，但是你知道它的具体功用吗？IMEI自手机出产后就伴随其一生，究竟什么是IMEI，如何理解它的数字含义？ </p><p>智能手机是全世界范围内偷窃事件的&#8220;主角&#8221;，不要低估IMEI的重要性，把IMEI备份一下是一个明智的决定。本文会解释为什么我们的手机需要IMEI，同时会列出如何找到并记录IMEI的技术方法。 </p><h2>IMEI是什么？</h2> <p>IMEI的全称是International Mobile Equipment Identity，每台设备都必备的一个唯一标识，用来区分设备与设备。当你购买一台新的手机设备时，你会在收据上看到IMEI；当你需要修理手机时，手机服务商可能会要求你提供IMEI。标准的IMEI是一个14位数字，同时也有IMEI/SV这样的16位数字形式（仅新设备有），SV是由软件设计的。当然苹果的iPhone GSM有 15位数字，而CDMA是14位数字。不管如何，IMEI的设计动机不仅仅是一个ID标识，它也可以用来阻止网络访问，还可以用IMEI来进行运营商解锁。 </p><p>如果你的手机失窃，你可以将情况上报到你的手机服务商，他们会阻止这台手机进行一切的网络访问，同时警察也可以通过IMEI来识别丢失的设备。 </p><h2>IMEI怎么查看？</h2> <p>多数手机在你输入拨号*#06#后就能看到IMEI了，当然也有其他的一些方法： </p><ul> <li>iOS：Settings-&gt;General-&gt;About（设置-&gt;通用-&gt;关于手机），这样也可以看到有IMEI（需要自己下滑寻找）。iPhone手机同样可以在sim卡托盘上找到IMEI，当然如果你不是使用原生的托盘就看不到了。</li></ul> <ul> <li>Android：Settings-&gt;About（设置-&gt;关于），这里可以看到IMEI，序列号和其他的信息。 </li><li>老的Sony或者索爱：输入 * Right * Left Left * Left * </li><li>新的索爱或者Blackberry：Options-&gt;Status（选项-&gt;状态）</li></ul> <p>你可以使用<a href="http://imei.org/check-iphone-carrier/">http://imei.org/check-iphone-carrier/</a> 服务通过输入IMEI来获得手机的运营商信息 </p><h2>如何解释IMEI：</h2> <p>2004年以来，统一的IMEI格式为：AA-BBBBBB-CCCCCC-D，这是一个15位数字号，其中： </p><ul> <li>AA：两位数字号，表示Reporting Body Identifier，用来表示由TAC（Type Allocation Code）分配的GSMA。 </li><li>BBBBBB：TAC(FAC)的剩余部分。 </li><li>CCCCCC：机器序列号（SNR） </li><li>D：Luhn 检测位</li></ul> <p>举例来说，现在iPhone 5的TAC为01-332700，而三星的Galaxy S2为35-853704，而C部分的SNR是由手机制造商自定义的生产序列号，最后一位校验位是通过算法来生成的。 </p><p>IMEI是手机相关的，与sim卡无关，当你的手机被偷后，无论手机重置还是更换sim卡，IMEI都是不变的，这时你是可以通过联系你的手机服务商来锁住手机的服务的。如果这行不通，可以联系你所在地区的运营商来锁定IMEI对于运营商网络的访问。 </p><p>有时候IMEI是变化的，尽管这不合法。有些窃贼有能力将合法的新的IMEI安装到你的手机里从而重新启用这个手机。另外鉴于犯罪动机，还有人会利用IMEI来监听设备。 </p><p>综上，IMEI是手机的重要的唯一性ID，你需要去备份并记住它。 </p><p>&#8221; </p><p>翻译结束。 </p><p>最后附加一些说明。 </p><p>关于TAC：http://en.wikipedia.org/wiki/Type_Allocation_Code </p><p>关于最后一位校验位的算法和python code： </p><p>以14位IMEI为例，校验位假设是C </p><ol> <li>从后向前，记录下每隔两位的数字，记为列表A </li><li>从后向前，记录下除A以外的数字，记为列表B </li><li>将A中的数字都乘以2，如果一个数字乘以2后大于10，那么把这个结果拆为两个数字（个位数一个，十位数一个），记为列表A' </li><li>把A'和B中的所有数字求和，记为S </li><li>计算S*9%10，记为F，如果F等于C，校验通过，否则IMEI有问题。</li></ol> <div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"> <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #0000ff">if</span> len(arg0)==15:</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span>             check_bit = <span style="color: #0000ff">int</span>(arg0[-1])</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span>             i = len(arg0)-2</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span>             l,r = [],[]</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span>             <span style="color: #0000ff">while</span> i&gt;=0:</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span>                 m = <span style="color: #0000ff">int</span>(arg0[i])*2</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum7">   7:</span>                 <span style="color: #0000ff">if</span> m&lt;10:</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum8">   8:</span>                     l.append(m)</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum9">   9:</span>                 <span style="color: #0000ff">else</span>:</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum10">  10:</span>                     l.append(m%10)</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum11">  11:</span>                     l.append(m/10)</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum12">  12:</span>&nbsp; </pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum13">  13:</span>                 r.append(<span style="color: #0000ff">int</span>(arg0[i-1]))</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum14">  14:</span>                 i-=2</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum15">  15:</span>             l.reverse()</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum16">  16:</span>             r.reverse()</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum17">  17:</span>             <span style="color: #0000ff">if</span> sum((sum(l),sum(r)))*9%10==check_bit:</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum18">  18:</span>                 <span style="color: #0000ff">return</span> True</pre><!--CRLF--><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum19">  19:</span>         <span style="color: #0000ff">return</span> False</pre><!--CRLF--></div></div> <div id="haloword-lookup" class="ui-widget-content ui-draggable"><div id="haloword-title"><span id="haloword-word"></span><a herf="#" id="haloword-pron" class="haloword-button" title="发音"></a><audio id="haloword-audio"></audio><div id="haloword-control-container"><a herf="#" id="haloword-add" class="haloword-button" title="加入单词表"></a><a herf="#" id="haloword-remove" class="haloword-button" title="移出单词表"></a><a href="#" id="haloword-open" class="haloword-button" title="查看单词详细释义" target="_blank"></a><a herf="#" id="haloword-close" class="haloword-button" title="关闭查询窗"></a></div></div><div id="haloword-content"></div></div><img src ="http://www.blogjava.net/changedi/aggbug/420789.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/changedi/" target="_blank">changedi</a> 2014-11-27 17:30 <a href="http://www.blogjava.net/changedi/archive/2014/11/27/420789.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>