python爬⾍之wasm逆向wasm逆向超详细
前⾔:,在js逆向中,遇到wasm加密,wasm是通过字节码以⼆进制格式传输,由于模块的结构,可以通过浏览器并⾏编译,以便进⼀步加快速度。
⼀.问题:
在请求链接上,发现有签名,咋⼀看像个时间戳进⾏处理后的数据。
⼆.解决:
1.全局搜索sign,轻松到sign,向上看使⽤$wasm进⾏加密。
2.在⾕歌中可以看见wasm源码,在⽕狐中看到就是base64编码,解码后看到的是⼀串乱码。
⾕歌查看:
⽕狐查看:
3.先把wasm⽂件下载下来。
def get_wasm():
url = "xxxxxxxx/js/Wasm.wasm"
response = (url).content
with open("Wasm.wasm", 'wb') as fp:
fp.write(response)
4.安装/导⼊第三⽅库pywasm ,pywasm 是⼀个使⽤纯 Python 实现的 WebAssembly 解释器。
一串好看的乱码# pip install pywasm
import pywasm
5.再来分析js加密。
# js加密代码
var n = (this.page - 1) * this.limit,
e = this.$pt(n, und((new Date).getTime() / 1e3).toString()));
# n就是翻页页码减1,再乘10
# und((new Date).getTime() / 1e3).toString())就是得到时间戳,取整,转为字符。
6.使⽤python代码复现。
import pywasm
def get_sign():
for i in range(3):
# 得到时间戳,取证
t = int(time.time())
# 读取wasm⽂件
vm = pywasm.load("./Wasm.wasm")
# 执⾏加密
sign = vm.exec("encrypt", [i, t])
print(sign)
结束语:怅寥廓,问苍茫⼤地,谁主沉浮?
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论