GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Tanuljunk PAWN nyelvet => A témát indította: ZeRo - 2010. Április 14. - 20:06:39

Cím: [Scripting Eszköz] Whirlpool | A legbiztonságosabb jelszókezelés [Titkosító]
Írta: ZeRo - 2010. Április 14. - 20:06:39
Whirlpool
 
Mi is ez?
Hála Y_Less-nek, a PAWN nyelvben is lehetõségünk van a Whirlpool algoritmus használatára, ami segítségével a legbiztonságosabban kezelhetjük szerverünkön a karakterláncokat. Általában ezek a karakterláncok jelszavak szoktak lenni, a példában is ezt fogom bemutatni.
Whirlpool? De sokféle más megoldás is van!
Igen, de azok könnyedén dekódolhatók, vagy rosszabb esetben még csak kódolva sincsenek. Nem vagyok benne biztos, hogy a szerver játékosai örülnének, ha tudnák, hogy a szervergazda kezében van a jelszavuk... Ezért jó a Whirlpool, mivel ( még egyenlõre ) nem lehet dekódolni.
Telepítés / Üzembehozás
Elõször is, töltsük le a plugint innen. Ezután helyezzük el a szervermappánk/plugins mappában( ha nincs ilyen mappa, akkor hozd létre! ), majd nyissuk meg a server.cfg-t, és adjuk hozzá a következõ sort:
 
plugins Whirlpool

 

plugins Whirlpool.so

 
( Megjegyzés: Ha már a server.cfg fájlunkban van plugins nevû sor, akkor ahhoz adjuk hozzá, ne csináljunk újat! )
Ezután nyissuk meg a Pawno-t, és ágyazzuk be a következõ képpen( csak ne más függvénybe rakjuk! ):
 
native WP_Hash( buffer[  ], len, const str[  ] );

 
Mostantól a rendelkezésünkre áll a függvény!
Példa a használatára
A példában egy regisztrációs rendszer jelszó \'mentését\' / ellenõrzését fogom leírni.
Megjegyzés: A példában a dini függvénykönyvtárat csak az egyszerûség kedvéért használtam! A példában szereplõ egyéb funkcióktól nem kell \'megijedni\', majd egy következõ leírásban azok is sorra kerülnek.  ;)
 

//Fejállományok beágyazása
#include < a_samp >
#include < dini >
#include < sscanf2 >
#include < zcmd >
//\'WP_Hash\' függvény nativálása
native WP_Hash( buffer[  ], len, const str[  ] );
//Definíciók
#define COLOR_GREEN       0x33AA33AA
#define COLOR_RED          0xFF0000AA
#define BUFFER_LEN          145
CMD:register( playerid, params[  ] ) {
//Tároló létrehozása a játékos által beírt sztringnek, és az \'új\' jelszónak
new szPass[ 32 ];
new szHash[ BUFFER_LEN ];
if( sscanf( params, \"s[32]\", szPass ) ) {
    SendClientMessage( playerid, COLOR_RED, \"Használat: /register < Jelszó >\" );
} else {
    //A jelszó kódolása a \'szHash\' sztringbe, majd elmentése a játékos adatlapjába
    WP_Hash( szHash, sizeof szHash, szPass );
    dini_Set( PlayerAccount( playerid ), \"Password\", szHash );
    SendClientMessage( playerid, COLOR_GREEN, \"Sikeres regisztráció!\" );
}
return 1;
}
CMD:login( playerid, params[  ] ) {
//Tároló létrehozása a játékos által beírt sztringnek, és a jelszónak
new szPass[ 32 ];
new szHash[ BUFFER_LEN ];
    if( sscanf( params, \"s[32]\", szPass ) ) {
    SendClientMessage( playerid, COLOR_RED, \"Használat: /login < Jelszó >\" );
} else {
    //A jelszó kódolása a \'szHash\' sztringbe
WP_Hash( szHash, sizeof szHash, szPass );
//A kódolt jelszó összehasonlítása a már lementett( kódolt ) jelszóval
if( strcmp( szHash, dini_Get( PlayerAccount( playerid ), \"Password\" ) ) != 0 ) {
    SendClientMessage( playerid, COLOR_RED, \"Helytelen jelszó!\" );
} else {
    SendClientMessage( playerid, COLOR_GREEN, \"A bejelentkezés sikeres volt!\" );
}
}
return 1;
}
GetPlayerNameEx( playerid ) {
new z[ MAX_PLAYER_NAME ];
GetPlayerName( playerid, z, sizeof z );
return z;
}
PlayerAccount( playerid ) {
new z[ 64 ];
format( z, sizeof z, \"/Users/%s.dat\", GetPlayerNameEx( playerid ) );
return z;
}
Cím: [Scripting Eszköz] Whirlpool | A legbiztonságosabb jelszókezelés [Titkosító]
Írta: VTX - 2010. Április 14. - 20:10:07
Ez hasznos. Jól leírtad grat  ;)
Cím: [Scripting Eszköz] Whirlpool | A legbiztonságosabb jelszókezelés [Titkosító]
Írta: ZeRo - 2010. Április 14. - 20:11:07
Idézetet írta: VTX date=1271268607\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1369\" data-ipsquote-contentclass=\"forums_Topic
Ez hasznos. Jól leírtad grat  ;)
 
Köszönöm.  ;)
Cím: [Scripting Eszköz] Whirlpool | A legbiztonságosabb jelszókezelés [Titkosító]
Írta: Csabesz - 2010. Április 14. - 20:58:16
Szép leírás lett. Grat.
Jeje.. zcmd és sscanf.   :D :P
Cím: [Scripting Eszköz] Whirlpool | A legbiztonságosabb jelszókezelés [Titkosító]
Írta: ZeRo - 2010. Április 14. - 22:07:24
Idézetet írta: Csabesz date=1271271496\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1369\" data-ipsquote-contentclass=\"forums_Topic
Szép leírás lett. Grat.
Jeje.. zcmd és sscanf.   :D :P
 
Köszi.  :D
Cím: [Scripting Eszköz] Whirlpool | A legbiztonságosabb jelszókezelés [Titkosító]
Írta: Vampesz - 2010. Április 14. - 23:01:18
Jó lett :) Am Még mindig várom a sscanf-os tutot :shy: Már nagyon :shy: mert már nagyon izgatja a fantáziám :D:D
Cím: [Scripting Eszköz] Whirlpool | A legbiztonságosabb jelszókezelés [Titkosító]
Írta: Depi - 2010. Április 15. - 11:49:17
Szép leírás,Gratula.  :)
Cím: [Scripting Eszköz] Whirlpool | A legbiztonságosabb jelszókezelés [Titkosító]
Írta: Gamestar - 2010. Április 15. - 14:04:14
Az md5 hez hasonlóan ez is dekódolható ha úgy vesszük...szerintem.
http://hu.wikipedia.org/wiki/MD5
 
Az MD5 hashek visszafejtése nem lehetséges, léteznek azonban különbözo on-line is elérheto adatbázisok, melyek kódolt adatokat, és a hozzájuk tartozó hasheket tartalmazzák. Ilyen például az www.md5decrypter.com, mely 2009 áprilisában több, mint 800 000 kódot és visszafejtést tartalmazott.[/quote]
egyébként nem rossz.
Cím: [Scripting Eszköz] Whirlpool | A legbiztonságosabb jelszókezelés [Titkosító]
Írta: SnicK - 2010. Április 15. - 14:30:05
Nos igen átkódolja, de nem minden esetben hasznos, mikor eLife foadmin voltam, és egy játékos elfelejtette a jelszót kezdhetett új karit... mert soha az életbe nem tudtam neki megmondani a jelszavát
Cím: [Scripting Eszköz] Whirlpool | A legbiztonságosabb jelszókezelés [Titkosító]
Írta: Vampesz - 2010. Április 15. - 17:16:28
Idézetet írta: SnicK date=1271334605\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1369\" data-ipsquote-contentclass=\"forums_Topic
Nos igen átkódolja, de nem minden esetben hasznos, mikor eLife foadmin voltam, és egy játékos elfelejtette a jelszót kezdhetett új karit... mert soha az életbe nem tudtam neki megmondani a jelszavát
 
Miért nem \"0-ztad\" a jelszavát?? és pl.: gondolom volt/van rajta jelszóváltoztató parancs és annyi :)

EGyébként akármi dekódolható egy ido után...tök mind1...alapból elm. mindenhova különbözo jelszavadnak kéne lennie me az a legbiztonságosabb. De szerverre olyan jelszóval menj amit ha megtudnak semmit se kezdhetnek vele ;)
Cím: [Scripting Eszköz] Whirlpool | A legbiztonságosabb jelszókezelés [Titkosító]
Írta: ZeRo - 2010. Április 15. - 17:40:50
Ez a legbiztonságosabb enkódoló algoritmus( eddig ).
 
Idézetet írta: Y_Leѕѕ date=1235524867\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1369\" data-ipsquote-contentclass=\"forums_Topic


Okay i\'ve got 2 question:
Question 1: How do I \"Install\" this?
Just add it like any other plugin.
 

Question 2: Is it possible to like decrypt the algorytm?
 
[/quote]
Maybe with several years on a super computer.  Whirlpool is one of the most advanced hashing algorithms about (excluding the NIST SHA-3 candidates), I can\'t even find data on collision complexity, let alone collisions (and forget about direct decryption).
The point of a hash is to encrypt data so you can run comparisons on it, but not get the original back, it would be pretty useless if you could.  MD5, possibly the most widely used hash, has been long since cracked, you can find a collision on a standard notebook in under a minute.
http://en.wikipedia.org/wiki/Cryptographic_hash_function
http://en.wikipedia.org/wiki/WHIRLPOOL
http://en.wikipedia.org/wiki/MD5
 
[/quote]


A dicséreteket köszönöm.  :)
Cím: [Scripting Eszköz] Whirlpool | A legbiztonságosabb jelszókezelés [Titkosító]
Írta: SnicK - 2010. Április 15. - 19:59:46
Ha átírom nullákra, a whirlpool azt is lekódolja rögtön szal mindegy...
Cím: [Scripting Eszköz] Whirlpool | A legbiztonságosabb jelszókezelés [Titkosító]
Írta: Iceaac - 2010. Április 16. - 07:30:22
Idézetet írta: SnicK date=1271334605\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"1369\" data-ipsquote-contentclass=\"forums_Topic
Nos igen átkódolja, de nem minden esetben hasznos, mikor eLife foadmin voltam, és egy játékos elfelejtette a jelszót kezdhetett új karit... mert soha az életbe nem tudtam neki megmondani a jelszavát
 
Gondolom GF.. Simán írhatnál 1 scriptet a GF alapján, amivel dekódolnád a jelszavát.
Cím: [Scripting Eszköz] Whirlpool | A legbiztonságosabb jelszókezelés [Titkosító]
Írta: Gamestar - 2010. Április 16. - 09:47:28
Egyébként, ha egy szótárat (több 100 ezer szó) ha szerzel, simán csinálhatsz egy jó kis visszafordítót, nem?
Ugyanaz a gyengéje, mint az MD5-nek (szerintem)
Amúgy pedig nem a jelszavát kell \"nullázni\",hanem az (például) 12345 hash-jét betenni a régi hash helyett
Cím: [Scripting Eszköz] Whirlpool | A legbiztonságosabb jelszókezelés [Titkosító]
Írta: kurta999 - 2010. Április 17. - 19:21:04
Jó leírás én dubd t használok, de azt nem értem h ez miszerint megy :O
Cím: [Scripting Eszköz] Whirlpool | A legbiztonságosabb jelszókezelés [Titkosító]
Írta: krisk - 2012. Április 12. - 14:43:50
Csak hogy egyértelmû legyen. Ilyen szempontból minden titkosítás sebezhetõ, viszont senki se használjon MD5-öt. Ahogy már elõbb írták, nem biztonságos, már fel is törték. Hogy érthetõ legyen: a \"collision attack\" (nevezzük csak ütközésnek) egy olyan támadás, amely során olyan szövegpárokat keresnek, amelynek a kódolt változatuk megegyezik. Ha ez belátható idõn belül lehetséges, akkor a titkosítás nem védett.
Egy 256 bites titkosítás 1.2*10^77 különbözõ eredményt képes létrehozni, ennél több bemenet esetén mindenképpen találunk egy ütközést. Viszont az ú.n. Birthday Attack (akit érdekel keressen rá) használatával 3.1*10^19 bemenet esetén is 75% az esély arra, hogy találunk két azonosan kódolt szóalakot. Természetesen ez csak annyira igaz, mint hogy 365 embernek mindenképpen máskor van a születésnapja. Ez természetesen csak a bitek számából adódik, vagyis ez a maximum, ennél lehet kevesebb.
A probléma az, hogy az MD5 nagyon gyenge, ahogy írta Y_less, akár pár perc alatt is találhatunk két egyezést, SÕT olyan programot is készíthetünk egy programmal, amelyeknek az MD5 checksumja teljesen megegyezik.