说到 IMEI 码,有一些经验的人可能会知道这是一个全球唯一的移动设备识别序列号,这个号理论上在全球范围内都是唯一的,但是也有例外,比如销往印度的中国产山寨机,它们的串号就为15 个 0。至于为什么要修改它?有时候运营商会做机卡绑定,即你的卡只能用在这个手机上,否则就会失去优惠或干脆无法使用。当然,如果你有特殊的需要,也需要修改这个 IMEI 码。

众所周知,基于高通(Qualcomm)芯片的 IMEI 是出了名的难改,不像 MTK 那样开工程模式就直接任意修改了。然而不幸的是,华为 4G 无线网卡用的也是高通的芯片。

起初以为用 Google 使用英文搜索如何改 IMEI 号就可以很轻易的找到方法,然而事实并不是这样的。很多英语国家修改 IMEI 是违法行为,因为这助长了手机盗窃(国外很多国家运营商会封锁被盗手机的 IMEI,这样即使换卡也无法使用)。

不过,这可难不倒隔壁的战斗民族,毕竟他们是和 KGB 斗志斗勇过的。在这篇帖子中的第 2336 楼中,牛人给出了具体的方法。

我用手头的华为 4G 网卡(型号:E392u-12)测试了一下,还真的可以用。

首先将你的无线网卡插入电脑的 USB 口,过大概 10 秒等初始化完成之后看 dmesg 的消息:

[ 6926.771830] option 1-1:1.0: GSM modem (1-port) converter detected
[ 6926.771996] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
[ 6926.772159] option 1-1:1.1: GSM modem (1-port) converter detected
[ 6926.772273] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
[ 6926.772411] option 1-1:1.2: GSM modem (1-port) converter detected
[ 6926.772526] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2

从这里我们可以看到 3 个 tty 接口。首先要找到 AT 指令接口。你可以使用 screen /dev/ttyUSB 115200 后输入 “AT” 命令看回显。

首先试 ttyUSB0:

screen /dev/ttyUSB0 115200

之后输入 “at”(不含单引号),之后回车(输入的时候没有回显)。

如果这是一个接受 AT 指令的接口,那么它会返回 “OK”。

很幸运,一下就猜对了。

之后来获取当前的 IMEI 号,在下一步需要。

指令为 “AT+CGSN” 输入的时候还是没有回显,回车会出现当前的 IMEI 号,之后记录下来。

8xxxxxxxxxxxxx1

之后是关键的一步,计算解锁密码。

你可以选择使用在线版的:https://tools.yandere.moe/huawei_code_calculator/

或者 clone 到本地用:https://raw.githubusercontent.com/yanderemoe/huawei_modem_code_calculator/master/calculator.php

我们需要的解锁码是 Unlock (V2) 的码,并使用它来解锁 nvram 的 IMEI 分区所以我们可以修改它。

解锁的指令是

at^datalock=码

比如你的解锁码是 123123,那么指令是”at^datalock=123123″(仍然没有回显)。

将“at^datalock=123123”输入到 ttyUSB0 (上文提到的 AT 指令接口),之后回车,如果返回给你

+CME ERROR: 16

则失败,原因是码错误,再次确认下(要计算的 IMEI 不是印在网卡上的,而是通过上面指令读到的)

如果提示OK则成功。

之后需要 nvram 写入程序,战斗民族牛人 forth32 已经写好了放在 gayhub 上了,我也 fork 了一份。

clone 代码到本地:

git clone https://github.com/yanderemoe/qtools

然后 cd 进去使用

make

编译,完成之后,你会发现多一个可执行文件 “qnvram”,这个就是用来写网卡 IMEI 的程序了。

对了,还记得上面有 3 个 ttyUSB 吗?我们已经知道了 ttyUSB0 是接受 AT 指令的,那么其他两个哪个是接受写入指令的接口呢?其实也没必要知道,反正还剩两个,一个一个试试呗?

修改的指令是:

./qnvram -j 新的串码值 -p /dev/ttyUSBX

新的串码值需要 15 位,最后一位为校验码。

你可以通过在线生成工具随机生成一个合法的 IMEI 值,或者干脆改成 15 个 0(因为特殊国情(山寨机)中国没有对空 IMEI 进行入网检查)。

试试

./qnvram -j 000000000000000 -p /dev/ttyUSB1

返回了

--- Ошибка записи ячейки 0226 ---

虽然看不懂,但是最后说 0226,就是错误了。

那试试 ttyUSB2?

./qnvram -j 000000000000000 -p /dev/ttyUSB2

没有任何回显,这代表修改成功。不信你回到上面的 AT 指令接口上再执行下 “AT+CGSN” 查看一下?

回显变成了 “000000000000000”,修改成功。

1 Comment

Leave a Reply

Your email address will not be published.

*

code