前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 爬虫进阶必备 | 某公共资源交易平台加密参数与数据解密逻辑分析

Python 爬虫进阶必备 | 某公共资源交易平台加密参数与数据解密逻辑分析

作者头像
咸鱼学Python
发布2022-06-24 14:32:20
5120
发布2022-06-24 14:32:20
举报
文章被收录于专栏:咸鱼学Python咸鱼学Python

图源:极简壁纸

今日网站

aHR0cHM6Ly9nZ3p{删掉我}5ZncuZmouZ292LmNuL3dlYi9pb{防撞}mRleC5odG1sPyMv{删掉我}YnVzaW5lc3MvbGlzdA==

抓包分析

打开网站,随便设置一个查询条件,可以在 Chrome 的网络选项卡中抓到如下样式的请求包

需要分析的参数如下

请求头参数:protal-sign

以及加密查询结果Data的解密逻辑

加密参数的定位与分析

先看请求头的部分,这里的protal-sign是网站在请求头中添加的

一般像这样xhr请求用xhr断点是比较好的选择

同样的也可以通过hook window.XMLHttpRequest.prototype.setRequestHeader来定位

代码语言:javascript
复制
var setRequestHeader_ = window.XMLHttpRequest.prototype.setRequestHeader;
window.XMLHttpRequest.prototype.setRequestHeader = function(key,value){
        console.log(key)
        if(key.indexOf("portal-sign") !== -1){
            debugger;
        }
        return setRequestHeader_.apply(this,arguments);
 }
}

但是!这个站它不一般,他不走寻常路,用上面两种方法都不如直接检索来的快

直接检索portal-sign,找到下面的位置

这个时候分析的重心就转移到get_Sign方法了

单步进去,可以看到先是循环遍历了传入的参数

然后将遍历结果传入s(e)并且和r["d"]进行了拼接

先看这里的s方法,结果如下

很明显s方法就是将传入的参数拼接起来,这里的r[d]是一串字符串

可以理解为加盐,防止加密的结果被撞库,拼接盐值之后的结果经过了u和转小写之后就返回了

所以这里的u就是关键的加密方法了,不过这里的u也比较简单,单步进去就可以看到了

解密方法的定位与分析

上面进行了加密参数逻辑的定位和分析,现在还剩一个返回值Data的解密

这种返回值加密,按照开发的逻辑来说是在xhr请求之后回调解密方法,所以要在xhr中方法找到回调的位置打上断点

像下面这样

而像上一部分的请求参数分析,因为请求需要带上参数在请求发出的时候参数已经生成好了,所以我们进入xhr断点的时候,是从断点位置往上翻堆栈分析之前的逻辑

现在重新加载是否能找到解密的逻辑,加载断点之后单步进入o方法

一直单步可以看到如下位置的代码

很明显的aes解密方法,拿出key还有iv就可以直接进行还原了

简单测试一下

以上就是今天的全部内容了。

我是没有更新就在摸鱼的咸鱼

收到请回复~

我们下次再见。

对了,看完记得一键三连,这个对我真的很重要。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 咸鱼学Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 今日网站
    • 抓包分析
      • 加密参数的定位与分析
        • 解密方法的定位与分析
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档