将编译成 ASCII 码的 lua 字符串解密

我正在尝试解密一个加密的 lua 代码,因为: 第一:我不想从头开始创建它。 第二:听起来很有趣!

我在 Visual Basic 2013 中创建了一个简单的程序,可以从文件中执行 lua 函数,文件如下所示,将加密的代码定义为 ASCII 字节中的 'code',我的 lua 代码将其转换回原始形式。

问题是:我可以翻译一些单词和符号,但它仍然很混乱,因为这是 lua 代码,包含数字,符号和单词。

程序的文件,如加密的代码和代码解密,可在我的 Gist 中找到:https://gist.github.com/DarkShinz/e9aeca7dd1ac1035cf6e,因此您可以重现我的进展。

我需要改进我的以下代码的建议,因为到目前为止,它将解密一些单词,但其他一些单词仍然只是数字和符号。仍然是混乱的外观。

function tablelength(T)
  local count = 0
  for _ in pairs(T) do count = count + 1 end
  return count
end

local code = {SOME COMPILED LUA CODE} //我的代码太长,无法添加在此处
local finalString = "耶!:"
local codeLength = tablelength(code)
local text = nil

for i = 1, codeLength do
local letter = string.char(code[i])

if (letter:match("%w")) then

elseif (letter:match("%d")) then

elseif (letter:match("%s")) then

elseif (letter:match("%p")) then

elseif (letter:match("%(")) then

elseif (letter:match("%)")) then

elseif (letter:match("%.")) then

elseif (letter:match("%+")) then

elseif (letter:match("%*")) then

elseif (letter:match("%@")) then

elseif (letter:match("%?")) then

elseif (letter:match("%^")) then

elseif (letter:match("%$")) then

elseif (letter:match("%-")) then

elseif (letter:match("%=")) then

elseif (letter:match("%_")) then

elseif (letter:match("%[")) then

elseif (letter:match("%]")) then

elseif (letter:match("%:")) then

elseif (letter:match("%,")) then

elseif (letter:match("%#")) then

elseif (letter:match("%&")) then

else
letra = string.byte(letter)
end

finalString = finalString .. letra
end

print(finalString)

这是我的输出

我希望我能拥有一个完整干净的 lua 源代码。

点赞