• 响应数据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 获取所有逆向代码!

  • 相关阅读:
    C++对象模型
    C/C++内存结构
    第一篇
    Goodbye Steve(19552011)
    DirectX学习笔记_关于Sprite.Draw2D的说明
    Goodbye World!
    js把一个数组的数据平均到几个数组里面
    Django model字段类型清单
    Golang中间件——goredis操作Redis
    Python开发一个短网址生成器
  • 原文地址:https://www.cnblogs.com/testzcy/p/14711960.html
Copyright © 2020-2023  润新知