Как я могу deobfuscate этот текст? - PullRequest
0 голосов
/ 06 ноября 2018

Я недавно нашел некоторый код lua, и внутри я обнаружил некоторую запутанную строку. Это заставило меня задуматься о том, какую технику обфускации там использовали. У кого-нибудь есть идея?

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

1 Ответ

0 голосов
/ 06 ноября 2018

Если эта строка разбивается на 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
...