简介
前几天在PDD刷到个透明探索版随身wifi充电宝,外观设计不错而且还是好价直接冲了。收货以后才发现这是MTK方案的机子,很冷门没有成熟的破解方法只能用卖家的内置卡充值上网切换不了外置卡槽插自己的卡,于是提取固件尝试从固件里入手
开始
拆机发现型号MF901Q,再往下深扒得知这和某一个4GCPE路由器是同一个代工厂生产的,按照CPE的方式尝试开启ADB调试
USB调试:http://192.168.0.1/adbenableForm.do?adb=1
无线调试:http://192.168.0.1/adbWifiDebugForm.do?adb=1
开启两个调试模式发现USB调试压根开不了,电脑USB连接设备不跳端口,无线调试开启倒是正常
连接无线调试查看设备APP列表找不到httpserver主进程,在内置存储目录里找到了这个ROOT.war,猜测可能是固件所在
拉取固件
adb pull /storage/emulated/0/lrserver/webapps/ROOT.war ROOT.war
通过常规zip方式解包,文件结构如下
分析
定位切卡所在页面的前端资源,找不到有关密码的选项
在仔细浏览固件内容后发现了lib文件夹里面的类库是httpserver核心所在,找到负责切卡表单处理的com/lr/web/SimSwitchEnableFrom.class
发现密码指向另一个类:com/lr/util/NetworkConfigUtil.class
smali拖入Jadx转Java代码,找到前者调用的方法定位,于是得出以下密码算法
1.获取设备的 IMEI 号码和两个系统属性值:ro.sim.passwd 和 ro.sim.ccsn。
2.如果 IMEI 不为空且长度大于等于 INDEX_LTE_GSM_WCDMA(已定义的一个常量),则对 IMEI 进行处理,提取后8位并与 ro.sim.ccsn 进行拼接。
3.将拼接后的字符串进行 MD5 加密为16位小写。
4.如果加密后的结果不为空且长度大于等于 INDEX_LTE_GSM_WCDMA,则返回加密结果的后8位;否则返回默认密码 ro.sim.passwd。
5.如果 IMEI 为空或长度不符合要求,则直接返回默认密码 ro.sim.passwd。
尝试
我的设备IMEI是890983065396943,截取后八位是65396943
CCSN的值不在代码里,而是作为一个系统属性存在,于是直接用ADB Shell读取:
adb shell getprop ro.sim.ccsn
执行得到CCSN明文:A0018,拼接字符串得出65396943A0018再转16位小写md5:33a7109f3ce9dc5b
取后八位,切卡密码最终结果:3ce9dc5b
把密码扔进SIM卡切换页面,成功切卡
用这个算法写了个密码计算器页面,更方便了
完结撒花
2024.08.02更新:
厂家找到了我,在新版产品修复了这个开ADB调试、切卡的漏洞并往卡槽里滴502胶水还更新了密码算法,而我手上也没有了新版的机子测试破解,此帖终结
版权属于:JiuXia2025
本文链接:https://blog.inekoxia.com/index.php/archives/657.html
转载时须注明出处及本声明
9 条评论
这个cool啊~OωO
大佬牛啊
开启网络ADB 调试后,可不可以直接权限开启线刷fastboot,pull下来全部底源修改再刷进去。按照你这样方法,只是改了前台,恢复出厂设置不就又要操作一遍么?
设备是带BL锁的,动不了系统相关的文件,这个恢复出厂再操作一遍就行了
请问下,那个地方可以改串
刷入全功能后台就可以了,我用蓝奏浏览器分享了[果迷刷机], 下载链接: https://jiuxia2025.lanzoui.com/b02vpwxiwf 提取码 : 7dfn
商家一看后台咋没人激活|´・ω・)ノ
感谢大佬
大佬牛叉