响应数据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, modeCryptoJS.mode.CBCpaddingCryptoJS.pad.Pkcs7 });
    let r = a.toString(CryptoJS.enc.Utf8);
    return r.toString();
}

将加密的字符串结果 t ,传进去运行解密

图片

对比结果输出,game over !!!

图片对比
后台回复 tql 获取所有逆向代码!

posted on   我和你并没有不同  阅读(1894)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2020-04-28 缓存
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示