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