Webboard

Pełna wersja: Odkodowanie hasła
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Jako tako problemu ze skryptem nie mam lecz piszę tu ponieważ mam pytanie, otóż jak wygląda sprawa z kodowaniem i odkodowaniem hasła? W jaki sposób można odkodować hasło? Oczywiście za pomocą jakiegoś skryptu php...
Hasło jedynie można wyświetlić. W myBB jest prawdopobnie kodowanie Md5 które działa w jedną stronę. Porównuje wpisane hasło z zakodowanym w bazie. Hasło możesz jedynie zmienić u kogoś przez ACP, a jak nie pamiętasz swojego to klikasz "Zapomniałem hasła".
niezależnie od metody wykorzystywanej w MyBB (md5 sha i inne) hasło jest HASHOWANE a nie kodowane, jak różnica? ano taka, że jest to działanie w jedną stronę
owszem jest metoda na odczytanie zahashowanego hasła, lecz nie każdego, dotyczy to haseł "typowych" czyli metodą słownikową, przegląd hashów dla typowych haseł. btw, właśnie dlatego ostatnio na BakaBT.com pojawił się news z najczęściej używanymi hasłami i z prośbą o ich zmianę :D (polecam przeczytanie tego newsa :) przykład popularności trzech haseł: 123456 vs 12345678 vs 123456789 jest bardzo interesujący ^_^, bo wniosek z tego taki, że 30 osób uważa że ta dodatkowa 9tka w czymś pomaga :P )
ale do rzeczy, MyBB i hashowane hasła. jak pamiętam MyBB generuje jeszcze coś, co do tego hasła zapewne dodaje przed hashowaniem (w bazie jest to coś zapisane w polu obok hasła). jeżeli jest faktycznie tak, jak myślę że jest (bo tylko zgaduję, nie przeglądałem kodu MyBB), to to zabezpieczenie utrudni Ci nawet zabawę w metodę słownikową, ale jako że masz dostęp do bazy ... :D w każdym razie innej metody jak przegląd zupełny nie ma
Hasła są generowane tak:
hasło usera jest hashowany w md5
generowany jest salt (jest on dostępny w bazie danych)
ten wygenerowany też jest hashowany w md5
następnie hash_z_hasła+hash_z_salta są hashowane md5 tak to wygląda mniej więcej:
Kod PHP:
$salt 'coś tam';
$pass md5('coś tam');
md5(md5($salt).$pass); //gotowe hasło przy  czym KROPKA tu: [...]lu).$p[...] nie jest częścią hashu 

A w oryginalnym skrypcie wygląda tak:
Kod PHP:
        // MD5 the password
        
$user['md5password'] = md5($user['password']);

        
// Generate our salt
        
$user['salt'] = generate_salt();

        
// Combine the password and salt
        
$user['saltedpw'] = salt_password($user['md5password'], $user['salt']);
/*
[...]
*/

function salt_password($password$salt)
{
    return 
md5(md5($salt).$password);

Podsumowując:

(17.10.2009, 12:31)pziemczyk napisał(a): [ -> ]W jaki sposób można odkodować hasło?

Nie ma takiej opcji. Możesz jedynie za pomocą salt_password porównywać to wpisywane hasło z tym w polu password.
Tutaj Victor się z tobą nie zgodzę a dokładniej po części się nie zgodzę. Jest możliwość odczytania hasła, jednak jest to bardzo czasochłonne i potrzeba wielu mocnych maszyn aby to zrobić. Można by wykorzystać tęczowe tablice jednak jest to niepraktyczne przy solach. Kolejną metodą jest atak brute force. I ostatnia ze znanych mi metod jest znalezienie kolizji jednak ona wiąże się z metodą poprzednią.
w porządku, ale umówmy się, zasadniczo nikt z nas, nie mając dostępu do gdańskiej Galery nie ma większych szans na odczytanie DOWOLNEGO hasła, no chyba że mu na czasie nie zależy, a i tak odradzał bym zabawę z php :P
jedynie taki test jaki widać na wcześniej wspomnianym bakabt ma sens, ponieważ testuje się jedynie grupę typowych i łatwych do "złamania" (czyli łatwych do odgadnięcia) haseł.

tak więc pziemczyk, na ten plugin/skrypt za bardzo liczyć nie możesz :)
ale teraz najważniejsze chyba pytanie - po jakiego grzyba jest Ci potrzebna możliwość odczytania czyjegoś hasła?? żaden admin nie powinien tego robić bez dobrego wytłumaczenia ;P
(17.10.2009, 15:56)Julek12 napisał(a): [ -> ]Tutaj Victor się z tobą nie zgodzę a dokładniej po części się nie zgodzę. Jest możliwość odczytania hasła, jednak jest to bardzo czasochłonne i potrzeba wielu mocnych maszyn aby to zrobić. Można by wykorzystać tęczowe tablice jednak jest to niepraktyczne przy solach. Kolejną metodą jest atak brute force. I ostatnia ze znanych mi metod jest znalezienie kolizji jednak ona wiąże się z metodą poprzednią.

Tak, można to jechać brutem czy słownikiem, ale czy był sens mu to tłumaczyć?

Pani od matematyki w 4. klasie podstawówki nie uczyła Cie o pitagorasie, chociaż rozmawialiście o trójkącie i jego polach.
Witam,
moglby ktos wytlumaczyc jak przetworzyc haslo z post'a(formularza) i porownac z tym z bazy danych? Probowalem juz kilka razy z podanymi tutaj sposobami, a takze z innych tematow i nie dziala. Gdy uzylem tego kodu musialem dodawac do swojego funkcje z mybb.
Pozdrawiam
inc/functions_user.php, funkcja validate_password_from_uid, w zasadzie sprowadza się to do tych linii:
Kod PHP:
if(salt_password(md5($password), $user['salt']) == $user['password']) {
    return 
$user;
} else {
    return 
false;