所以我在一个有漏洞的WordPress网站上看到了这个。它基本上有一轮混淆(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编写一个deobfouscator来理解混淆技术,而不是仅仅通过运行JS文件来获取明文数据。你知道吗
所以我首先试着理解代码发生了什么:
key=xor键, enced=要解码的文本
xor\u enc似乎接受两个参数,“string”和“key”。 变量“res”是空字符串 一个for循环被初始化,从0到字符串的长度,一次一个字符 “res”变量将由以下内容填充:
a)“字符串”的每个字符都将转换为一个字符 b) i%(模)的位置乘以键的完整长度(10个字符)
然后是一个XOR 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)
是该元素的索引(它只是用wrapparound循环遍历键)。你知道吗b64decode()
返回一个bytes
对象,而不是一个字符串,因此您只需以整数形式访问元素,无需调用ord()
。你知道吗DEMO
相关问题 更多 >
编程相关推荐