解密铜仁学院登陆算法

今天在鱿鱼助手上新增了一个软件,铜仁学院

现在解析下算法,通过抓包发现了个奇葩

请求体和参数都有数据,是前端没更新还是故意这样设计的?

去掉了params测试后发现任然可以获得登陆数据

bash 复制代码
{"username":"20xxxxxx01","password":"57D4xxxxxxxxx97B16","digest":"94eced0xxxxxxxx45b78","timestamp":1782882781889,"vrifyCode":"jj8q"}

密码被加密了,然后对请求体进行了个签名,后端加上了签名校验

网页定位到登陆接口,可以清晰看到每个参数的加密方式,比较简单直接上手解密

password加密

bash 复制代码
# 测试
if __name__ == '__main__':
    password = "123123"

    # 使用 aesEncrypt 对应的加密方式
    encrypted = aes_encrypt(password)
    print(f"加密结果: {encrypted}")

    # 注意:aesEncrypt 的输出是 hex 字符串,
    # 而 myDecrypt 期望的是 Base64 输入,两者不兼容
    # 如果需要互解,需保持同一套逻辑

和网页加密123得到的结果是一样的

digest加密

最后还发现这个验证码没什么用,只需要提交的验证码和签名计算内的验证码一样即可

bash 复制代码
const arr = [
		`username=${account}`,
		`password=${encryptPassword}`,
		`timestamp=${timestamp}`,
		`vrifyCode=${genCode}`,
	];

和提交的"vrifyCode": "123123"一致即可

最后写成脚本,大功告成

接下来使用登陆的accessToken进行调用接口即可,如需使用请去鱿鱼助手直接使用成品