工具
过程
运行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
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 cnlnnn@qq.com