js逆向实战之某恩思登录参数加密
声明:本篇文章仅用于知识分享,不得用于其他用途
网址:aHR0cHM6Ly93d3cuNTFkbnMuY29tLw==
加密逻辑
- 输入用户名和密码登录,触发的数据包如下,所有的传参都是加密过的。
![image]()
- 全局搜索
email_or_phone,总共13处,不过有一处非常明显,包含了所有要的参数。
![image]()
- 打断点,触发。
$(".formAccount .email_or_phone").val()就是输入的手机号或邮箱,然后对其进行aes函数的处理。
![image]()
- 看下aes函数的加密逻辑,一目了然。
![image]()
- 其余的
password、type都是同样的加密逻辑。redirectTo是个固定值,_token的值是由_token变量赋值的,看下_token变量是个定值还是变量。在当前文件下搜索。
![image]()
![image]()
![image]()
![image]()
看下来应该是个定值。 - 代码就非常好写了。
- encrypt.js
var CryptoJS = require("crypto-js") function aes(val) { var k = CryptoJS.enc.Utf8.parse('1234567890abcDEF'); var iv = CryptoJS.enc.Utf8.parse('1234567890abcDEF'); enc = CryptoJS.AES.encrypt(val, k, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding }).toString(); return enc; } - ensi.py
如果输入的是不匹配的手机号和密码,返回的结果如下。import requests import execjs url = "https://www.51dns.com/login" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0", "Cookie": "xxxxxxxx", } username = input("请输入邮箱或手机号:") password = input("请输入密码:") jscode = open("encrypt.js", "r").read() js_compile = execjs.compile(jscode) encrypt_username = js_compile.call("aes", username) encrypt_password = js_compile.call("aes", password) account= js_compile.call("aes", "account") data = { "email_or_phone": encrypt_username, "password": encrypt_password, 'redirectTo': '/', 'type': account, "_token": "U0mptVXAg1Acezzf5SG7RDoGoOBmlwtXQlv2VyGR", } resp = requests.post(url, headers=headers, data=data) resp.encoding = "utf-8" print(resp.text)
![image]()
如果输入的是匹配的手机号和密码,返回的结果如下。
![image]()
这个加密逻辑是最简单的了,刚入门的新手可以拿来练习一下。










浙公网安备 33010602011771号