zoukankan      html  css  js  c++  java
  • 响应数据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 获取所有逆向代码!

  • 相关阅读:
    小试阿里云容器服务
    .NET跨平台:再见dnx,你好dotnet cli
    使用Let's Encrypt手动创建https证书
    Chrome以https访问gitlab的问题:Your connection is not private
    [ASP.NET 5]终于解决:Unable to load DLL 'api-ms-win-core-localization-obsolete-l1-2-0.dll'
    Mac上远程桌面连接Windows Server 2012 R2
    解决JSON.stringify()在IE10下无法使用的问题
    解决阿里云SLB无法添加https证书的问题
    “状态机”学习笔记
    HttpClient读取ASP.NET Web API错误信息的简单方法
  • 原文地址:https://www.cnblogs.com/testzcy/p/14711943.html
Copyright © 2011-2022 走看看