记一次IMEI校验的意外
IMEI号,普通人可能感觉陌生,但对于电子数据取证从业者来说则不然。IMEI是手机的“身份证号”之一,在通信网络中用于唯一识别某台设备。网上传言的通过某个代码即可通过运营商对手机进行挂失,这个“代码”就是IMEI号。但准确来说,IMEI并不是“设备身份证号”,更像是SIM卡卡槽的身份证号。早期一部手机一般只有一个IMEI号,但为了满足监管需求,差不多十年前开始,设备厂商必须为每个SIM卡卡槽注册一个IMEI号。
今天不聊IMEI号的历史,而是站在一个电子数据鉴定人的角度记录一下最近遇到的一件与IMEI相关的有意思的事情。
大模型的兴起,让普通人也能从科技的发展中受益,我也不例外。为了加快文书材料的校对,我在本地用LM Studio加载了Qwen 3.6 Flash对文档进行自动化核验。最近我在提示词中增加了一条规则,要求对文档中提及的IMEI号检查,看是否为十五位数字并通过Luhn算法校验,希望通过此检查发现潜在的IMEI号记录错误。
这种方法极大地提高了校对效率,类似少录或多录入了一位数、数字录入错误等问题可以很方便地检查出来,比人工核对快很多。但这两天遇到一个IMEI号,Qwen检查说校验失败IMEI非法,但我仔细核对了检材手机,待检查的IMEI号与手机中记录的IMEI号完全一致。于是我又用Qwen写了一个Luhn校验脚本进行计算,结果依然是校验不通过!这部手机是国内很常见的品牌,型号就不说了,去年年中才发布。
按照规范,IMEI号的最后一位应通过Luhn算法计算得出,但实践中似乎并非所有IMEI号都能通过Luhn校验。至于原因,目前尚无明确结论,留待后续探究。
附:Luhn算法规则
Luhn算法也被称为模10算法,主要用来校验各种数字的正确性。Luhn算法规则很简单,对数字从右往左逐一遍历,奇数位不变,将偶数位的数字乘以2,如果乘积大于9则减9,将各位求和后加上校验位数字一定能被10整除,不能整除则说明校验失败。
例如针对IMEI号865498078589991,从右往左第1位到第15位分别是1、9、9、9、8、5、8、7、0、8、9、4、5、8、6,偶数位处理后15个数字分别是1、9、9、9、8、1、8、5、0、7、9、8、5、3、8,(1+9+9+9+8+1+8+5+0+7+9+8+5+3+8)%10= 0,即校验位通过。