JS逆向- shopee 请求头加密参数

目标网站

aHR0cHM6Ly94aWFwaS54aWFwaWJ1eS5jb20vc2VhcmNoP2tleXdvcm

Q9JUU3JTk0JUI3JUU3JUFCJUE1JUU0JUI4JThBJUU4JUExJUEz

先来看看这个网站需要分析的加密是什么?

这次的网站例子来自「咸鱼的Python交流群」,一个群友遇到之后发到群里的。【图1-1】

图1-1

在这个网站搜索商品的时候会出现请求头if-none-match,之前咸鱼的很多例子都没有写到如何分析请求头的加密参数应该如何分析,所以拿这个例子大概讲讲。

定位加密

按照之前的套路,想到的第一步是搜索if-none-match,搜索的结果非常具有迷惑性。【图2-1】

图2-1

打开这个文件,直接检索if-none-match没有找到命中项,但是搜索If-None-Match,可以看到有相关的命中项的。【图2-2】

图2-2

不过咸鱼试过在这里打上断点,重新加载没有断上,初步判断不是这里生成了这个请求头参数。

所以这里尝试使用Xhr断点的方式分析。【图2-3】

图2-3

打上这个断点之后,重新加载页面。【图2-4】

图2-4

可以在这里看到t的值中就包含了我们需要的请求头if-none-match,所以可以猜测在这个 xhr 断点之前就已经完成了这个值的生成。

所以这里可以先在这个 xhr 断点前下一个断点之后暂时取消 xhr 断点。【图2-5】

图2-5

到这里之后我们直接单步调试,可以看到下面这段逻辑【图2-6】

图2-6

可以看到又写入请求头的位置了,我们分别打上断点,逐一分析是不是想要的内容。

经过分析可以看到在代码中有一段在字典中赋值的操作,并且这里也找到了加密的字段名。【图2-7】

图2-7

所以上面就是加密字段的加密位置。

分析加密

找到加密位置之后进一步分析加密的逻辑,可以看到这个加密的逻辑非常简单,结合上下文的代码可以看到这里拼接了字符串i.a + "-" + u("" + i.a + u(t) + i.a),这里反复调用的u也可以在上面找到。位置的就只有ti.a

通过分析可以看到这里的i.a就是固定的字符串55b03【图3-1】

图3-1

这里的开头和抓包中的值开头一样。【图3-2】

图3-2

找到i.a之后,再回头看看这里的t,就是传入的参数,没有什么特殊的地方。

加密很简单直接带入 Python 实现的加密即可。【图3-3】

图3-3

煌金 wechat
扫描关注公众号,回复「1024」获取为你准备的特别推送~
  • 本文作者: 煌金 | 微信公众号【咸鱼学Python】
  • 本文链接: http://www.xianyucoder.cn/2020/07/16/每日JS-shopee/
  • 版权声明: 本博客所有文章除特别声明外,均采用 许可协议。转载请注明出处!
  • 并保留本声明和上方二维码。感谢您的阅读和支持!