解密铜仁学院登陆算法
今天在鱿鱼助手上新增了一个软件,铜仁学院
现在解析下算法,通过抓包发现了个奇葩
请求体和参数都有数据,是前端没更新还是故意这样设计的?
去掉了params测试后发现任然可以获得登陆数据
{"username":"20xxxxxx01","password":"57D4xxxxxxxxx97B16","digest":"94eced0xxxxxxxx45b78","timestamp":1782882781889,"vrifyCode":"jj8q"}密码被加密了,然后对请求体进行了个签名,后端加上了签名校验
网页定位到登陆接口,可以清晰看到每个参数的加密方式,比较简单直接上手解密
password加密
# 测试if__name__=='__main__':password="123123"# 使用 aesEncrypt 对应的加密方式encrypted=aes_encrypt(password)print(f"加密结果: {encrypted}")# 注意:aesEncrypt 的输出是 hex 字符串,# 而 myDecrypt 期望的是 Base64 输入,两者不兼容# 如果需要互解,需保持同一套逻辑和网页加密123得到的结果是一样的
digest加密
最后还发现这个验证码没什么用,只需要提交的验证码和签名计算内的验证码一样即可
const arr=[`username=${account}`,`password=${encryptPassword}`,`timestamp=${timestamp}`,`vrifyCode=${genCode}`,];和提交的"vrifyCode": "123123"一致即可
最后写成脚本,大功告成
接下来使用登陆的accessToken进行调用接口即可,如需使用请去鱿鱼助手直接使用成品
