以前打edusrc的时候难免要练内网,基本上都是深信服的easy connect,因为电脑每次不同的站点都要下载不一样的客户端,为了方便我都是用手机页面和APP测试账密的,现在过去了几年好多密码都忘了,想看看以前的密码,结果密码输入框只有黑球没有眼睛,不能点击显示密码,我突然想到我换手机的时候新手机的客户端也有密码,断定保存的密码可以导出的。
首先需要获取到配置文件,现在不root无法访问APP的数据存储目录,这时候可以用安卓的备份功能变相提取配置文件,这里以小米为例,在系统-我的设备-备份与恢复里面对APP进行备份(adb应该也可以直接备份的)
EasyConnect(com.sangfor.vpn.client.phone).bak
用任意十六进制文本编辑器打开文件,将41 4E之前的数据删除,然后保存即可。
还是保存为.bak文件,然后使用abe.jar解包。
java -jar abe-62310d4.jar unpack ".bak文件" "输出.tar"
即可将bak解包为tar,然后正常解压出来就是配置文件和apk文件。
我们需要的就是f文件夹下面的settings.json文件,我这里还用到了a文件夹的apk。
首先对apk解包,这里用的jeb,解包后搜索关键词“rdpAutoShowKeyBoard”(搜了几个都没找到,这个是配置文件里面的,搜这个好找,第一个就是)
String v0_1 = com.sangfor.vpn.client.service.utils.b.e(v0.a("settings.password", null));
v0.a我直接盲猜一手是读取用的,直接进到e方法里面
new 出来的e就是傻子也知道这里是加解密的方法了,大概就是密钥,但是这个密钥明显位数不对,进这个e
一切都清晰起来了,这里用了AES算法CBC模式PKCS5填充,下面就是找到密钥和向量,这里看了一下,没有用它自己的东西,可以直接新建一个java项目去运行,我也懒得自己摸索,直接找ai给我加了两行打印的,把密钥和向量打印出来。
其实密钥就是上面那串字符串做MD5,向量就是0123456789ABCDEF转HEX就行了。
我(让ai)用Python重写了一份,然后我自己改了读文件,一键读取文件再解密。
https://blog.csdn.net/weixin_39608748/article/details/117347371
小米bak文件还原为安卓bak文件
Hex Workshop、winhex(十六进制文件编辑器)
JEB Decompiler(apk反编译)
以上工具请自行寻找
原文始发于微信公众号(墨雪飘影):无root提取文件、反编译后成功解密数据
评论