前言
好久没有做逆向案例分析了,最近都在看同行朋友写好的案例,感觉学到很多,算是取长补短了
不多bb,机缘巧合下,拿到个目标网站
分析
首先抓个包,就看到请求参数里带着这几个参数
主要就是_signature了,其他的参数都不重要得想必你一看就知道啥意思了。
行,开始分析_signature了
先,全局搜一下,很好只有一个结果:
点进去看到主要就这三个地方:
三个地方都打上断点:
继续滑动下拉,发现值已经有了:
鼠标放到变量上面,看到我们需要得_signature其实就是变量a了,而a由函数I(n,e)生成:
其中,n就是V.getUrl生成,e就是传进去的参数:
那取消刚才的断点,重新打上断点看看:
此时,可能你在调试的时候,有时候会出现滑块验证:
这个暂时不管,以后再系统的搞滑块哈
此时发现断上了:
跟进去,发现V.getUri进入到如下,感觉是在处理参数,不知道有没有我们要的sign
怎么确定有没有,放开断点往下走,如果出现了那就是了,如果没有出现,那多半就不是了,如下:
这个n的值明显没有sign,那就不是了
当然这个理论在这里行得通,但不绝对哈
好,接着看I,跟进去,发现如下,这里的e就是上面生成的n,t就是上面传进来的参数e,就是而且看到里面有sign相关的变量,90%是了
单步调试,一点一点跟着走看看:
找到关键点
发现上面都是些没有什么用的配置,就到了倒数第二行,貌似才有关键的东西,而且sign也在这一行里,先在这一行打个断点,然后继续走,一点放行,发现走到一个新的js里:
大概的看了一眼,应该是个加密算法,那是不是就是我们要的sign呢?不好说啊,直接点这个跳出去吧:
跳出去之后发现,变量o出现了一个很长的字段
拿着跟之前浏览器抓包看的_signature对比下长度,发现一致,那就是这个了,而实际的加密逻辑就是刚才进入的新的js文件alcrawler.js里
关键点找到了,那怎么把核心的加密逻辑扣出来呢?
我大概看了下,这里好像还不好单独把加密的逻辑抠出来,因为有很长的参数调用,而且我抠了下,不好扣,索性整个拿出来吧,结果发现整个也不多,就几百行,复制到本地吧
代码调试
放在本地,取名crawler,用node执行下看看:
发现报了个这个:
什么referrer,那我们搞爬虫的,再熟悉不过了,但是这个是在js里面啊,这就是涉及到