"Brute force" na aplikacje konsolowe.

0

Witam
Uczę się c++ od niedawna, jestem na etapie programowania strukturalnego.
Bawię się obecnie w szyfrowanie/deszyfrowanie własnych programików konsolowych w tym że języku.
Wrzucam na początek kodu hasło, jego zapis motam jak tylko się da, a potem próbuję odczytać hasło ze skompilowanej aplikacji np wyciągając kod w postaci assemblera.
Proste szyfry (coś ala "cezar" etc..) bez problemu dało się rozkminić nawet bez znajomości asm, (pewne rzeczy po prostu rzucają się w oczy), ale bardziej złożonych już nie jestem w stanie.
Myślę teraz nad stworzeniem" łamacza haseł" do takich właśnie rzeczy, wykorzystujący atak "brute force".
Miałby on po krótce wyglądać tak:

  1. Program otwiera zabezpieczoną aplikację.
  2. Generuje hasło (wedle podanych wcześniej kryteriów).
  3. Wpisuje Hasło do zabezpieczonej aplikacji.
  4. Sprawdza reakcje aplikacji. (np. jeśli zostanie zwrócony napis "zle haslo" wróć do kroku 2 generując inne hasło, jeśli coś innego np"brawo", zapisz hasło w notatniku i zakończ działanie.

Byłbym w stanie napisać program generujący kolejne hasła (wedle dowolnych kryteriów), natomiast nie wiem jak zrobić aby wypisywał je właśnie w zabezpieczonej hasłem aplikacji i tam sprawdzał jej reakcje.
Może ktoś wrzucić odpowiedzialny za to kod? Ewentualnie wskazać co trzeba opanować do tego celu.

Pozdrawiam.

0

możesz zrobić tak:
zapisujesz hasło, które chcesz sprawdzić do pliku powiedzmy o nazwie wejscie. I teraz odpalasz program i przekierowujesz wejście i wyjście, czyli:
./program < wejscie > wyjscie
w c++ wyglądało by to tak:

 system("./program < wejscie > wyjscie")

i wtedy w pliku wyjscie masz to co wypisał program.

0
marseel napisał(a)

możesz zrobić tak:
zapisujesz hasło, które chcesz sprawdzić do pliku powiedzmy o nazwie wejscie. I teraz odpalasz program i przekierowujesz wejście i wyjście, czyli:
./program < wejscie > wyjscie
w c++ wyglądało by to tak:

 system("./program < wejscie > wyjscie")

i wtedy w pliku wyjscie masz to co wypisał program.

To już daje jakieś perspektywy :)
Widzę to teraz tak:
1.Mój generator wypisuje do pliku "wejscie" jedno, wygenerowane właśnie hasło.
2. Wykonywane jest Twoje polecenie system("program.exe < wejscie.txt > wyjscie.txt")
3. Jeśli w pliku wyjscie.txt znajdzie sie napis "zle haslo", wracaj do pkt 1 generujac nowe hasło, jeśli znajdzie się tam inny napis, zakończ program.
z momentem zakończenia programu prawidłowe hasło powinno być w pliku wejście.txt.
Pkt 1 jestem w stanie wykonać, problemy pojawiają się dalej:
po pierwsze: Twoje polecenie wykonuje się w nieskończoność, ciągle wypisując do wyjścia "zle haslo, zle haslo..." więc nie można przejsć dalej.
Po drugie: jeśli uda się rozwiązać powyższy problem, nie bardzo wiem jak przełożyć na kod krok 3.

0

Rozumiem, że program się zapętla i ciągle wypisuje to samo wielokrotnie do pliku ? Skoro tak to daj kod to zobaczymy czemu tak się dzieje. Czego konkretnie nie umiesz zrobić w punkcie 3 ? Sprawdzić co jest w pliku czy coś innego ?

0

Jako, ż sam przyznajesz się, że jesteś poczatkujący tam ci radę w formie stwierdzenia, które jak rozgryziesz zrozumiesz:

Plik tekstowy zawierający wszystkie kombinacje znaków alfabetu (małych, bez polskich liter )o długości sześciu znaków waży 2GB.

0

@up - Złamanie sześcioznakowego kodu przez brute force, nawet z rozdziałem na małe/duże znaki oraz cyfry oraz na 'normalnym' komputerze to nie jest specjalny problem, chociaż kod będzie się trochę (max 1-2 h.) wykonywał.

0

MSM o tym właśnie mówię, wiec zrozum moja reakcję:
http://forum.wejher.com/files/orly_152.jpg

1 użytkowników online, w tym zalogowanych: 0, gości: 1