斐讯K2 163版配置文件加密破解过程

4,389 views次阅读
没有评论

提醒:本文最后更新于2025-06-19 10:40,文中所关联的信息可能已发生改变,请知悉!

转自@abccba94 http://blog.iytc.net/wordpress/?p=1869

 

利用破解后的方法可以轻松的刷breed:

http://iytc.net/k2.php

 

斐讯K2在V22.4.5.39版本后对配置文件使用了WAN口MAC地址作为加密条件

具体的加解密程序为/usr/bin/encryconfig

 

调用参数(k2为原始配置,k2.dat为加密配置):

encryconfig encrypt /tmp/k2 /tmp/k2.dat

encryconfig decrypt /tmp/k2.dat /tmp/k2

 

程序中有读取硬件WAN口的MAC地址操作:

eth_mac r wan > /tmp/macstr

 

加密语句:

openssl aes-128-cbc -k "%08X" -base64 -in %s -out %s

 

第一个%s为输入的原始配置文件,配置文件格式为:文件头+配置压缩文件(tar.gz格式)

文件头包含信息(163版本为例):

product=K2

hw_ver=A2

fw_ver=22.5.9.163

再加“0A”填充字符

 

第二个%s为输出的加密配置文件

关键是加密字符串"%08X",这个8字节字符是如何产生的?

用IDA加载encryconfig文件进行分析:

斐讯K2 163版配置文件加密破解过程

可以看到在处理加密前调用了400b94函数,在400b94函数中加载了一个字符串“PHICOMMK2”,并调用400a8c函数:

斐讯K2 163版配置文件加密破解过程

在400a8c函数中就是读取硬件WAN口MAC地址,并且调用了strcat函数,可能是和PHICOMMK2进行拼接:

斐讯K2 163版配置文件加密破解过程

400a8c函数处理完后,回到400b94函数,会接着调用400a10函数,400a10函数是什么呢?

我们用在线反编译的工具来分析,会发现它是一个CRC32函数:

 

在线反编译工具:

https://retdec.com/decompilation/

 

反编译后的结果:

斐讯K2 163版配置文件加密破解过程

 

好了,我们来整理一下,8字节的加密字符是这样来的:

1、调用系统命令读取硬件WAN口MAC地址

2、用MAC地址和"PHICOMMK2"字符进行拼接

3、对拼接字符进行CRC32处理

 

上面是代码的静态分析,下面我们用动态调试的手段来进行分析:

在K2上启动GDB远程调试,先要安装gdb-server

# opkg update

# opkg install gdbserver

在K2上启动gdb-server

# gdbserver 127.0.0.1:3000 /usr/bin/encryconfig

 

然后在ubuntu的~/mtk/openwrt-3.10.14/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin目录找到mipsel-openwrt-linux-gdb程序,启动并连接K2:

斐讯K2 163版配置文件加密破解过程

快捷命令:

~/mtk/openwrt-3.10.14/scripts/remote-gdb 192.168.1.1:3000

 

如果调试时出现“"Remote 'g' packet reply is too long:” 错误,请拷贝下面文件到~/mtk/openwrt-3.10.14/toolchain/gdb/patches目录:

700-fix-remote-g-packet-reply-too-long

 

并重新编译gdb:

make toolchain/gdb/{clean,compile,install} V=s

 

gdb常用命令:

b 设置断点(b 变量名或 b *地址)

p 打印变量值(p 变量名或 p *地址)

i b 查看断点

c 执行

n 单步执行(ni进入函数)

i r 查看寄存器

x 显示内存

 

导出一段内存生成文件:

dump binary memory ./file 0x77647008 0x77DB740C

 

斐讯K2 163版配置文件加密破解过程

我们来正式启动调试:

K2上启动gdbserver:

斐讯K2 163版配置文件加密破解过程

在K2上可查看调试程序的内存运行位置,用cat /proc/PID/maps :

斐讯K2 163版配置文件加密破解过程

Ubuntu上启动远程调试:

斐讯K2 163版配置文件加密破解过程

我们读汇编代码可以知道,CRC32的传人参数有两个,一个是拼接的字符串,一个是字符串长度,我们在CRC32的函数参数入口设置一个断点(上图break *0x400bdc),输入c命令执行,在断点处停止了。第一个参数存在A0寄存器,我们看看A0寄存器的地址,然后将地址的内容显示出来:

斐讯K2 163版配置文件加密破解过程

看到没有,拼接的字符串显示出来了!拼接规则PHICOMMK2+WAN MAC+867588,那这个“867588”是怎么来的呢?我们倒回去跟踪一下拼接函数

重新运行程序,这次换一个WAN MAC,并把断点设置在strcat函数上,可以看出拼接的时候是正常的:

斐讯K2 163版配置文件加密破解过程

再往下跟踪,连续设置断点并显示拼接字符串(x/1s 0x7fff6c20内存):

斐讯K2 163版配置文件加密破解过程

可以发现,当MAC改变,后面的6位拼接字符也改变,并且此拼接字符由如下汇编语句完成:

斐讯K2 163版配置文件加密破解过程

经过分析,此段代码的含义是对MAC地址进行运算,具体规则:

1、MAC地址分为6段,如CC 81 DA A6 5C 02

2、每一段的(第一个字符+第二个字符)%9,取的余数作为拼接字符,6段共6个字符,这就上面6个拼接字符的由来

 

破解过程完成!

我们重新来梳理一下加密过程:

1、调用系统命令读取硬件WAN口MAC地址

2、对字符进行拼接:"PHICOMMK2"+MAC地址+6个MAC地址生成的字符

3、对拼接字符进行CRC32处理,输出32位数据(8个字符)

4、用这个8字符调用如下函数对配置文件进行加密

openssl aes-128-cbc -k "%08X" -base64 -in %s -out %s

 

【其他】

你也可以用IDA直接连接,不过我这里好像还不大好使,具体原因待查:

斐讯K2 163版配置文件加密破解过程

斐讯K2 163版配置文件加密破解过程

选process option:

斐讯K2 163版配置文件加密破解过程

 

 

 

正文完
 0
HopoL
版权声明:本站原创文章,由 HopoL 于2017-05-26发表,共计2323字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)

HopoL's Blog

文章搜索
最新评论
阿龙 阿龙 谢谢大佬分享
MickeyDee MickeyDee Cancell that, figured it out and it works, Much appriciated .
MickeyDee MickeyDee Hi Thanks for sharing, please clarify, do you mean Rename the folder "unraider-7.2.0" to unraider and copy it to the config . Thanks
lzdwudi lzdwudi 我也想试试 但我目前的版本是6.12.13 我不敢做大的动作
wice222 wice222 archive is demaged
tstUser01 tstUser01 Thanks for sharing!
saisu saisu how to install from scratch for noobs like me please :D What is GUID ??
Adrian Adrian How update works? Should we rename unraider file, do the update and rename back? from 7.2.0 to 7.2.1
步兵 步兵 哈喽 想请问一下文件是从老毛子网站下载的吗 因为怕有挖矿的后门 所以想了解确认一下 感谢
hpapagaj hpapagaj Thank you.