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 获取所有逆向代码!

  • 相关阅读:
    【原创】【js】screenLeft screenTop screenX screenY属性的有效性和兼容性研究
    兼容兼容兼容:浏览器兼容性大集合
    Vue 打包成APP后首屏出现白屏问题
    uniapp 安卓app端本地打包错误: Not found -1,6 at view.umd.min.js:1
    uniapp 下获取cid
    uniapp fill abort statuscode:-1
    Vuex刷新时数据会消失,那如何解决?为什么还要使用Vuex
    vue 安装失败;vue不是内部或外部命令
    js 文件下载,多个文件下载,pdf下载
    uni-App 去掉顶部导航栏
  • 原文地址:https://www.cnblogs.com/testzcy/p/14711960.html
Copyright © 2011-2022 走看看