• 爬虫逆向实战(34)-某视综数据(MD5、AES)


    一、数据接口分析

    主页地址:某视综

    1、抓包

    通过抓包可以发现数据接口是/rank/waiting/fans
    在这里插入图片描述

    2、判断是否有加密参数

    1. 请求参数是否加密?
      通过查看“载荷”模块可以发现有一个sign参数
      在这里插入图片描述
    2. 请求头是否加密?
    3. 响应是否加密?
      通过查看“响应”模块可以发现数据是加密的
      在这里插入图片描述
    4. cookie是否加密?

    二、加密位置定位

    1、sign

    (1)看启动器

    查看启动器发现里面包含异步,所以无法正确找到加密位置
    在这里插入图片描述

    (2)搜索关键字

    通过搜索关键字sign=,可以发现有一处sign的生成位置
    在这里插入图片描述
    在此处打上断点,再次获取数据,发现可以断住,并且sign的密文就是在此处生成的
    在这里插入图片描述

    2、响应

    因为响应加密数据一般都是json数据,所以解密后会使用JSON.parse进行解密,所以我们可以对JSON.parse进行hook
    hook代码:

    var my_parse = JSON.parse;
    JSON.parse = function (params) {
        debugger
        console.log("json_parse params:",params);
        return my_parse(params);
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    运行hook代码,再次获取数据,发现可以断住明文数据
    在这里插入图片描述
    通过跟栈就可以找到解密位置
    在这里插入图片描述

    三、扣js代码

    扣js代码时,可以发现sign在加密时,使用的加密方法是标准的MD5,所以我们可以使用标准模块进行加密,不扣js代码
    在这里插入图片描述
    同时,网站解密时使用的是标准的AES算法,所以我们可以使用标准的模块进行解密,不扣js
    JavaScript源码:

    const CryptoJS = require('crypto-js')
    
    function getSign(e) {
        delete e.sign;
        for (var t = [], n = Object.keys(e).sort(), r = 0; r < n.length; r++) {
            var i = n[r]
                , a = e[i];
            t.push(i),
                t.push(a)
        }
        t.push("iIndex");
        var s = t.join("_")
            , c = CryptoJS.MD5(s).toString();
        return c
    }
    
    function get_data(lastFetchTime, r) {
        var i = CryptoJS.enc.Utf8.parse(lastFetchTime + "000")
            , a = CryptoJS.enc.Utf8.parse(lastFetchTime + "000")
            , s = CryptoJS.AES.decrypt(r.toString(), i, {
            iv: a
        })
        return s.toString(CryptoJS.enc.Utf8);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
  • 相关阅读:
    Matlab——二维绘图(最为详细,附上相关实例)
    智能语法编辑器市场现状及未来发展趋势分析
    Python中的*args和**kwargs
    基于大功率白光 LED 的可见光通信
    Java内部类(自用)
    网络安全之应急流程
    【双指针】:Leetcode1089.复写零
    解决方案 | 法大大电子签加速高校七大场景全面实现数字化
    ESP8266-Arduino编程实例-LX1972可见光传感器驱动
    【2023集创赛】国家集创中心杯全国二等奖:运算放大器
  • 原文地址:https://blog.csdn.net/qq_44906798/article/details/132875904