自己写的逆向案例十五——升学e网通密码加密,少有的标准AES加密

网址:升学e网通-高中生在线学习一站式平台

寻找登录包,发现密码进行了加密

 下方搜索password=(可以变着搜索password:,password.),凭经验点击下方第二个js文件

找到加密位置,打上断点,分析代码:

分析参数,果然是加密位置。

null != a && a.password && (a.password = (0,
                                    y.b)(a.password))

它使用了三元运算符和条件运算符。这段代码的意图是检查变量a是否不为null,并且a对象中是否存在password属性。如果这两个条件都满足,就将a.password的值传递给一个函数y.b,并将其结果赋值回a.password

不过,这段代码中有一些语法错误和可能的误解:

  1. (0, y.b)(a.password) 这部分使用了逗号操作符,它通常用于执行两个表达式,并返回第二个表达式的结果。在这里,0是第一个表达式,它没有实际作用,只是被执行,而y.b是第二个表达式,它被当作函数调用。

  2. 但是,y.b作为函数调用时,应该确保它是一个函数。如果y.b不是一个函数,这段代码将会导致运行时错误。

  3. 代码中的null != a是检查a是否不是null的正确方式,但更常见的写法是使用a != null

  4. a.password &&这部分是条件运算符,如果a.password存在且为真值,它将执行后面的表达式。

 说白了,就是y.b这个函数加密密码。进入这个函数,一下子就明白了是AES的加密方法。至于是不是标准AES,我们直接复制,并调用库,让GPT帮我修改一下代码。

const CryptoJS = require('crypto-js');
// 将长密码字符串转换为CryptoJS可以理解的格式
i = CryptoJS.enc.Utf8.parse("20171109124536982017110912453698");
// 将初始化向量(IV)字符串转换为CryptoJS可以理解的格式
a = CryptoJS.enc.Utf8.parse("2017110912453698");

// 定义加密函数c
const c = function(e) {
    // 检查e是否为undefined
    if (void 0 !== e) {
        let t = e; // 保存e的值
        let n = CryptoJS.enc.Utf8.parse(t); // 将e转换为CryptoJS的格式
        // 使用AES算法和CBC模式加密n,使用i作为密钥,a作为IV,PKCS7作为填充方式
        let encrypted = CryptoJS.AES.encrypt(n, i, {
            iv: a,
            mode: CryptoJS.mode.CBC, // 修正了mode的属性访问方式
            padding: CryptoJS.pad.Pkcs7 // 修正了padding的属性访问方式
        });
        // 返回加密后的ciphertext转换为大写字符串
        return encrypted.ciphertext.toString().toUpperCase();
    }
    // 如果e是undefined,返回空字符串
    return "";
};
console.log(c('123456'))  #结果是A7428361DEF118911783F446A129FFCE

说明是一个标准的AES加密。搞定完工! 

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 14:34:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 14:34:01       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 14:34:01       58 阅读
  4. Python语言-面向对象

    2024-07-12 14:34:01       69 阅读

热门阅读

  1. Spring Boot有哪些优点和缺点

    2024-07-12 14:34:01       24 阅读
  2. Visual Studio 常用快捷键

    2024-07-12 14:34:01       24 阅读
  3. 【常用知识点-Linux】scp命令

    2024-07-12 14:34:01       21 阅读
  4. 用Redis写一个IP限流器

    2024-07-12 14:34:01       23 阅读
  5. 天童美语:推荐给孩子的人文历史纪录片

    2024-07-12 14:34:01       26 阅读
  6. 网站安全需求分析与安全保护工程

    2024-07-12 14:34:01       20 阅读
  7. 小米官网的数据是怎么优化的?

    2024-07-12 14:34:01       21 阅读