📡折腾 T-Mobile MiFi X PRO(M3000):root 和改 TTL

前段时间收了一台二手的 Inseego MiFi X PRO 5G,卖家写的是「翻新、已解锁」。T-Mobile 版,型号 M3000B,高通 SDX65,只有 sub-6,没有毫米波。
主要想做两件事:改 TTL 绕过热点检测,顺便看看 IMEI 能不能改。全程在 Mac 上操作。
notion image
⚠️
这是我对自己设备的研究记录。TTL 修改一般没问题,改 IMEI 在很多国家和地区是违法的,这里只记录原理。文中的 IMEI、密码、序列号、哈希都换成了占位符。

连接电脑

USB 插上之后 adb devices 是空的,电脑上也没有网卡。原因是设备屏幕上会弹一个 USB Connection Options,默认是 Charge only,要在屏幕上手动选 Access internet (USB & Wi-Fi) 才行,而且每次拔插都会变回充电模式,要重新选。
选好之后 Mac 上会多一张网卡,网关是 192.168.1.1,Web 后台也在这个地址。

Web 后台

后台是 Inseego 标准的 MiFi 管理页面,翻了一遍,没有 USB 调试、ADB 之类的开关。
如果想用脚本登录:密码不是明文提交的,页面会用 bcrypt.min.js 加上页面里的 gSecureToken 在浏览器里算出哈希,再 POST 到 /submitLogin/。我是直接把设备上的 bcrypt.min.js 拿下来用 Node 跑的,算出来跟浏览器一样。状态接口在 /srv/ 下面,比如 /srv/status,返回 JSON。

开启 ADB

社区里的老办法是用 Windows 上的 mifilink 切模式,这个工具现在不太好找了,我传了一份:mifilink.exe
我是在 Parallels 里跑的。它其实不支持 M3000,会把设备认成 MiFi 8x00 (HID),mifilink diag 报 Device is using 130 byte reports 和 Sending Diag failed。不过设备重启了一次,之后 ADB 接口就能用了。
切回 Mac,adb devices 能认到设备,然后直接:
就拿到 root 了(uid=0),重启之后也还在。
Inseego 的工具都在 /opt/nvtl/bin/ 下面,modem2_cli、usb_cli、nwnvitem、diag_read 这些,modem2_cli get_info 可以看型号、基带版本和 IMEI。另外 /etc/shadow 普通用户也能读,没去管它。

改 TTL

手机直接上网的包 TTL 是 64,经过热点转发一次就变成 63,运营商靠这个判断你在开热点。把出口的 TTL 改成 65,转发之后正好是 64。
蜂窝网卡是 rmnet_data0 到 rmnet_data5,用 iptables 改:
这样改重启就没了。系统里有个开机脚本 /etc/init.post_boot.sh(对应 init_post_boot.service),出厂是空的,把上面这段写进去,chmod 755 就行。
重启大概 70 秒,iptables -t mangle -L 看了一下,每个接口一条规则,没问题。
改之前最好先备份一下,我把原来的规则和原始的 init.post_boot.sh 都存了一份。

IMEI(最后没改)

modem2_cli 有 efs_read 和 efs_write,但是读写 NV 550(IMEI 在这里)一直报 MDM_MAIN: general error,root 也不行,换了七八种路径写法都一样。
又试了 validate_spc,默认值能通过,但还是读不了。而且 SPC 有次数限制,超了可能会锁死,就没敢多试。
后来看到一篇讲 Inseego FX2000 的博客才知道,NV 550 是只读的,只能写一次,正常固件下 efs_write 一定会失败,跟 SPC 和 root 都没关系。要改只能直接改 EFS 分区。
下面这些我都只读验证过,没有写入:
  1. 用 usb_cli mode_switch 切到 DBG 模式,diag_read 和 diag-router 就会起来
  1. nanddump 把 efs2 分区导出来,用当前的 IMEI 按 BCD 编码去搜,只有一处匹配
  1. 这条记录后面没有 CRC,换成另一个 15 位 IMEI 长度不变,不会破坏结构
最后一步是 flash_erase 加 nandwrite 写回去,我没做。这一步不可逆,有变砖的风险,而且我也用不上改 IMEI。
顺便看了下厂家那个 Windows 改 IMEI 的工具,用的是一个叫 diagcmd 的程序走 DIAG 写 NV,主要逻辑是服务器下发的。

速度

屏幕显示 5G UC,但只有 200 多 Mbps,旁边的手机都比它快。
modem2_cli 查了一下,enabled_tech 只开了 NR5G,LTE 被关了,应该是上一手翻新的时候锁的。这样只能连 n41 SA 单载波,用不了 NSA。
改回 LTE + NR5G,再强制 NSA,endc:1 双连接也建立了,但是速度没变。
拿另一台不同品牌的 5G 路由器在同一个位置测,载波聚合还更多(n41+n71),速度也差不多。信号 RSRP 在 -93 到 -96 之间,一般。所以就是这种便携设备的天线水平,想再快只能接外置天线,或者换 CPE。改 IMEI 对速度也没用。

其他

关掉了固件自动更新,免得 OTA 把改动冲掉:把 fotad 和相关的刷写、看门狗服务 stop 再 disable,然后在 /etc/init.post_boot.sh 里再加一段,开机的时候再停一次。想恢复的话 systemctl enable 回来,再把那段删掉就行。
另外确认了 Carrier block 是 0,确实是解锁机。频段是 LTE 25 个、5G NR 15 个,没有毫米波,也没有 n77/n78。n41、n71、n25 都有,明显是给 T-Mobile 的,换 Verizon 或 AT&T 能用,但是 5G 会受限。
notion image
本文是个人设备研究记录,敏感信息都已脱敏。TTL 修改请自行了解当地法规,IMEI 修改在多数地区违法,不要用于非法用途。
Loading...