zikoman

Untitled

Dec 30th, 2023 (edited)
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 26.75 KB | None | 0 0
  1. -- Função para executar operação do dump juntamente com os valores solicitados com as palavras chave na busca
  2. function hcDump()
  3. -- Função para ler ou escrever na memória
  4. function rwmem(Address, SizeOrBuffer)
  5. -- Verifica se o endereço fornecido não é nulo
  6. assert(Address ~= nil, "[rwmem]: erro, o endereço fornecido é nulo.")
  7.  
  8. _rw = {} -- Cria uma tabela vazia para armazenar informações de leitura/escrita
  9.  
  10. -- Verifica se SizeOrBuffer é um número (para leitura)
  11. if type(SizeOrBuffer) == "number" then
  12. _ = "" -- Inicializa uma string vazia para armazenar os bytes lidos
  13.  
  14. -- Cria uma série de registros de leitura para cada byte na faixa de endereços
  15. for i = 1, SizeOrBuffer do
  16. _rw[i] = {
  17. address = Address - 1 + i, -- Calcula o endereço para o byte atual
  18. flags = gg.TYPE_BYTE -- Define o tipo de dados como byte
  19. }
  20. end
  21.  
  22. -- Lê os valores da memória e forma uma string hexadecimal com os bytes
  23. for i, i in ipairs(gg.getValues(_rw)) do
  24. if i.value == 0 and limit == true then
  25. return _ -- Se encontrar um byte 0 e "limit" for verdadeiro, retorna a string atual
  26. end
  27. _ = _ .. string.format("%02X", i.value & 255) -- Formata o byte como hexadecimal
  28. end
  29. return _ -- Retorna a string hexadecimal resultante
  30. end
  31.  
  32. Byte = {} -- Cria uma tabela para armazenar bytes
  33. -- Divide a string em pares de dois caracteres (bytes) e armazena em "Byte"
  34. SizeOrBuffer:gsub("..", function(x)
  35. Byte[#Byte + 1] = x -- Armazena o byte atual em "Byte"
  36. _rw[#Byte] = {
  37. address = Address - 1 + #Byte, -- Calcula o endereço para o byte atual
  38. flags = gg.TYPE_BYTE, -- Define o tipo de dados como byte
  39. value = x .. "h" -- Define o valor como o byte hexadecimal
  40. }
  41. end)
  42.  
  43. gg.setValues(_rw) -- Escreve os bytes na memória nos endereços calculados
  44. end
  45.  
  46. -- Função para decodificar valores Base64
  47. function base64Decode(data)
  48. local b = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
  49. data = string.gsub(data, "[^" .. b .. "=]", "") -- Remove caracteres inválidos
  50.  
  51. -- Decodifica cada caractere na string de entrada
  52. return (data:gsub(".", function(x)
  53. if x == "=" then return "" end
  54. local r, f = "", (b:find(x) - 1)
  55.  
  56. -- Converte o caractere em um valor binário de 6 bits
  57. for i = 6, 1, -1 do
  58. r = r .. (f % 2 ^ i - f % 2 ^ (i - 1) > 0 and "1" or "0")
  59. end
  60. return r
  61. end):gsub("%d%d%d?%d?%d?%d?%d?%d?", function(x)
  62. if (#x ~= 8) then return "" end
  63. local c = 0
  64.  
  65. -- Converte o valor binário de 8 bits em um caractere ASCII
  66. for i = 1, 8 do
  67. c = c + (x:sub(i, i) == "1" and 2 ^ (8 - i) or 0)
  68. end
  69. return string.char(c)
  70. end))
  71. end
  72.  
  73. -- Função para decodificar uma string hexadecimal em ASCII
  74. function hd(hex)
  75. -- A função `gsub` percorre a string hexadecimal e a converte em caracteres ASCII
  76. return (hex:gsub("%x%x", function(digits)
  77. -- A função `tonumber` converte os dígitos hexadecimais em números inteiros
  78. -- E então, a função `string.char` converte o número em um caractere ASCII correspondente
  79. return string.char(tonumber(digits, 16))
  80. end))
  81. end
  82.  
  83. -- Função para codificar uma string em sua representação hexadecimal
  84. function he(str)
  85. -- A função `gsub` percorre cada caractere da string de entrada
  86. return (str:gsub(".", function(char)
  87. -- A função `char:byte()` obtém o valor numérico do caractere na tabela ASCII
  88. -- E então, `string.format` converte esse valor em uma representação hexadecimal com 2 dígitos
  89. return string.format("%2x", char:byte())
  90. end))
  91. end
  92.  
  93. -- Função para decodificar uma representação hexadecimal em uma string
  94. function hexdecode(hex)
  95. -- A função `gsub` percorre pares de dígitos hexadecimais na string de entrada
  96. return (hex:gsub("%x%x", function(digits)
  97. -- A função `tonumber(digits, 16)` converte os dígitos hexadecimais em um valor numérico decimal
  98. -- E então, `string.char` converte esse valor numérico em um caractere na tabela ASCII
  99. return string.char(tonumber(digits, 16))
  100. end))
  101. end
  102.  
  103. -- Função para codificar uma string em uma representação hexadecimal
  104. function hexencode(str)
  105. -- A função `gsub` percorre cada caractere na string de entrada
  106. return (str:gsub(".", function(char)
  107. -- A função `char:byte()` obtém o valor numérico do caractere na tabela ASCII
  108. -- `string.format("%2x", ...)` formata esse valor numérico como dois dígitos hexadecimais
  109. return string.format("%2x", char:byte())
  110. end))
  111. end
  112.  
  113. -- Função para converter um número decimal em uma representação hexadecimal
  114. function Dec2Hex(nValue)
  115. -- A função `string.format("%X", ...)` converte o valor numérico em uma representação hexadecimal
  116. nHexVal = string.format("%X", nValue)
  117. -- Criamos uma cópia da representação hexadecimal como uma string
  118. sHexVal = nHexVal .. ""
  119. -- Retornamos a representação hexadecimal como uma string
  120. return sHexVal
  121. end
  122.  
  123. -- Função para converter um valor em um número inteiro
  124. function ToInteger(number)
  125. -- Tenta converter o valor para um número usando tonumber()
  126. local intValue = tonumber(number)
  127.  
  128. -- Se a conversão for bem-sucedida, arredonda o número para baixo usando math.floor()
  129. -- Caso contrário, lança um erro com uma mensagem personalizada
  130. return math.floor(intValue or error("Não foi possível transmitir '" .. tostring(number) .. "' para um número inteiro."))
  131. end
  132.  
  133. -- Função para salvar dados em um arquivo chamado "dump_hex.txt" no armazenamento externo
  134. function save(data, fileName)
  135. fileName = fileName or "dump_hex.txt" -- Nome do arquivo a ser salvo
  136. local filePath = gg.EXT_STORAGE .. "/" .. fileName
  137.  
  138. -- Abrindo o arquivo para escrita usando a função "io.open"
  139. local file = io.open(filePath, "w")
  140.  
  141. if file then
  142. file:write(data)
  143. file:close()
  144.  
  145. -- Exibindo uma mensagem de aviso usando a função "toast" do GameGuardian
  146. gg.toast("Te peguei, Lionel Richie!" .. fileName)
  147. else
  148. gg.alert("Falha ao salvar os dados.")
  149. end
  150. end
  151.  
  152. -- Função para salvar dados em um arquivo chamado "dump.txt" no armazenamento externo
  153. function saveHC(data, fileName)
  154. fileName = fileName or "dump.txt" -- Nome do arquivo a ser salvo
  155. local filePath = gg.EXT_STORAGE .. "/" .. fileName
  156.  
  157. -- Abrindo o arquivo para escrita usando a função "io.open"
  158. local file = io.open(filePath, "w")
  159.  
  160. if file then
  161. file:write(data)
  162. file:close()
  163.  
  164. -- Exibindo uma mensagem de comemoração usando a função "toast" do GameGuardian
  165. gg.toast("Te peguei, Lionel Richie! " .. fileName)
  166. else
  167. gg.alert("Falha ao salvar os dados.")
  168. end
  169. end
  170.  
  171. -- Função para fechar as operações e enviar a prima
  172. function close()
  173. gg.clearResults()
  174. results = gg.getListItems()
  175. gg.removeListItems(results)
  176. print(hd("E385A4"))
  177. print(hd("E2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A1BFE2A09BE2A09BE2A08BE2A089E2A099E2A0BBE2A0BFE2A0BFE2A0BFE2A0BFE2A2BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BF0AE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A1BFE2A083E2A084E2A084E2A084E2A084E2A084E2A084E2A084E2A084E2A0B9E2A3BFE2A3BFE2A3B6E2A3B6E2A3A6E2A3ACE2A2B9E2A3BFE2A3BF0AE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A083E2A084E2A084E2A084E2A3B0E2A3A7E2A180E2A084E2A084E2A084E2A084E2A088E2A299E2A18BE2A3BFE2A3BFE2A3BFE2A2B8E2A3BFE2A3BF0AE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A084E2A084E2A0B0E2A0BCE2A2AFE2A3BFE2A3BFE2A3A6E2A384E2A084E2A084E2A084E2A088E2A2A1E2A3BFE2A3BFE2A3BFE2A2B8E2A3BFE2A3BF0AE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A084E2A084E2A0B8E2A0A4E2A095E2A09BE2A099E2A0B7E2A3BFE2A186E2A084E2A084E2A084E2A3B8E2A3BFE2A3BFE2A18FE2A3BCE2A3BFE2A3BF0AE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A187E2A084E2A084E2A084E2A084E2A084E2A084E2A084E2A084E2A084E2A084E2A084E2A084E2A3B4E2A3BFE2A3BFE2A3BFE2A2A1E2A3BFE2A3BFE2A3BF0AE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A19FE2A084E2A084E2A084E2A084E2A084E2A384E2A084E2A280E2A084E2A084E2A280E2A3A4E2A3BEE2A3BFE2A3BFE2A3BFE2A283E2A3BEE2A3BFE2A3BFE2A3BF0AE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A0BFE2A39BE2A3A1E2A384E2A380E2A084E2A0A0E2A2B4E2A3BFE2A3BFE2A1BFE2A384E2A3B4E2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A283E2A3BEE2A3BFE2A3BFE2A3BFE2A3BF0AE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A18FE2A3BCE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3A9E2A1BDE2A181E2A2B8E2A3BFE2A3BFE2A3BFE2A3BFE2A3BF0AE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A283E2A3BFE2A3BFE2A29FE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3AEE2A2ABE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A39FE2A2BFE2A083E2A084E2A2BBE2A3BFE2A3BFE2A3BFE2A3BF0AE2A3BFE2A3BFE2A3BFE2A3BFE2A1BFE2A3B8E2A09FE2A3B5E2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BEE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3B7E2A384E2A2B0E2A184E2A2BFE2A3BFE2A3BFE2A3BF0AE2A3BFE2A3BFE2A3BFE2A3BFE2A187E2A08FE2A3BCE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3A6E2A0B9E2A18EE2A3BFE2A3BFE2A3BF0AE2A3ADE2A38DE2A09BE2A0BFE2A084E2A2B0E2A08BE2A189E2A0B9E2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A099E2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A19FE2A281E2A099E2A186E2A2A1E2A3BFE2A3BFE2A3BF0AE2A0BBE2A3BFE2A186E2A084E2A3A4E2A088E2A2A3E2A388E2A3A0E2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A08FE2A384E2A0BBE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A386E2A388E2A3B4E2A083E2A3BFE2A3BFE2A3BFE2A3BF0AE2A180E2A088E2A2BFE2A084E2A3BFE2A187E2A084E2A099E2A0BFE2A3BFE2A1BFE2A0BFE2A28BE2A3A5E2A3BEE2A3BFE2A3B7E2A38CE2A0BBE2A2BFE2A3BFE2A3BFE2A1BFE2A09FE2A3A1E2A3BEE2A3BFE2A3BFE2A0BFE2A28B0AE2A09BE2A0B3E2A084E2A2A0E2A3BFE2A087E2A084E2A3B7E2A191E2A2B6E2A3B6E2A2BFE2A3BFE2A3BFE2A3BFE2A3BDE2A3BFE2A3BFE2A3BFE2A3B6E2A3B6E2A190E2A3B6E2A3BFE2A0BFE2A09BE2A3A9E2A184E2A084E2A2B8"))
  178.  
  179. os.exit()
  180. end
  181.  
  182. -- Definindo a variável de limite como falsa
  183. limit = false
  184. -- Limpa os resultados anteriores da busca no GameGuardian
  185. gg.clearResults()
  186. -- Define a visibilidade do GameGuardian como falsa
  187. gg.setVisible(false)
  188. -- Define a região de pesquisa no espaço de memória do Java Heap com o Game Guardian (gg)
  189. gg.setRanges(gg.REGION_JAVA_HEAP)
  190.  
  191. -- Procura por um número específico na memória e armazena o resultado
  192. gg.searchNumber(hd("683341333833303430"), gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0)
  193. local r = gg.getResults(1)
  194.  
  195. -- Verifica se nenhum resultado foi encontrado e exibe uma mensagem caso seja o caso
  196. if #r < 1 then
  197. gg.toast(hd("506169206EC3A36F20656E636F6E747261646F"))
  198. hc_x2 = true
  199. end
  200.  
  201. -- Verifica se uma flag "hc_x2" está definida e repete a pesquisa se for verdadeira
  202. if hc_x2 then
  203. gg.searchNumber(hd("6833413334333433333430"), gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0)
  204. local r = gg.getResults(1)
  205.  
  206. -- Verifica se nenhum resultado foi encontrado novamente e exibe uma mensagem caso seja o caso
  207. if #r < 1 then
  208. gg.toast(hd("506169206EC3A36F20656E636F6E747261646F"))
  209. hc_x3 = true
  210. end
  211. end
  212.  
  213. -- Verifica se uma flag "hc_x3" está definida e repete a pesquisa se for verdadeira
  214. if hc_x3 then
  215. gg.searchNumber(hd("68334133383330333833303430"), gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0)
  216. local r = gg.getResults(1)
  217.  
  218. -- Verifica se nenhum resultado foi encontrado novamente e exibe uma mensagem caso seja o caso
  219. if #r < 1 then
  220. gg.toast(hd("506169206EC3A36F20656E636F6E747261646F"))
  221. hc_x4 = true
  222. end
  223. end
  224.  
  225. -- Verifica se uma flag "hc_x4" está definida e repete a pesquisa se for verdadeira
  226. if hc_x4 then
  227. gg.searchNumber(hd("683341333233323430"), gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0)
  228. local r = gg.getResults(1)
  229.  
  230. -- Verifica se nenhum resultado foi encontrado novamente e exibe uma mensagem caso seja o caso
  231. if #r < 1 then
  232. gg.toast(hd("506169206EC3A36F20656E636F6E747261646F"))
  233. hc_x5 = true
  234. end
  235. end
  236.  
  237. -- Verifica se uma flag "hc_x5" está definida e repete a pesquisa se for verdadeira
  238. if hc_x5 then
  239. gg.searchNumber(hd("6834373435353432303246323034383534353435303246"), gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0)
  240. local r = gg.getResults(1)
  241.  
  242. -- Verifica se nenhum resultado foi encontrado novamente e exibe uma mensagem caso seja o caso
  243. if #r < 1 then
  244. gg.toast(hd("506169206EC3A36F20656E636F6E747261646F"))
  245. hc_x6 = true
  246. end
  247. end
  248.  
  249. -- Verifica se uma flag "hc_x6" está definida e repete a pesquisa se for verdadeira
  250. if hc_x6 then
  251. gg.searchNumber(hd("6835353730363737323631363436353341"), gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0)
  252. local r = gg.getResults(1)
  253.  
  254. -- Verifica se nenhum resultado foi encontrado novamente e exibe uma mensagem caso seja o caso
  255. if #r < 1 then
  256. gg.toast(hd("506169206EC3A36F20656E636F6E747261646F"))
  257. hc_x7 = true
  258. end
  259. end
  260.  
  261. -- Verifica se uma flag "hc_x7" está definida e repete a pesquisa se for verdadeira
  262. if hc_x7 then
  263. gg.searchNumber(hd("683633373236433636354435423633373236433636"), gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0)
  264. local r = gg.getResults(1)
  265.  
  266. -- Verifica se nenhum resultado foi encontrado novamente e exibe uma mensagem caso seja o caso
  267. if #r < 1 then
  268. gg.toast(hd("506169206EC3A36F20656E636F6E747261646F"))
  269. hc_x8 = true
  270. end
  271. end
  272.  
  273. -- Verifica se uma flag "hc_x8" está definida e repete a pesquisa se for verdadeira
  274. if hc_x8 then
  275. gg.searchNumber(hd("68363337323643363635443438364637333734"), gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0)
  276. local r = gg.getResults(1)
  277.  
  278. -- Verifica se nenhum resultado foi encontrado novamente e exibe uma mensagem caso seja o caso
  279. if #r < 1 then
  280. gg.toast(hd("506169206EC3A36F20656E636F6E747261646F"))
  281. hc_x9 = true
  282. end
  283. end
  284.  
  285. -- Verifica se uma flag "hc_x9" está definida e repete a pesquisa se for verdadeira
  286. if hc_x9 then
  287. gg.searchNumber(hd("683542373337303643363937343530373336393730363836463645354435423733373036433639373435303733363937303638364636453544"), gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0)
  288. local r = gg.getResults(1)
  289.  
  290. -- Verifica se nenhum resultado foi encontrado novamente e exibe uma mensagem caso seja o caso
  291. if #r < 1 then
  292. gg.toast(hd("506169206EC3A36F20656E636F6E747261646F"))
  293. hc_x10 = true
  294. end
  295. end
  296.  
  297. -- Verifica se uma flag "hc_x10" está definida e repete a pesquisa se for verdadeira
  298. if hc_x10 then
  299. gg.searchNumber(hd("68203542203733203730203643203639203734"), gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0)
  300. local r = gg.getResults(1)
  301.  
  302. -- Verifica se nenhum resultado foi encontrado novamente e exibe uma mensagem caso seja o caso
  303. if #r < 1 then
  304. gg.toast(hd("506169206EC3A36F20656E636F6E747261646F"))
  305. hc_x11 = true
  306. end
  307. end
  308.  
  309. -- Verifica se uma flag "hc_x11" está definida e repete a pesquisa se for verdadeira
  310. if hc_x11 then
  311. gg.searchNumber(hd("68203542203733203730203643203639203734"), gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0)
  312. local r = gg.getResults(1)
  313.  
  314. -- Verifica se nenhum resultado foi encontrado novamente e exibe uma mensagem caso seja o caso
  315. if #r < 1 then
  316. gg.toast(hd("506169206EC3A36F20656E636F6E747261646F"))
  317. hc_x12 = true
  318. end
  319. end
  320.  
  321. -- Verifica se uma flag "hc_x12" está definida e, se verdadeira, imprime uma mensagem e fecha o programa
  322. if hc_x12 then
  323. print(hd("5245494E4943494152203D20726561627265206120646976657273C3A36FF09F909D0A434F50494152203D207065727665727469646F20F09F988FF09F949E0A4F4B203D2066696E616C697A6172E298A0EFB88F"))
  324. close()
  325. end
  326.  
  327. -- Obtém uma lista de resultados
  328. local r = gg.getResults(1000)
  329.  
  330. -- Exibe uma mensagem
  331. gg.toast(hd("7072696D6569726F206173207072696D6173"))
  332.  
  333. -- Se a variável "limit" for falsa, ajusta o endereço do primeiro resultado
  334. if limit == false then
  335. r[1].address = r[1].address - 22000
  336. end
  337.  
  338. -- Lê uma faixa de memória com base no endereço e tamanho especificados
  339. readMem = rwmem(r[1].address, 58000)
  340.  
  341. -- Salva a faixa de memória em um arquivo
  342. save(readMem)
  343.  
  344. -- Salva o despejo da memória em um arquivo, convertendo-a para texto
  345. saveHC(hd(readMem))
  346.  
  347. -- Limpa os resultados anteriores da busca no GameGuardian
  348. gg.clearResults()
  349. end
  350.  
  351. -- Função para se divertir decodificando conteúdo dump.txt a ser lido e extraído informações da Conta SSH supostamente criptografada
  352. function hcSSH()
  353.  
  354. -- Função para dividir uma string em partes usando um separador
  355. function split(inputstr, sep)
  356. -- Define "%s" como o separador padrão, se nenhum for especificado
  357. if sep == nil then
  358. sep = "%s"
  359. end
  360.  
  361. local t = {} -- Cria uma tabela para armazenar as partes divididas
  362.  
  363. -- Usa gmatch para encontrar todas as partes entre o separador e adicioná-las à tabela
  364. for str in string.gmatch(inputstr, "([^" .. sep .. "]+)") do
  365. table.insert(t, str) -- Insere cada parte encontrada na tabela
  366. end
  367.  
  368. return t -- Retorna a tabela de partes
  369. end
  370.  
  371. -- Função para filtrar as informações de IP, porta, usuário e senha
  372. function filter(text)
  373. local regex = "([%w.-]-):(%d+)@([%d-.]+):([%d-.]+)"
  374. local host, port, user_enc, pass_enc = text and string.match(text, regex) or nil, nil, nil, nil
  375. return host, port, user_enc, pass_enc
  376. end
  377.  
  378. -- Função para filtrar informações relevantes de uma sequência de texto
  379. function filter(text)
  380. -- Verifica se a entrada não é nula
  381. if text == nil then
  382. print("Pai não encontrado, texto de entrada é nulo\n")
  383. return nil, nil, nil, nil
  384. end
  385.  
  386. -- Define um padrão regex para encontrar e extrair informações de IP, porta, usuário e senha
  387. local regex = "([%w.-]-):(%d+)@([%d-.]+):([%d-.]+)"
  388.  
  389. -- Usa string.match para encontrar as informações correspondentes ao padrão na sequência
  390. local host, port, user_enc, pass_enc = string.match(text, regex)
  391.  
  392. -- Retorna as informações filtradas: host, porta, usuário e senha
  393. return host, port, user_enc, pass_enc
  394. end
  395.  
  396. -- Função para realizar operações bitwise e retornar um caractere
  397. function bitwise(val1, val2)
  398. -- Verifica se val1 e val2 são números
  399. if type(val1) ~= "number" or type(val2) ~= "number" then
  400. print("Valores inválidos para operação bitwise")
  401. return "?" -- Caractere de substituição para valores inválidos
  402. end
  403.  
  404. -- Realiza uma operação de E (bitwise) entre val1 e val2, seguida de um deslocamento para a direita e uma máscara
  405. local result = bit32.band(bit32.rshift(val1, val2), 0xff)
  406.  
  407. -- Verifica se o resultado é um caractere imprimível
  408. if result >= 32 and result <= 126 then
  409. return string.char(result)
  410. else
  411. print("Resultado não é um caractere imprimível")
  412. return "?" -- Caractere de substituição para valores não imprimíveis
  413. end
  414. end
  415.  
  416. -- Função para extrair informações decodificadas a partir de um texto
  417. function extract(data)
  418. local new_data = "" -- Cria uma variável para armazenar os dados decodificados
  419. local success, error_message = pcall(function()
  420. for val1, val2 in string.gmatch(data, "(-?%d+).(-?%d+)") do
  421. -- Usa pcall para tentar converter os valores
  422. local success1, num1 = pcall(tonumber, val1)
  423. local success2, num2 = pcall(tonumber, val2)
  424.  
  425. if success1 and success2 then
  426. car = bitwise(num1, num2) -- Realiza uma operação bitwise com os valores convertidos
  427. new_data = new_data .. car -- Adiciona o caractere decodificado à string
  428. else
  429. -- Caso ocorra um erro na conversão, insira um caractere de substituição
  430. new_data = new_data .. "?" -- Caractere de substituição, você pode alterá-lo se desejar
  431. end
  432. end
  433. end)
  434.  
  435. if not success then
  436. -- Trate o erro aqui, como exibir uma mensagem de alerta personalizada
  437. -- print("Nessa depuração, simplesmente não tem conta SSH no formato camuflada, por isso erro ao extrair informações decodificadas: " .. error_message)
  438. -- Você também pode encerrar a execução se necessário
  439. gg.alert(hd("E2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A1BFE2A09BE2A09BE2A08BE2A089E2A099E2A0BBE2A0BFE2A0BFE2A0BFE2A0BFE2A2BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BF0AE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A1BFE2A083E2A084E2A084E2A084E2A084E2A084E2A084E2A084E2A084E2A0B9E2A3BFE2A3BFE2A3B6E2A3B6E2A3A6E2A3ACE2A2B9E2A3BFE2A3BF0AE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A083E2A084E2A084E2A084E2A3B0E2A3A7E2A180E2A084E2A084E2A084E2A084E2A088E2A299E2A18BE2A3BFE2A3BFE2A3BFE2A2B8E2A3BFE2A3BF0AE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A084E2A084E2A0B0E2A0BCE2A2AFE2A3BFE2A3BFE2A3A6E2A384E2A084E2A084E2A084E2A088E2A2A1E2A3BFE2A3BFE2A3BFE2A2B8E2A3BFE2A3BF0AE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A084E2A084E2A0B8E2A0A4E2A095E2A09BE2A099E2A0B7E2A3BFE2A186E2A084E2A084E2A084E2A3B8E2A3BFE2A3BFE2A18FE2A3BCE2A3BFE2A3BF0AE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A187E2A084E2A084E2A084E2A084E2A084E2A084E2A084E2A084E2A084E2A084E2A084E2A084E2A3B4E2A3BFE2A3BFE2A3BFE2A2A1E2A3BFE2A3BFE2A3BF0AE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A19FE2A084E2A084E2A084E2A084E2A084E2A384E2A084E2A280E2A084E2A084E2A280E2A3A4E2A3BEE2A3BFE2A3BFE2A3BFE2A283E2A3BEE2A3BFE2A3BFE2A3BF0AE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A0BFE2A39BE2A3A1E2A384E2A380E2A084E2A0A0E2A2B4E2A3BFE2A3BFE2A1BFE2A384E2A3B4E2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A283E2A3BEE2A3BFE2A3BFE2A3BFE2A3BF0AE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A18FE2A3BCE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3A9E2A1BDE2A181E2A2B8E2A3BFE2A3BFE2A3BFE2A3BFE2A3BF0AE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A283E2A3BFE2A3BFE2A29FE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3AEE2A2ABE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A39FE2A2BFE2A083E2A084E2A2BBE2A3BFE2A3BFE2A3BFE2A3BF0AE2A3BFE2A3BFE2A3BFE2A3BFE2A1BFE2A3B8E2A09FE2A3B5E2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BEE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3B7E2A384E2A2B0E2A184E2A2BFE2A3BFE2A3BFE2A3BF0AE2A3BFE2A3BFE2A3BFE2A3BFE2A187E2A08FE2A3BCE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3A6E2A0B9E2A18EE2A3BFE2A3BFE2A3BF0AE2A3ADE2A38DE2A09BE2A0BFE2A084E2A2B0E2A08BE2A189E2A0B9E2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A099E2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A19FE2A281E2A099E2A186E2A2A1E2A3BFE2A3BFE2A3BF0AE2A0BBE2A3BFE2A186E2A084E2A3A4E2A088E2A2A3E2A388E2A3A0E2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A08FE2A384E2A0BBE2A3BFE2A3BFE2A3BFE2A3BFE2A3BFE2A386E2A388E2A3B4E2A083E2A3BFE2A3BFE2A3BFE2A3BF0AE2A180E2A088E2A2BFE2A084E2A3BFE2A187E2A084E2A099E2A0BFE2A3BFE2A1BFE2A0BFE2A28BE2A3A5E2A3BEE2A3BFE2A3B7E2A38CE2A0BBE2A2BFE2A3BFE2A3BFE2A1BFE2A09FE2A3A1E2A3BEE2A3BFE2A3BFE2A0BFE2A28B0AE2A09BE2A0B3E2A084E2A2A0E2A3BFE2A087E2A084E2A3B7E2A191E2A2B6E2A3B6E2A2BFE2A3BFE2A3BFE2A3BFE2A3BDE2A3BFE2A3BFE2A3BFE2A3B6E2A3B6E2A190E2A3B6E2A3BFE2A0BFE2A09BE2A3A9E2A184E2A084E2A2B8"))
  440. gg.toast(hd("43616C6D612061C3AD2C205061697AC3A36F"))
  441. print(hd("4E6573736120646570757261C3A7C3A36F2C2073696D706C65736D656E7465206EC3A36F2074656D20636F6E746120535348206E6F20666F726D61746F2063616D75666C6164612C20706F72206973736F206572726F20616F206578747261697220696E666F726D61C3A7C3B56573206465636F6469666963616461730A"))
  442. print(hd("7072696D6569726F206173207072696D61730A"))
  443. print(hd("5245494E4943494152203D20726561627265206120646976657273C3A36FF09F909D0A434F50494152203D207065727665727469646F20F09F988FF09F949E0A4F4B203D2066696E616C697A6172E298A0EFB88F"))
  444. close()
  445. return
  446. end
  447.  
  448. return new_data
  449. end
  450.  
  451. -- Função para decodificar uma string hexadecimal em ASCII
  452. function hd(hex)
  453. return (hex:gsub("%x%x", function(digits)
  454. return string.char(tonumber(digits, 16))
  455. end))
  456. end
  457.  
  458. -- Função para decodificar um usuário e senha
  459. function dec_user_pass(user, pasw)
  460. local decoded_user = extract(user) -- Decodifica o usuário
  461. local decoded_pass = extract(pasw) -- Decodifica a senha
  462. return decoded_user, decoded_pass
  463. end
  464.  
  465. -- Obtendo o diretório do script atual
  466. local scriptDir = gg.getFile()
  467. -- Remova o nome do script do caminho
  468. scriptDir = scriptDir:match("(.*/)") or scriptDir
  469.  
  470. -- Defina o nome do arquivo a ser lido (dump.txt)
  471. local fileName = "dump.txt"
  472. -- Caminho completo do arquivo
  473. local filePath = scriptDir .. fileName
  474.  
  475. -- Abrindo o arquivo "dump.txt" para leitura usando a função "io.open"
  476. local file = io.open(filePath, "r")
  477.  
  478. -- Verificando se o arquivo foi aberto com sucesso
  479. if file then
  480. -- Lendo todo o conteúdo do arquivo e armazenando em 'ct'
  481. local ct = file:read("*all")
  482. file:close()
  483.  
  484. -- Faça o que você precisa com o conteúdo do arquivo (ct) aqui
  485. -- Por exemplo, você pode chamar a função 'filter' para obter host, porta, usuário e senha
  486.  
  487. -- Chama a função 'filter' para extrair informações de host, porta, usuário e senha
  488. local host, port, user_enc, pass_enc = filter(ct)
  489.  
  490. -- Chama a função 'dec_user_pass' para decodificar o usuário e a senha
  491. local user_dec, pass_dec = dec_user_pass(user_enc, pass_enc)
  492.  
  493. -- Monta uma string para criar o conteúdo final no formato desejado
  494. local hc_content = "IP/Host: " .. host .. "\nPorta: " .. port .. "\nUsuário: " .. user_dec .. "\nSenha: " .. pass_dec
  495. hc_content = hc_content .. "\nip:port@user:pass ➔ " .. host .. ":" .. port .. "@" .. user_dec .. ":" .. pass_dec
  496.  
  497. -- Defina o nome do arquivo a ser escrito (hc.txt)
  498. local hcFileName = "hc.txt"
  499. -- Caminho completo do arquivo hc.txt
  500. local hcFilePath = scriptDir .. hcFileName
  501.  
  502. -- Abra o arquivo "hc.txt" para escrita
  503. local hc_file = io.open(hcFilePath, "w")
  504.  
  505. if hc_file then
  506. -- Escreva o conteúdo formatado no arquivo "hc.txt"
  507. hc_file:write(hc_content)
  508. hc_file:close()
  509.  
  510. -- Exibe conteúdo do arquivo hc.txt como alerta no GameGuardian
  511. gg.alert("Arquivo aberto " .. hcFileName .. ":\n" .. hc_content)
  512.  
  513. -- Copia conteúdo do arquivo hc.txt para a área de transferência
  514. gg.copyText(hc_content, false)
  515. print("Arquivo aberto " .. hcFileName .. ":\n" .. hc_content)
  516. else
  517. gg.alert("Falha ao abrir o arquivo " .. hcFileName .. " para escrita.")
  518. end
  519. else
  520. gg.alert("Falha ao abrir o arquivo " .. fileName .. " para leitura.")
  521. end
  522. end
  523.  
  524. -- Função de ordem de execução
  525. function ordem()
  526.  
  527. -- Chama Função hcDump()
  528. hcDump()
  529.  
  530. -- Chama Função hcSSH()
  531. hcSSH()
  532. end
  533.  
  534. -- Chams Função ordem()
  535. ordem()
  536.  
Add Comment
Please, Sign In to add comment