我该如何对文本进行模糊处理?

时间:2018-11-06 15:24:26

标签: text lua deobfuscation

我最近找到了一些lua代码,而我在里面发现的是一些混淆的字符串。这让我想知道那里使用了哪种混淆技术。有人有主意吗?

240.06230.0575240.06240.06270.0675250.0625265.06625270.0675250.0625285.07125260.065260.065260.065250.0625265 ...
https://pastebin.com/raw/7RkxjWQw

1 个答案:

答案 0 :(得分:1)

如果将此字符串分成xxx.yyyy...个块(精确到小数点前三位),然后将每个数字乘以800/4001(结果将是整数!),然后将这些整数转换为ASCII ,则会显示16个浮点数的隐藏序列:

0.0062562944425795
0.036286507766961
0.02127140110477
0.047547837763604
0.041291543321025
0.0025025177770318
0.011261329996643
0.018768883327738
0.017517624439223
0.042542802209541
0.037537766655477
0.016266365550707
0.0087588122196113
0.057557908871731
0.025025177770318
0.026276436658834

难题就在这里停止吗?
还是应该尝试进一步解密?


好的,我们可以将它们全部乘以32767/41(结果将是整数!)

5
29
17
38
33
2
9
15
14
34
30
13
7
46
20
21

嗯,这个谜题似乎真的很有趣...
结束了吗?


只是用谷歌搜索。
那是加密的密码,与Roblox有关。
因此,OP当然没有解码器脚本:-)


好,终于做到了。

function decode_password(encoded_password)
   local result = ""
   local buffer = ""
   for x in encoded_password:gsub("%d%d%d%.", "\0%0"):gmatch"%Z+" do
      x = math.floor(tonumber(x) / 5.00125 + 0.5)
      if x ~= 95 then
         buffer = buffer..string.char(x)
      elseif buffer ~= "" then
         x = math.floor(tonumber(buffer) * 799.195122 + 0.5)
         result = result..("qazwsxedcrfjmik,o0 23456-=\\vtgbyhnul.p;;;/[']1789"):sub(x, x)
         buffer = ""
      end
   end
   return result
end

示例1:

local p = '240.06230.0575240.06240.06270.0675250.0625265.06625270.0675250.0625285.07125260.065260.065260.065250.0625265.06625275.06875285.07125265.06625475.11875240.06230.0575240.06255.06375270.0675250.0625280.07270.0675265.06625240.06275.06875275.06875270.0675270.0675285.07125270.0675245.06125475.11875240.06230.0575240.06250.0625245.06125250.0625275.06875245.06125260.065240.06245.06125245.06125240.06260.065275.06875275.06875475.11875240.06230.0575240.06260.065275.06875265.06625260.065275.06875280.07255.06375275.06875275.06875270.0675255.06375270.0675240.06260.065475.11875240.06230.0575240.06260.065245.06125250.0625285.07125245.06125265.06625260.065255.06375255.06375250.0625245.06125240.06250.0625265.06625475.11875240.06230.0575240.06240.06250.0625265.06625240.06250.0625265.06625245.06125275.06875275.06875275.06875275.06875240.06255.06375245.06125280.07475.11875240.06230.0575240.06245.06125245.06125250.0625270.0675245.06125255.06375250.0625285.07125285.07125285.07125270.0675270.0675260.065255.06375475.11875240.06230.0575240.06245.06125280.07275.06875270.0675280.07280.07280.07255.06375255.06375250.0625275.06875275.06875255.06375280.07475.11875240.06230.0575240.06245.06125275.06875265.06625245.06125275.06875270.0675250.0625260.065260.065255.06375285.07125250.0625250.0625255.06375475.11875240.06230.0575240.06260.065250.0625265.06625260.065250.0625280.07240.06250.0625250.0625240.06285.07125265.06625260.065245.06125475.11875240.06230.0575240.06255.06375275.06875265.06625255.06375275.06875275.06875270.0675270.0675270.0675265.06625265.06625260.065275.06875275.06875475.11875240.06230.0575240.06245.06125270.0675250.0625270.0675270.0675255.06375270.0675265.06625265.06625265.06625240.06275.06875240.06275.06875475.11875240.06230.0575240.06240.06280.07275.06875265.06625280.07280.07245.06125250.0625250.0625245.06125285.07125270.0675245.06125245.06125255.06375475.11875240.06230.0575240.06265.06625275.06875265.06625265.06625275.06875285.07125240.06280.07280.07275.06875245.06125275.06875255.06375245.06125475.11875240.06230.0575240.06250.0625265.06625240.06250.0625265.06625245.06125275.06875275.06875275.06875275.06875240.06255.06375245.06125280.07475.11875240.06230.0575240.06250.0625270.0675250.0625275.06875270.0675260.065255.06375270.0675270.0675265.06625280.07280.07255.06375260.065475.11875'
print(decode_password(p))  --> stophackingme123

示例2:

for _, info in ipairs(loginDatabase) do
   print(info.username, decode_password(info.password))
end