工具
JsRPC
下载
mitmproxy
下载
过程
运行JsRpc

复制 JsEnv_Dev.js 的内容在浏览器控制台执行

连接通信
var demo = new Hlclient("ws://127.0.0.1:12080/ws?group=test");

查找加密函数(通常搜索关键字:crypt、aes、cbc、sm……)

打上断点,点击一下其他功能点,确认 p() 为解密函数

控制台输入 window.decrypt_func=p ,将解密函数注册为全局函数
测试全局函数 decrypt_func 是否可用

去掉断点,将 decrypt_func 注册到JsRpc远程调用
demo.regAction("decrypt", function (resolve,param) {
var decrypt_data = decrypt_func(param);
resolve(decrypt_data);
})

访问 http://127.0.0.1:12080/go?group=test&action=decrypt¶m=encrypt_data 可以正常获取到结果

继续找加密函数

可疑的通通打上断点,点击其他功能点触发请求,发现是 g() 处理加密

同样注册为全局函数 encrypt_func 并测试是否可用

去掉断点,将 encrypt_func 注册到JsRpc远程调用
demo.regAction("encrypt", function (resolve,param) {
var encrypt_data = encrypt_func(param);
resolve(encrypt_data);
})
问题
中文传输乱码
js解密后乱码
import codecs
def fix_code(str):
bytes_data = codecs.escape_decode(escaped_str)[0]
s1 = bytes_data.decode('utf-8')
b2 = s1.encode('latin1')
s2 = b2.decode('utf-8')
b1 = s2.encode('latin1')
final_text = b1.decode('utf-8')
return final_text
参考
JsRpc/README.md at main · jxhczhl/JsRpc
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。