某哪儿机票JS解密(2)--会变key与value

点击航班查看详情的时候发现出现了个奇怪的参数



切换日期和地点都会让这个参数发生改变,我也是第一次碰到这种参数,怎么办呢,我们先在过滤器里面搜索这个参数,看看是哪里最先产生的。

(个人抓包喜欢用burpsuite,比较方便,用习惯了)


发现第一条是这个请求带的


这说明很可能是在发起这个请求的时候产生的这个参数,我们去开发者工具里面search这个网址里面的参数吧

我先搜索pageview出来了3个


然后进去在这3个地方下断点,然后我们重新请求查航班,要是停在哪个地方了就说明很可能就在这个地方产生这个参数的。

经过了慢慢的调试,找参数在控制台输出看结果(调试JS电脑真的卡。。)


找到在这个pageview之前传进来的e 似乎就已经给这个参数赋值好了,这时候其实我们已经成功一大半了,找到了这个参数从哪来的。

然后我们追溯回去,看看这个e是哪里被赋值的。

先从第一个pathname: "/ncs/page/flightdetail"找齐,很可能他们是一起被赋值的。(这里要多试,最好和这个参数相关的都去看看)

打上断点,重新跑一次


发现前面有很多参数,从第一个开始看


发现一个比较可疑的数值很像我们需要的value,但是这里没出现key,所以应该不是。(这时候我拿这个值和value的长度对比了下发现都是96位的,猜测可能就是这个参数变得)拿这个值在过滤器(用抓包工具会比较清楚)搜索一下应该可以知道这个是查航线返回的(得到航线的真实数据可以在我上一篇文章查看)

继续往下看,发现c里面有这个参数!那么看看c生成参数的规则


看名字也可以猜测就是这边生成的(我是断点一步步调试发现过了这步就产生这个参数发现的)

那么我们进这个方法看看


getKey

这是getkey传的参数


经过我的不断调试转换成python的方法

                                   

意思就是将出发日期、出发城市、到达城市的最后个字符拿出来合并,再将每个字符转换成ascii码在转成成10进制 然后再转换成31进制(有点绕,31进制还要自己写个方法(百度大法好))

getvalue


传的参数(5,s)


经过调试翻译成python


将shadow的字符前后全部颠倒。

至此,我们就得出了key与value的产生方法了。

验证一下



对上了,恭喜你解密成功!

记录下js小白的成长,JS逆向最主要的还是要多调试,才能找到怎么生成加密参数.

写的时候有点困,所以比较仓促,见谅!睡觉去了,明天继续搬砖

你可能感兴趣的:(某哪儿机票JS解密(2)--会变key与value)