[Tutorial] Encriptaзгo
#1

Encriptaзгo
Encriptaзгo й uma das coisas mais importantes (se nгo, a mais importante) de um servidor, a encriptaзгo trбs seguranзa aos servidores e privacidade aos usuбrios, eu sei que muitos dos servidores RPG que usam GF's nгo estгo encriptados, entгo eles nгo protegem a privacidade dos usuбrios, podendo saber as passwords dos mesmos e ser vitimas de ataques.

"Ah nгo vale a pena vei, meu server й foda e ninguйm entra lб #vidaloka"
Vocк estб errado, comeзando por nгo cumprir as Politicas de Privacidade, nas quais que dizem que vocк deverб salva guardar as passwords dos usuбrios impedindo de vocк saber a password do mesmo. Mas claro que nгo fica por aqui, se receber um ataque no seu ftp (digo isto para os usuбrios que usam salvamento .ini, MySQL й outra coisa) e o atacante for lб na scriptfiles e vir as passwords ele edita e fica com as contas para ele, muito bom nгo acha?

Mas bem para vocк fazer uma encriptaзгo no seu servidor й muito simples, vocк pode usar 3 sistemas, Whirlpool(******) , md5(******), Hash(RydeR`).

Eu pessoalmente prefiro o md5, retorna sempre uma string de 32 caracteres e enquanto Whirlpool retorna 128 o que torna maior e torna a ser chato, o Hash do Ryder` й um pouco mais complicado porque tem suporte PHP e tambйm se torna chato, Whirlpool tambйm й necessбrio usar plugin o que й ainda mais chato, por isso optei pelo md5.

Antes de tudo veja este cуdigo pois serб necessбrio para continuar.

Existe gente que diz que md5 й inseguro, sim й verdade, por exemplo:

Vamos encriptar a seguinte frase: "The quick brown fox jumps over the lazy dog"
Resultado: 9e107d9d372bb6826bd81d3542a419d6

Mas se vocк colocar essa encriptaзгo no ****** irб aparecer sites como este.

Sendo assim vocк pensa, entгo md5 й infalнvel, nem por isso, existe uma coisa chamada salt.
Salt й uma string simples que serб adicionada a nossa encriptaзгo, por exemplo:

pawn Код:
new
    salt[] = "1%1cAu!g+>K53PY}", //nгo й necessбrio usar estes caracteres pode usar outros.
    buf[34],
    senha[24] = "HelloWorld",
    result[17+25] //digamos que o valor do salt й 17 (16+1) e o valor da password serб no mбximo 25(24+1)
;
format(result,sizeof(result),"%s%s",senha,salt);
md5(buf,result);
printf("%s",buf);
Irб imprimir:
Код:
B7BE4DF038F0D0E3AFC45C6262355E4E
Agora se voce procurar no ****** irб aparecer:
Код:
Sua pesquisa - B7BE4DF038F0D0E3AFC45C6262355E4E - nгo encontrou nenhum documento.
Claro que agora com este tutorial postado й obvio que aparece no ******, mas na wordlist nгo irб aparecer e desta forma o seu servidor estarб muito mais seguro e tambйm estarб a cumprir os termos de privacidade.

"Ah mas existe sites para converter as criptografia", errado, nгo existem sites para converter, porque uma encriptaзгo й feita e й para ficar assim, nгo existe forma de converter, esses sites criam uma worldlist, ou seja, vocк faz lб um hash, por exemplo. "SA-MP" e vai aparecer "a1c7c7c356c018da73744a2a834de456" e o site vai gravar uma wordlist, assim quando vocк colocar a encriptaзгo "a1c7c7c356c018da73744a2a834de456" ele irб procurar pela worldlist e vai achar o "SA-MP". Exemplo de site: http://md5.gromweb.com

Para servidores com suporte MySQL nгo seria necessбrio fazer isto, pode usar md5 diretamente da Query, mas claro que tem de colocar o salt, mas tambйm pode usar cб fora, й indiferente.

Servidores com Acesso PHP


Para servidores que usem MySQL e PHP aconselho a lerem isto.

Fiz uma adaptaзгo do cуdigo:
PHP код:
<?php
 
/**
 * Gera um salt aleatуrio
 *
 * @param int $tamanho Tamanho do salt
 *
 * @return string
 */
function geraSaltAleatorio($tamanho 22) {
    return 
substr(sha1(mt_rand()), 0$tamanho);  
}
 
$salt geraSaltAleatorio();
 
// Senha do usuбrio, pode ter vindo do $_POST, $_GET ou outro lugar
$senha 'olб mundo'
 
// Cria um hash
$hash md5($senha $salt);
 
// Encripta esse hash 1000 vezes
for ($i 0$i 1000$i++) {
    
$hash md5($hash);
}
 
// Salvamos $hash e $salt no banco de dados
Em pawn ficou mais ou menos assim:

pawn Код:
mt_rand(){
    new rand[11];
    format(rand,sizeof(rand),"%d",random(9999999999));
    return rand;
}

random_salt(buffer[34]){
    buffer = MD5_Hash(mt_rand());
    return 1;
}

public OnGameModeInit()
{
    new salt[34],word[80],buf[34];
    random_salt(salt);
    format(word,sizeof(word),"%s%s",salt,"minhapassword");
    md5(buf,word);
    for(new i; i<1000; ++i)
        md5(buf,buf);
    printf("result: %s",buf);
    return 1;
}
Agora vocкs devem adaptar ao vosso script.
Atenзгo: Esta parte й apenas para servidores com acesso a PHP, caso o seu servidor nгo use PHP fique-se pelo menos pela parte mais simples, a nгo ser que queira fazer mesmo que ninguйm saiba a password do usuбrio, ai sim use esta forma, mas lembre-se, deverб ler o link que postei.

Agradecimentos

-BlueX - Criador do tutorial;
-Stewie` - Ensinou-me o salt;
-ThiagoBelem - Explicaзгo do salt;
Reply
#2

Muito bom bluex '-'
Reply
#3

Nгo sabia disso e й muito importante, irei fazer com o GM que estou codando, mais ainda nгo entendi como eu faria para fazer a verificaзгo se a senha que o jogador digitar confere com a senha encriptada que foi salva ?

Poderia dar um pequeno exemplo?

@EDIT
Esquece, ja sei hahha

Bom tutorial
Reply
#4

Уtimo tutorial, bem explicado.
Reply
#5

Quote:
Originally Posted by mau.tito
Посмотреть сообщение
Muito bom bluex '-'
Obrigado

Quote:
Originally Posted by EditPawn
Посмотреть сообщение
Nгo sabia disso e й muito importante, irei fazer com o GM que estou codando, mais ainda nгo entendi como eu faria para fazer a verificaзгo se a senha que o jogador digitar confere com a senha encriptada que foi salva ?

Poderia dar um pequeno exemplo?


Espero que isto ajude

Quote:
Originally Posted by Kuddy
Посмотреть сообщение
Уtimo tutorial, bem explicado.
Obrigado Kuddy

Quote:
Originally Posted by [NVC]iTrevaS
Посмотреть сообщение
Muito bom, irб ajudar muitos
Obrigado
Reply
#6

Quote:
Originally Posted by mau.tito
Посмотреть сообщение
Muito bom bluex '-'
Eu tbm uso MD5
Reply
#7

Muito bacana, nunca usei sistema de Encriptaзгo, ou algo do tipo
Tenho uma pequena duvida.
meu servidor й Mysql (WampServer).

O Maximo de caracteres que o Player pode colocar em sua senha й 12.
Entгo no mesmo criei uma coluna atй 12 caracteres.
se eu usar esse MD5 vou te que alterar o MAX de senha ?
porque isso Gera muitos caracteres, quanto seria o maximo ? 35 ?

Outra :

se a senha й, citamos (Amizade), e nisso vai criar a Senha MD5.
quando eu for logar, eu irei logar com a senha padrгo ?
no caso Amizade ?
Abraзos !
Reply
#8

Quote:
Originally Posted by Japa3D
Посмотреть сообщение
Eu tbm uso MD5
Somos dois jб hehe

Quote:
Originally Posted by AmericanStyle'™
Посмотреть сообщение
Muito bacana, nunca usei sistema de Encriptaзгo, ou algo do tipo
Tenho uma pequena duvida.
meu servidor й Mysql (WampServer).

O Maximo de caracteres que o Player pode colocar em sua senha й 12.
Entгo no mesmo criei uma coluna atй 12 caracteres.
se eu usar esse MD5 vou te que alterar o MAX de senha ?
porque isso Gera muitos caracteres, quanto seria o maximo ? 35 ?

Outra :

se a senha й, citamos (Amizade), e nisso vai criar a Senha MD5.
quando eu for logar, eu irei logar com a senha padrгo ?
no caso Amizade ?
Abraзos !
Sim terб que modificar o mбximo para 35.

Para fazer o login basta fazer
pawn Код:
"SELECT * FROM `nome_da_tabel` WHERE name='nome_do_jogador' AND password=md5('Amizade')"
Lembre-se que ao usar o salt deverб gravar o mesmo encriptado na database
Reply
#9

Quote:
Originally Posted by BlueX
Посмотреть сообщение
Somos dois jб hehe



Sim terб que modificar o mбximo para 35.

Para fazer o login basta fazer
pawn Код:
"SELECT * FROM `nome_da_tabel` WHERE name='nome_do_jogador' AND password=md5('Amizade')"
Lembre-se que ao usar o salt deverб gravar o mesmo encriptado na database
Obrigado, testei e tudo (:

#edit
Reply
#10

Quote:
Originally Posted by BlueX
Посмотреть сообщение
Somos dois jб hehe



Sim terб que modificar o mбximo para 35.

Para fazer o login basta fazer
pawn Код:
"SELECT * FROM `nome_da_tabel` WHERE name='nome_do_jogador' AND password=md5('Amizade')"
Lembre-se que ao usar o salt deverб gravar o mesmo encriptado na database
Nгo entendi
Testei sem o salt e o resultado foi o esperado.
Agora com salt da senha errada (:
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)