gpt4 book ai didi

javascript - 使用 Python 逆向 XOR Javascript 混淆函数

转载 作者:行者123 更新时间:2023-12-02 23:08:42 29 4
gpt4 key购买 nike

所以我在查看一个受感染的 WordPress 网站时看到了这个注入(inject)的 js。它基本上进行了一轮混淆(charCodeAt(13-3,9-2等)。然后,它输出以下内容:

var key = 'eooquewZmf';
var enced = '<encoded_base64_blob>';

function xor_enc(string, key) {
var res = '';
for (var i = 0; i < string.length; i++) {
res += String.fromCharCode(string.charCodeAt(i) ^ key.charCodeAt(i % key.length));
}
return res;
}

我确实是想通过用 Python 编写一个反混淆器来理解混淆技术,而不是仅仅通过运行 JS 文件并获取明文来获取明文数据。

所以我首先尝试了解代码发生了什么:

变量

键 = 异或键,enced = 要解码的文本

函数

xor_enc 似乎有两个参数:“string”和“key”。变量“res”是一个空字符串for 循环已初始化,将从 0 到字符串的长度,一次一个字符“res”变量将由以下内容填充:

a) “string”的每个字符都会被转换为一个charb) i %(模)除以 key 完整长度(10 个字符)的位置

然后进行异或 b.然后将被返回。

所以我认为我的主要问题是理解 b 并在 Python 中复制它。这是我到目前为止所拥有的:https://repl.it/repls/CluelessUnsungDisc ,但它是 fubar 并返回以下错误:

File "main.py", line 8, in <module>
newstring += chr(ord(dec[letter]) ^ ord(letter % len(key)))
TypeError: ord() expected string of length 1, but int found

我不知道这是我的括号还是嵌套,但ord没有正确看到字符位置。

原始JS在这里:https://pastebin.com/yMz6aP7V ((请记住,它的 JS 来自受感染的 WordPress 网站,因此可能是恶意的)

任何帮助将不胜感激!

based ="<base64>"
dec = base64.b64decode(based)
print(dec)
key = 'eooquewZmf'
newstring = ''
for letter in range(len(dec)):
newstring += chr(ord(dec[letter]) ^ ord(letter % len(key)))
print(newstring)

File "main.py", line 8, in <module>
newstring += chr(ord(dec[letter]) ^ ord(letter % len(key)))
TypeError: ord() expected string of length 1, but int found

最佳答案

您应该与key 的元素进行异或运算。 letter % len(key) 是该元素的索引(它只是通过环绕方式循环遍历键)。

b64decode() 返回一个 bytes 对象而不是字符串,因此您只需以整数形式访问元素,无需调用 ord ().

import base64

def b64_xor(b64,key):
dec = base64.b64decode(b64)
newstring = ''
for i, letter in enumerate(dec):
newstring += chr(letter ^ ord(key[i % len(key)]))
print(newstring)

DEMO

关于javascript - 使用 Python 逆向 XOR Javascript 混淆函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57467436/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com