前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 爬虫进阶必备 | 某医院招投标公告内容加密、参数加密逻辑与 PDF 下载请求分析

Python 爬虫进阶必备 | 某医院招投标公告内容加密、参数加密逻辑与 PDF 下载请求分析

作者头像
咸鱼学Python
发布2023-09-01 09:08:10
2120
发布2023-09-01 09:08:10
举报
文章被收录于专栏:咸鱼学Python咸鱼学Python

图源:AI绘画

今日网站

aHR0cHM6Ly96YmNnLnN6bnN5eS5jbi9ub3RpY2VEZXRhaWwvMzk3OS80LzY=

今天群友问了一个站,正好拿来当文章素材

抓包分析

刷新页面可以看到下面两个请求

每个请求都有以下两个加密参数

加密定位与分析

全局搜索epcos,可以定位下面的位置

打上断点,进一步分析可以定位到下面的代码位置

通过上下文分析可以知道这里使用了 AES ECB 加密以及 RSA 公钥加密

先来看 AES 加密

生成随机的 16 位字符串作为 AES 的 key

完成对明文请求 url 参数的加密

之后进入了 RSA 公钥加密部分

将上面生成 AES key 使用公钥 p 加密

得到上面的计算结果之后,分别的赋值

代码语言:javascript
复制
content: c,
aesKey: u

完成之后回到上层 epcos 赋值的地方,这里又对刚刚得到的 c 做了一次编码

ps:刚刚开始看这个站的时候我就忘了这一步,以为只是简单的 url编码就没有看了,其实在里面做了一次 base64

这里的 ecodeURL 里面做了Base64编码和字符串替换,把刚刚计算的 c Base64编码后把结果中的 = 替换为空,把+替换为 -,编码后才是最后请求中epcos 的值

总结以下第一步请求

1、随机生成 16 位字符串作为 AES 加密 key,将请求的 url 参数作为加密内容

2、将生成的 key 用 RSA 公钥加密,得到 header 中的 aesKey

3、将1中的加密结果通过 Base64 编码并替换 = 和 + 字符,得到请求链接中的epcos

将上述部分的计算使用 Python 还原,会得到的加密的返回结果

解密定位与分析

返回得内容是

熟悉的字段估计加密也是一样的,在上一步加密的代码往上翻翻就可以找到解密的代码了

有了上面的铺垫之后就比较简单了

先是用私钥 f 解密返回值中aesKey 得到明文的 aeskey

使用 aeskey 参与 AES ECB 解密返回值中的 content 获得明文的招标内容

下载 pdf

我们从解密的明文中获取到字段 announcementKey 的值

这个值是下载 pdf 请求的加密参数

还是从加密的断点中可以发现

有了上面这个 fileKey 之后就可以下载 pdf 了,除了请求链接和加密的内容不一样外,加密过程和第一次加密完全相同

完事~

上就是今天的全部内容了,咱们下次再会~

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

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

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

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

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