不得不说,某系统是真难用,服务器老是爆炸,整个园区的支付卡机、饮水机、热水都是这个系统,而且水卡卡机插卡还很松。一年可用率估计只有个98%,炸了用不了就很难受了,特别是洗澡热水。而且查询也麻烦,得点个好几遍才能进去,还不能跟用户绑定,每次都要在滚动列表里面选门牌号。。。
为了方便查询,笔者基于逆向分析和流量抓包整理,特别是在Gemini 3.0 Pro的大力协助下,成功分析了该系统手机APP的关键的加密参数,把业务API抓了出来。
初步勘察
笔者使用HttpCanary抓包发现,这个app所有的请求都是http,压根没有tls加密。再细看,正文内容都是base64,直接丢进去解码,也没有解出明文。因此可以确定,一定是用了某种加密算法。
此外,这个APP的入口不多,一个newid接口,一个entranceGateway接口,还有个获取头像的接口。业务接口都集中在entranceGateway里面,猜测是加密的表单数据里面可能有个json字符串,里面包含了业务参数。
随后,笔者使用MT管理器查看该软件信息,发现是360加固,心里顿时凉了一截。难道就要止步于此了?
结果在asstes里面发现了端倪。细看,这个APP是HBuilderX制作的HTML5 uni-app,因此可以判断是基于web技术栈的,加解密算法肯定在某个js里面,说难听点就是个网页套壳APP。360加固相当于只是加密了uni-app的的框架,程序逻辑全在js里面,理论上提取出来就能分析了。
将asstes内的src文件夹提取出来,可以看见编译后的程序就是这一堆东西。字符串搜索上面抓包得到的网址发现,在app-service.js里面有对应的结果。然而这个js是编译后的,可读性很差,VSCode都卡得不行,电脑风扇呼呼响,看不了一点。。。
狠狠抓包
接下来,笔者在手机上开启http代理,使用电脑的Fiddler Web Debugger抓包,抓取了从登录到请求查询API的全部请求,便于后面分析。从抓取的条目来看,这个new id的请求似乎是个突破口,因为在这个请求过后,接下来的所有请求都变成加密的了。