吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 681|回复: 0
收起左侧

[求助] 求解lua语言代码混淆转python

[复制链接]
fawean 发表于 2023-4-1 22:00
有机油给本人发了一段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), “****”)))


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-23 11:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表