【JS逆向系列】某停车小程序

声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢!


前言

这次搞搞小程序的,来篇干货吧,具体小程序名称就不说了,主要是写下逆向的思路方法


一、请求分析

这里随便输入车牌号,然后抓请求<font color=#999AAA >示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

请求头中的s参数,就是我们要解决的 在这里插入图片描述

这里是请求得参数,加密过程可能会用到 在这里插入图片描述


二、获取参数

接下来就是获取小程序源码包,然后用工具进行反编译,这部分我就不详细说了,百度上找有很多。 在这里插入图片描述 然后打开微信开发者工具,相当于我们的浏览器,在此环境上找出加密的位置。

在这里插入图片描述 由于本地小程序是没有网的,所以无法直接进栈查找参数,只能从加密逻辑上分析,在进行部分关键词的搜索。

一般小程序的加密参数都是一些请求参数的组成在加上盐的MD5,所以先搜下md5这个参数。 在这里插入图片描述 搜到的js文件不多,一个一个看过去,然后在这里找到了可疑几个方法。 在这里插入图片描述

然后就是继续搜索这几个方法在哪里调用的,先看看secondMD5Validate,最后搜出来只有这两位置,所以这个方法并没有给我们带来信息。 在这里插入图片描述

然后搜firstMD5Validate,搜出来三个,同名的只有两个,跟上面的方法一样,没得到啥信息。 在这里插入图片描述

接着搜第三个,除去方法定义后,只有在一个位置调用了。 在这里插入图片描述 这里就很关键了,我们看到了他传入的是f.carNumber,而这个carNumber大概就是我们输入的车牌号了,而且这个f有正是我们传入的那几个参数,因为参数名称都一样,所以大概率可以判断出这个l的值就是我们需要的s值。

这里我们就来证实下,继续往下看这个,l在这个被传入,我们搜索下GET_PARKINNG_FEE。 在这里插入图片描述

找到了他请求得接口,正好是我们抓包的链接。 在这里插入图片描述

到此,我们只需要解决Object(s.getSignObject)这个方法的作用就ok了。

然后分析下这个函数里面做了啥操作。 在这里插入图片描述 这个t 取得是传入参数的第一个,而传入参数我们知道了,就是carNumber,所以这个t=carNumber。

e是字符串数组。

n这玩意取得是时间戳。

然后我们又从返回的这个{t: n,s: o(n + t + e[n % e.length])}字典,又验证了我们找的加密位置是正确的。

就看这个s,o方法,传入n + t + e[n % e.length],这个参数看的明白,再解决o函数。

o函数是下面这个,多的不说,一看就像MD5。 在这里插入图片描述

知道参数跟加密方法后,我们直接开始验证一开始抓的那个包,然后发现是一致的,到此我们就成功了。 在这里插入图片描述


三、请求测试

在这里插入图片描述 整个流程下来,花点时间,再结合一些经验,应该是不难的!

猜你喜欢

转载自juejin.im/post/7031728186014564365