HoRain 云小助手:个人主页
⛺️生活的理想,就是为了理想的生活!
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
目录
⛳️ 推荐
JavaScript逆向工程:破解Mytoken的请求参数
步骤 1:捕获目标请求
步骤 2:定位关键JavaScript代码
步骤 3:动态调试代码
步骤 4:还原加密逻辑
步骤 5:验证与优化
注意事项
使用抓包工具:
XHR
或Fetch
类型),记录其 URL、Headers 和 Query Parameters。重点关注加密参数(如sign
、token
)。分析请求参数:
timestamp=1620000000
)、随机数(nonce=12345
)或加密签名(sign=abcd1234
)。全局搜索关键词:
sign
、encryptKey
)。md5
、sha256
、CryptoJS
)。params.join('')
)。定位加密函数:
function generateSign(params) {
const sortedKeys = Object.keys(params).sort();
let rawStr = '';
sortedKeys.forEach(key => {
rawStr += `${key}=${params[key]}&`;
});
rawStr = rawStr.slice(0, -1) + 'SECRET_KEY'; // 拼接密钥
return md5(rawStr);
}
设置断点:
跟踪变量值:
rawStr
、sign
)。md5(rawStr)
)。绕过反调试:
debugger
语句,点击调试器的 Deactivate breakpoints(停用断点)图标。debugger
函数: // ==UserScript==
// @name Bypass Debugger
// @namespace http://tampermonkey.net/
// @version 1.0
// @description 绕过无限debugger
// @match https://mytoken.com/*
// @run-at document-start
// ==/UserScript==
window._originalDebugger = window.debugger;
window.debugger = function() {};
参数拼接规则:
key1=value1&key2=value2
。&secret=xxx
)或动态密钥。哈希算法识别:
d41d8cd98f00b204e9800998ecf8427e
)。CryptoJS.HmacSHA256
。代码模拟示例(Python):
import hashlib
import time
def generate_sign(params, secret_key):
# 1. 参数按key排序
sorted_params = sorted(params.items(), key=lambda x: x[0])
# 2. 拼接为 key1value1key2value2...
raw_str = ''.join([f"{k}{v}" for k, v in sorted_params])
# 3. 附加密钥并MD5哈希
sign_str = raw_str + secret_key
return hashlib.md5(sign_str.encode()).hexdigest()
params = {
"symbol": "BTC",
"timestamp": int(time.time())
}
secret = "mytoken_secret_123" # 从JS代码中提取的密钥
sign = generate_sign(params, secret)
print(f"Generated sign: {sign}")
发送测试请求:
import requests
url = "https://api.mytoken.com/data"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ..."
}
params = {
"symbol": "BTC",
"timestamp": 1620000000,
"sign": sign
}
response = requests.get(url, params=params, headers=headers)
print(response.json())
处理动态密钥:
GET /api/get_secret
),需先请求密钥再生成签名。应对代码混淆:
法律与道德:
robots.txt
和服务条款。反爬策略:
time.sleep(random.uniform(1,3))
)。调试技巧:
window._originalMD5 = window.md5;
window.md5 = function(input) {
console.log("MD5 input:", input);
return _originalMD5(input);
}
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!
如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!
Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!