本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关.本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
目标网址:aHR0cHM6Ly9wYXNzcG9ydDIuY2hhb3hpbmcuY29tL2xvZ2luP2ZpZD0mbmV3dmVyc2lvbj10cnVlJnJlZmVyPWh0dHBzJTNBJTJGJTJGaS5jaGFveGluZy5jb20=
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
感谢各位大佬的观看,我是菜鸟,新手上路,在某同学的忽悠下入坑js逆向,请多指教
查看请求载荷,uname,password 均加密
查看响应数据
查看启动器,点击红框
进入,在上面找到加密的地方
断点,点击登录,触发断点,F9进入这个函数,一眼AES加密,把代码扣下来
测试成功
js代码:
[JavaScript] 纯文本查看 复制代码 const CryptoJS = require("crypto-js");
function encryptByAES(message, key) {
let CBCOptions = {
iv: CryptoJS.enc.Utf8.parse(key),
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
};
let aeskey = CryptoJS.enc.Utf8.parse(key);
let secretData = CryptoJS.enc.Utf8.parse(message);
let encrypted = CryptoJS.AES.encrypt(
secretData,
aeskey,
CBCOptions
);
return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
}
function run(username, password) {
uname = encryptByAES(username, "u2oh6Vu^HWe4_AES")
pwd = encryptByAES(password, "u2oh6Vu^HWe4_AES")
return [uname,pwd]
}
编写主函数:
[Python] 纯文本查看 复制代码 import requests
import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")
import execjs
login_url = '#填写请求接口'
headers = {
"accept": "application/json, text/javascript, */*; q=0.01",
"accept-encoding": "gzip, deflate, br, zstd",
"accept-language": "zh-CN,zh;q=0.9",
"cache-control": "no-cache",
"connection": "keep-alive",
"content-length": "216",
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
"cookie": "你的cookie",
"host": "",
"origin": "",
"pragma": "no-cache",
"referer": "",
"sec-ch-ua": "\"Google Chrome\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
"x-requested-with": "XMLHttpRequest",
}
username = input("请输入手机号/超星号:")
password = input("请输入密码:")
with open("main.js") as f:
jscode = f.read()
js = execjs.compile(jscode)
result = js.call("run", username,password)
print(result)
payload = {
"fid": -1,
"uname": result[0],
"password": result[1],
"refer": '',
"t": True,
"forbidotherlogin": 0,
"validate": "",
"doubleFactorLogin": 0,
"independentId": 0,
"independentNameId": 0
}
res = requests.post(login_url, headers=headers, data=payload)
print(res.text)
运行截图:
失败:
成功:
今天的分享就到这里,这个案例很简单,适合新手入门练习!-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|