Ir para conteúdo

[Arquivado]Desafio!


dalvorsn

Posts Recomendados

Olá meus caros, venho lhes propor um desafio.

Sinceramente não espero que alguém consiga, ficarei realmente impressionado se alguém conseguir uma solução, mas vamos lá.

 

WhSaFZDQ[/pastebin]

 

A função acima codifica uma determinada string, ela pega o numero do byte, eleva a 'e', e transforma esse numero em outros bytes, concatenando na sequencia da string 'str'. A função foi feita por mim hoje, e o meu desafio é: "Façam uma função, que desfaça a criptografia gerada pela minha função".

Tem que ser genial para conseguir uma solução diferente de um bruteforce kk

Então fica ai o desafio, boa sorte!

 

 

 

OBS.: Não necessita que seja em lua

Editado por dalvorsn
Link para o comentário
Compartilhar em outros sites

function decrypt(message, exp, map)
   local inv = 1.0 / exp -- because f*ck root calculation

   local str = ""
   local byte = 0

   for i = 1, #message do
       byte = byte * 256 -- lazy lshift8

       if type(message) == "table" then
           byte = byte + message[i]
       else
           byte = byte + tostring(message):byte(i)
       end

       local char = map[byte ^ inv]

       if char then
           str = str .. char
           byte = 0
       end
   end

   return str
end

 

local map = {}

-- map values between '0' and '9'
for i = string.byte("0"), string.byte("9") do
   map[i] = string.char(i)
end

-- map values between 'A' and 'Z', and 'a' and 'z'
for i = string.byte("A"), string.byte("Z") do
   map[i] = string.char(i)
   map[i + 32] = string.char(i + 32)
end

local encrypted = {39, 16, 36, 193, 45, 144, 54, 100, 48, 33}

print(decrypt(encrypted, 2, map))

Link para o comentário
Compartilhar em outros sites

Skyen arrasa corações.

Posso passar um desafio?

 

Eu rodei isso:

local data = new()
data.voov = 5;
print(data.voov)

 

E ele printou isso:

 

Write k: table: 005FE770[voov] = 5
Read value: table: 005FE770[voov] nil
5

 

Mas se eu rodar isso.

local data = new()
data.voov = 5;
print(data.voov)
local data_ = {}
data_.voov = 5;
print(data_.voov)

print(data,data_)

Ele printa isso:

Write k: table: 002DE770[voov] = 5
Read value: table: 002DE770[voov] nil
5
5
table: 002DE770 table: 0052BB98

Não usei nem um recurso em c++, apenas lua puro. A função new eu defini ela usando 15 linhas.

 

Refaça a função new.

 

 

Dica, use: "newproxy(true)"

Link para o comentário
Compartilhar em outros sites

Do Mock eu nem vou falar nada --' esse cara deve dar aula de LUA na PUC. '-'

 

Não dá ideia, por favor!

Editado por Skyen
Link para o comentário
Compartilhar em outros sites

Não, estudo eng da comp na UNB.

 

Em fim, se quiserem a resposta:

 

 

Spiler funfa?

function new()
Tab ={}
local t_ = newproxy(true)
_t = Tab
Tab = {}
getmetatable(t_).__index = function (t,k,q)
 print("Read value: "..tostring(t).."[" .. tostring(k)..']',q)
 return _t[k]
end
getmetatable(t_).__newindex = function (t,k,v,...)
 print("Write k: "..tostring(t).."[" .. tostring(k)..'] = '..tostring(v))
 _t[k] = v
end
setmetatable(Tab, getmetatable(t_))
return Tab
end

local data = new()
data.voov = 5;
print(data.voov)
local data_ = {}
data_.voov = 5;
print(data_.voov)

print(data,data_)

 

 

Link para o comentário
Compartilhar em outros sites

Skyen e Mock, só uma dúvida:

Onde aprenderam LUA assim?

 

Acho que o principal é além de programar pra otserv, é programar em lua pura... pois otserv não precisa de muita coisa, já que boa parte é em C++.

Link para o comentário
Compartilhar em outros sites

Skyen e Mock, só uma dúvida:

Onde aprenderam LUA assim?

 

Acho que o principal é além de programar pra otserv, é programar em lua pura... pois otserv não precisa de muita coisa, já que boa parte é em C++.

dependesse de mim eu rancava lu e programava tudo em C++, mas da formaque o servidor foi feito lua é essencial.

 

Ps: aprendi sozinho e lendo o manual online.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...