响应数据response的加密分析 转载:https://mp.weixin.qq.com/s/Kri1rxVADjcA03L2wAglCA
在做爬虫逆向中,我们绝大多数遇到的都是请求参数或者cookie
加密之类的分析
今天给大家分享一个不一样的,属于响应数据response
的加密
话不多说,网站地址如下:
aHR0cDovL2p6c2MubW9odXJkLmdvdi5jbi9kYXRhL2NvbXBhbnk=
分析
response
加密意味着,你抓包后拿到的响应不是我们平常看到的json
或者html
数据
而是一大串字符串,比如该网站的数据返回
很多人可能会一脸懵逼
其实既然网页上面返回了真实的数据
那么它一定有一个解密的过程,所以我们要做的就是找到解密的Js
代码
这是一个 xhr
请求,和之前一样下 xhr
断点,不会的可以看看前面的文章
断点断下的位置是发起请求的地方
这时候我们要做的就是往后找加密函数,按F10
继续往下走
可以看到,这个 e
就是解密后的响应。
那么关键就是这个 h()
函数了,点击进去
哇哦!熟悉的味道,这不就是AES
解密吗
验证
对于这种加密,直接套用 crypto-js
模块即可,不用费时去扣代码
找到几个关键的参数:
密钥 key
,也就是图片中的 f = d.a.enc.Utf8.parse("jo8j9wGw%6HbxfFn")
密钥偏移量iv
, 也就是图片中的 d.a.enc.Utf8.parse("0123456789ABCDEF")
完整代码如下:
const CryptoJS = require('crypto-js');
const key = CryptoJS.enc.Utf8.parse("jo8j9wGw%6HbxfFn");
const iv = CryptoJS.enc.Utf8.parse('0123456789ABCDEF');
// AES 解密方法
function Decrypt(word) {
let e = CryptoJS.enc.Hex.parse(word);
let n = CryptoJS.enc.Base64.stringify(e);
let a = CryptoJS.AES.decrypt(n, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
let r = a.toString(CryptoJS.enc.Utf8);
return r.toString();
}
将加密的字符串结果 t
,传进去运行解密
对比结果输出,game over !!!
对比
后台回复 tql 获取所有逆向代码!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
2020-04-28 缓存