求解lua语言代码混淆转python
有机油给本人发了一段lua代码,我看本质上是进行加密,我尝试将其覆写为python代码从而进一步破解,但是结果却不如人意,有无大佬告知我python代码的问题local a = loadstring((function(b,c)
-- 定义按位异或函数
function bxor(d,e)
local f={{0,1},{1,0}}
local g=1;
local h=0;
while d>0 or e>0 do
h=h+f*g;
d=math.floor(d/2)
e=math.floor(e/2)
g=g*2
end
return h
end
-- 定义将字符串转换为数值数组的函数
local i=function(b)
local j={}
local k=1;
local l=b
while l>=0 do
j=b
k=k+1;
l=b
end
return j
end
-- 定义将数值数组与密钥进行按位异或的函数
local m=function(b,c)
if #c <= 0 then
return {}
end
local k=1;
local n=1;
for k=1,#b do
b=bxor(b,string.byte(c,n))
n=n+1;
if n > #c then
n=1
end
end
return b
end
-- 定义将数值数组转换为字符串的函数
local o=function(b)
local j=""
for k=1,#b do
j=j..string.char(b)
end
return j
end
return o(m(i(b),c)) -- 调用函数:先将字符串转换为数值数组,再进行按位异或,最后将数值数组转换为字符串并返回
end)({####},“****”) -- 调用匿名函数并传入两个参数:####和****
)
接下来是我写的python
def bxor(d, e):
f = [, ]
g = 1
h = 0
while d > 0 or e > 0:
h = h + f * g
d = d // 2
e = e // 2
g = g * 2
return h
def i(b):
j = []
k = 1
l = b
while l >= 0:
j.append(b)
k = k + 1
l = b
return j
def m(b, c):
if len(c) <= 0:
return []
k = 1
n = 1
for k in range(len(b)):
b = bxor(b, ord(c))
n = n + 1
if n > len(c):
n = 1
return b
def o(b):
j = ""
for k in range(len(b)):
j = j + chr(b)
return j
a = [####]
print(o(m(i(a), “****”)))
页:
[1]