小李:“有没有特别简单的 Python 解密 rsa 的案例?”“还真有”
📢📢📢📢📢📢💗 你正在阅读 【梦想橡皮擦】 的博客👍 阅读完毕,可以点点小手赞一下🌻 发现错误,直接评论区中指正吧📆 橡皮擦的第 <font color=red>639</font> 篇原创博客
⛳️ 本次反反爬实战案例背景
本篇博客选择的案例是由 VX 好友提出,他希望有一篇博客能简单的介绍清楚下面这个问题。
快速定位加密参数逻辑,快速扣取 JS,使用 JS 文件在 Python 中复现逻辑。
为此我翻找了一下橡皮擦的历史案例库(还没有写过的站点),发现如下一个目标站点,当乐。
一看就是一个老平台了,看人家域名 d.cn
。
通过点击登录按钮,定位到如下数据请求。
可以看到其请求方式是 GET,相关参数都在 URL 中进行了加密。
进行简单的定位之后,找到加密逻辑所在位置。
堆栈里面找到如下函数名 pwdFormLogin
,点击进入代码逻辑处。
在代码段中找到了加密位置,其代码如下所示:
⛳️ JS 代码扣取
进入到 rsa()
函数内部,找到如下代码:
打开 JS 工具箱,复制本段代码,然后进行补齐。上述代码仅包含 rsa 部分,RSAKeyPair
对象所在的代码不存在,需要补齐。
优先扣取 rsa
函数所在代码文件,可以假设一个网页不断进行测试,缺少哪个函数,就扣取对应 JS 文件,最终该案例得到如下结果。
RSA.js
文件包含核心加密逻辑BigInt.js
文件包含数字处理函数,例如setMaxDigits(130)
就在其中;Barrett.js
文件包含了RSAKeyPair
调用的部分文件,例如BarrettMu
。将上述所有内容组合成一个独立的 JS 文件,这里我们将该文件存放到 gitcode 中,大家可以进行获取。
所有的 JS 都在本地整理完毕,后续就可以通过 Python 去调用该 JS 实现解密逻辑。
运行代码输出如下结果,本地与目标站点生成一致,问题解决。
⛳️ 总结
本次案例为大家演示的是全文扣取 JS 加密代码,并在本地构建单一 JS 文件,由于加密逻辑比较简单,所以大家注意实操的流程,可以将注意力放在定位 JS 代码位置。
📣📣📣📣📣📣右下角有个大拇指,点赞的漂亮加倍
版权声明: 本文为 InfoQ 作者【梦想橡皮擦】的原创文章。
原文链接:【http://xie.infoq.cn/article/a7558673b90d47dd6f4229736】。文章转载请联系作者。
评论