Ĺadny brzuch
Piszę pewną ciekawą aplikację w Delphi o nazwie "Odgadywacz haseł". Polega ona na tym że generuje hasło sprawdza czy pasuje, jeżeli nie to generuje następne i tak w nieskończoność. Ale mam problem bo niewiem jak napisać procedurę generującą hasła. Chodzi o to że najpierw generuje po kolei wszystkie znaki dostępne na komputerze, jest ich 255. Jeżeli wszystkie zostaną wygenerowane to zaczyna się drugi poziom, a pierwszy sie resetuje, i pierwszy zmienia litere na następną kiedy wszystkie litery z drugiego poziomu zostaną wyczerpane i naliczanie drugiego poziomu następuje od nowa po naliczeniu poprzedniego i tak w nieskończoność aż do 30 poziomu. Czy ktoś wie może jak to zrobić?
Chyba za dużo filmów się naoglądałeś :P :P Jak już chcesz wprowadzić swój pomysł w życie to pojedyńcze znaki zapisz w tablicy, i napisz do tego funkcję opartą głównie na pętlach.
Użytkownik reVis edytował ten post 17 lipiec 2005, 23:50
No na oglądałem się :lol: . Ale jeżeli hasło jest krótkie np. 3 znaki to bardzo łatwo można je odgadnąć. A jak stworzyć taką tablicę? I jak w pętli do niej wpisać pokolei wszystkie znaki?
Użytkownik D@nko edytował ten post 17 lipiec 2005, 23:52
hm, bylo o tym na 4programmers ;] ale gdzie to nie pamiętam :)
Poszukaj na forum i w serwisie o "brutal force" :)
dh_maniak: chyba wiadomo, że zapomniałem o literce "o", a Ty od razu musisz sie naśmiewać :P :mad:
Użytkownik -=PcSA=- edytował ten post 18 lipiec 2005, 01:08
Piszę pewną ciekawą aplikację w Delphi o nazwie "Odgadywacz haseł". Polega ona na tym że generuje hasło sprawdza czy pasuje, jeżeli nie to generuje następne i tak w nieskończoność. Ale mam problem bo niewiem jak napisać procedurę generującą hasła. Chodzi o to że najpierw generuje po kolei wszystkie znaki dostępne na komputerze, jest ich 255. Jeżeli wszystkie zostaną wygenerowane to zaczyna się drugi poziom, a pierwszy sie resetuje, i pierwszy zmienia litere na następną kiedy wszystkie litery z drugiego poziomu zostaną wyczerpane i naliczanie drugiego poziomu następuje od nowa po naliczeniu poprzedniego i tak w nieskończoność aż do 30 poziomu. Czy ktoś wie może jak to zrobić?
A jak z pliku pas wyciągnąć dcu?
Za co ty sie bierzesz skoro nie znasz podstaw :lol:
a to twoje ostatnie pytanie zastanów sie czy ma sens jak wyciagnac dcu z pas a to jest tam w srodku uwazasz jesli tak to sie myslisz lepiej bardziej sie postaraj i poszukaj obok pas
A jak z pliku pas wyciągnąć dcu?
Nie, nie robcie mi nic, to chyba tak bedzie wygladac w c++:
(...) // W programie obecna zmienna z zaszyfrowanym haslem pszPass const int iDlugoscHasla = strlen(pszPass); char caEncPass[iDlugoscHasla]; const int c_iLiczbaZnaczkow = 255; char caZnaczki[c_iLiczbaZnaczkow] = { 'a', 'b', 'c', (...) }; while(1) { for(int i=0; i<iDlugoscHasla;i++) { caEncPass[i] = caZnaczki[(rand()%c_iLiczbaZnaczkow)]; } if(Zaloguj(caEncPass)) {cout << "Haslo to " >> caEncPass << endl; break; } }
Jak cos zle to mnie poprawcie, pierwszy raz pisze taki programik. Oczywiscie musi byc funkcja Zaloguj spraqwdzajaca, czy wygenerowano dobre haslo
Piszę pewną ciekawą aplikację w Delphi o nazwie "Odgadywacz haseł". Polega ona na tym że generuje hasło sprawdza czy pasuje, jeżeli nie to generuje następne i tak w nieskończoność. Ale mam problem bo niewiem jak napisać procedurę generującą hasła. Chodzi o to że najpierw generuje po kolei wszystkie znaki dostępne na komputerze, jest ich 255. Jeżeli wszystkie zostaną wygenerowane to zaczyna się drugi poziom, a pierwszy sie resetuje, i pierwszy zmienia litere na następną kiedy wszystkie litery z drugiego poziomu zostaną wyczerpane i naliczanie drugiego poziomu następuje od nowa po naliczeniu poprzedniego i tak w nieskończoność aż do 30 poziomu. Czy ktoś wie może jak to zrobić?
prawdopodobnie nie do konca skumalem o co chodzi, ale jezeli dobrze skumalem, to pragne zauwazyc ze to jest 256^30 = (2^8)^30 = 2^240 kombinacji... :-D ;-D ;-D buhehehehehe... na jakim komputerze ty chcesz to liczyc ? :-D
Liczba mozliwosci zalezy od dlugosci odgadywanego hasla psze pana :P . A moze gosc ma w pokoju obok maszyne ktora zajmuje pierwsze miejsce w TOP 500 :D
Ściągnij sobie Brutusa. I spróbuj złamać hasełko do swojej poczty. Koniecznie ustaw hasło krótkie (5-6 znaków).
Gdy wsystkie kombinacje przelecą (jakieś 3 miesiące nonstop, o ile nie dostaniesz bana na serwer poczty a dostaniesz napewno max po godzinie) to zrozumiesz że wyniki poziomu 30 zobaczą ( teoretycznie) dopiero twoje wnuki.
O ile sie nie myle, na podobnej zasadzie dziala programik do wyciagania hasel z archiwow Rara. Kilkuliterowe haslo odczytuje wiele godzin. Bez sensu...
Bez sensu...
Chodzilo mi o to, ze bez sensu jest pisanie czegos co dawno zostalo napisane. A na haslo znam lepszy sposob: nie grzebac tam, gdzie Cie nie proszono :)
hmmmmmm tez kiedys probowalem cos takiego napisac ale jakos zabraklo mi czasu i chenci. Ja mialem bardziej szalony pomysl - aby stworzyc wszystkie kombinacje [do dlugosci 255].
Do napisania tego programu napewno przyda ci sie wzór na kombinacje 9Poczytaj sobie to http://ux1.math.us.e...at.htm#tth_sEc2
jak cos to pisz do mnie na darkcez@wp.pl a postarm ci pomócv [moze wspolnie to napiszemy LOL B)
Juz dawno temu napisalem komponent, ktory generuje kolejne kombinacje znakow (oczywiscie do celow naukowych :P). Jes to banalne zadanie. Jak bedziesz chcial to moge podeslac na @ albo wkleic na nopaste...
Twierdzicie że to jest w przeciągu 150 lat nawet na najlepszych komputerach nie możliwe. A to zależy głównie od wydajności kodu.
Twierdzicie że to jest w przeciągu 150 lat nawet na najlepszych komputerach nie możliwe. A to zależy głównie od wydajności kodu.
Ale to trochę dziwne. Miałem jakieś 2 programy do łamania hasła winrara. Jeden to samo hasło odszyfrował w 2 godziny, a drugi odszyfrował w 10 minut. Więc dużo zależy od wydajności kodu i jego ograniczeń np. hasło losowane i sprawdzane co 50 milisekund a można ustawić taką granicę żeby program mógł odbsłużyć np 10 milisekund. I było by dużo szybciej(5 razy szybciej).
Hehehe :D Tak czytam wasze posty i przypomnialem sobie moj stary programik w C++mozecie go sciagnac tutaj :Generator Haseł
Moze chodzi ci chodzi o cos w tym stylu? B)
Użytkownik Xardis edytował ten post 12 sierpień 2005, 16:28
Mi nie chodzi o wygenerowanie hasła. Tylko losowego ciągu znaków tak żeby program automatycznie sprawdzał czy pasuje.
Mi nie chodzi o wygenerowanie hasła. Tylko losowego ciągu znaków tak żeby program automatycznie sprawdzał czy pasuje.
A ogladales chociaz program <_< Hasla ktore generuje to poprostu ciag znakow. :P Wlasnie takie ciagi mozna by wykorzystac do programu nad jakim pracujesz;) Tylko jeszcze tylko troche rozbudowac program i dodac zeby je sprawdzal i wszystko gotowe. Ale oczywiscie tylko do celow edukacyjnych B)
Użytkownik Xardis edytował ten post 12 sierpień 2005, 16:43
Jak masz TRANSLATORA (supernowoczesny komputer z "Cyfrowej Twierdzy", który potrafił złamać hasło złożone z 64 znaków w 10 minut,
Dopuki nie znajdzie sie jakis japoniec ktory go oszuka ;)
No właśnie. A kodów to tego programu nie mam. A pozatym to on potrafi bardzo nie wiele. Generowanie tam 4 8 i 16 znaków czy coś w tym stylu.. Pozatym te znaki mogą się powtarzać... <_<
Program ten stworzylem niezly czas temu wiec cudenkiem to on nie jest ;) . Ale jakby go rozbudowac to by sie nawet i na to nadal B)
No właśnie. A kodów to tego programu nie mam. A pozatym to on potrafi bardzo nie wiele. Generowanie tam 4 8 i 16 znaków czy coś w tym stylu.. Pozatym te znaki mogą się powtarzać... <_<
Umiem programować.. Wygenerowanie losowego ciągu znaków to nie problem.. Tylko żeby generowane były po kolei czyli aaa, aab, aac itd.
Cinekcool po prostu smerfastycznie to ujales ;) (bez obrazy) Zamiast dyskutowac tu niepotrzebnie moglibysmy zrobic wiele pozyteczniejszych rzeczy ;)
Może jakby się zebrało paru programistów to można by było taki dobry i rozbudowany program zrobić... :blink:
Hehe kolejny projekt xD To nie wyjdzie jak zawsze ...
Użytkownik patseb edytował ten post 12 sierpień 2005, 17:06
Hehe kolejny projekt xD To nie wyjdzie jak zawsze ...
To skombinuj jakas paczke i bierz sie do roboty ;)
:D Chętni pchają się dzwiami i oknami :D :D Jest tylko jeden problem.. Nie umiem koordynować pracą... :(
Umiem programować.. Wygenerowanie losowego ciągu znaków to nie problem.. Tylko żeby generowane były po kolei czyli aaa, aab, aac itd.
Twierdzicie że to jest w przeciągu 150 lat nawet na najlepszych komputerach nie możliwe. A to zależy głównie od wydajności kodu.
Wiesz.. wlasnie wropcilem z pracy..zmeczony, za mala wyplata itp itd..smutny, zly itp itd :D, a tu Twoj post :) i od razu micha mi sie cieszy :)
Jestes geniuszem.... to ja jak lamalem hasla w md5 (testowe 3 znakowe) prawie zakatowalem 3 serwery :)
a ty tu masz pomysl na jakies rewolucyjne algorytmy...moze wspomoc finansowo Twoj projekt? :D
cinekcool czasami zeby ruszyc mozgownica trzeba ja miec ;) roznie sie zdarza :P
A ja ciągle nie wiem jak dokładnie chcesz odgadywać to hasło :P. Z tego co napisałeś w pierwszym poście to rouzmiem że chciałeś program który będzie zgadywał po kolei każdy znak w haśle. Jak zgadnie pierwszy to przejdzie do drugiego itd... Tak się nie da :) bo hasło albo całe albo nic. Nie będziesz miał jak sprawdzić pojedynczych znaków w haśle.
A w kwestii drugiej czyli generowania losowego ciągu znaków. Fakt będzie to trwało raczej długo ( no chyba że masz szczęście )... zauważ też że praktycznie nie wiesz ile hasło ma znaków co tym bardziej utrudnia sprawę ( a już napewno wydłuża :) )
A jeszcze na zakończenie wyprowadź mnie z błędu jeżeli walnąłem się w interpretacji twojego postu. Bo teraz naszedł mnie inny pomysł rozumienia Twojego postu :). Może chcesz żeby komp generował wszystkie możliwe ciągi znaków najpierw jednoznakowe, potem dwuznakowe... itd. Więc? Trafiłem z którymś pomysłem?
Użytkownik reVis edytował ten post 12 sierpień 2005, 17:53
A ja ciągle nie wiem jak dokładnie chcesz odgadywać to hasło :P. Z tego co napisałeś w pierwszym poście to rouzmiem że chciałeś program który będzie zgadywał po kolei każdy znak w haśle. Jak zgadnie pierwszy to przejdzie do drugiego itd... Tak się nie da :) bo hasło albo całe albo nic. Nie będziesz miał jak sprawdzić pojedynczych znaków w haśle.
A w kwestii drugiej czyli generowania losowego ciągu znaków. Fakt będzie to trwało raczej długo ( no chyba że masz szczęście )... zauważ też że praktycznie nie wiesz ile hasło ma znaków co tym bardziej utrudnia sprawę ( a już napewno wydłuża :) )
A jeszcze na zakończenie wyprowadź mnie z błędu jeżeli walnąłem się w interpretacji twojego postu. Bo teraz naszedł mnie inny pomysł rozumienia Twojego postu :). Może chcesz żeby komp generował wszystkie możliwe ciągi znaków najpierw jednoznakowe, potem dwuznakowe... itd. Więc? Trafiłem z którymś pomysłem?
może użyć wyrażeń regularnych (np. gdy wiemy jak się hasło zaczyna - i już kilka(set, tysięcy, milionów) przebiegów mniej :))
do tego jeszcze słownik popularnych haseł - imiona, daty, nazwy zwierząt, itp :) widziałem gdzieś na necie listę takich kilkuset najpopularniejszych haseł - to by mogło tak działać:
1. sprawdza najpopularniejsze
2. sprawdza słownik
3. brute force...
Nie zartuj. Wygenerowanie 16 losowych znakow tak, zeby zaden sie nie powtarzal to mala pestka :) Generujesz znak, sprawdzasz, czy juz taki byl, i jak nie byl to go umieszczasz na koncu ciagu. Zero problemow :)
Ha ha ha ha... :mad: Nie mam żadnych super algorytmów... Ja tylko się pytam jak to zrobić... :P
Czyli zwykłe bruteforce. Napisać się da (już nawet jest).
Wszystkich możliwych znaków w haśle jest ok. 80 (A..Z a..z 0..9 !#$% itp.)
Długość hasła może wynosić do 30 znaków czyli wszystkich kombinacji jest około:
80+80^2+80^3+80^4+80^5+...................+80^29+80^30 czyli coś około
1253610166364942050530758479817700000000000000000000000000 kombinacji.
(to liczba kombinacji od 19 znaków do 30 bo dalej nie chciało mi sie liczyć)
Zakładając że chce np. złamać hasło do serwera poczty to musiałby z każdą kombinacją wykonać logowanie via net. Załóżmy że czas dopowiedzi serwera wynosi ok 1 sek. (zależy jakie ma kto łącze).
Jeżeli ktoś na kogo pocztę chcesz się włamać ma hasło w postaci 30 dowolnych znaków to wynik działania programu zobaczysz po czwartym BIG-BANGU (takie CUŚ co zrobiło wszechświat)
Jeśli hasło będzie miało tylko 6 znaków to włam na pocztę uda Ci się po około 8312 latach. Może troszkę szybciej jeśli masz łącze 50Mbit lub lepsze.
PS Jak patrzę na te liczby to mi się coś wydaje że się kopnęłem w obliczniach :D
Jeżeli ktoś na kogo pocztę chcesz się włamać ma hasło w postaci 30 dowolnych znaków to wynik działania programu zobaczysz po czwartym BIG-BANGU (takie CUŚ co zrobiło wszechświat)
Jeśli hasło będzie miało tylko 6 znaków to włam na pocztę uda Ci się po około 8312 latach. Może troszkę szybciej jeśli masz łącze 50Mbit lub lepsze.
[...]
dlatego najlepiej operować bezpośrednio na maszynie, na której się łamie hasła - i do tego wyłączyć wszystkie zbędne procesy - żeby jak najwięcej kaloryferków w stylu RAMu i CPU można było użyć ^^
albo wykorzystywać superkomputery ^^
Jak sie nie znasz w rzeczonej materii to proponuje sie nie udzielac
www.johans24.webpark.pl/brutus.rar
Tu macie brutusa.
Ustawić
Target: ip serwera poczty
type: pop3
zaznaczyć single user
userid: login do poczty
pass mode : bruteforce
range: fullkeyspace
max length: 16
i start ;)
na dole okna pisze za ile (około) skończy. Lepiej tam nie zaglądać :D
Aha. prog wykrywany przez antywira jako trojan Win32.Trojan-gen {Delphi}
edit/
A najbardziej w tym programie podoba mi się komunikat:
The attack you have ordered is likely to take several billions years to execute.
Since MS Windows will cease working around the middle of the 21st century this seems futile.
Brutus has calculated thet you stand more chance by telephoning the target system owners/organisation and asking for a username/password :lol:
Użytkownik johans edytował ten post 12 sierpień 2005, 20:21
no reVis ma racje, jakby nie patrzec, mozliwosc sprawdzenia hasla znak po znaku stawialaby pod znakiem zapytania fakt uzywania hasel. co prawda mozna spotkac przypadki takiego czegos, ale sa one chyba nieliczne (ktorys windows chyba czegos takiego uzywal, ale nie jestem pewien). tak czy siak nie ma odpytywania znak po znaku :)
A skąd wy wiecie czy ja chcę się włamać na poczte na czyjeś konto w allegro czy może do komputera nato. Nie było mowy o żadnym włamywaniu. Programik chciałem napisac bo przydatny jest czasami.
A skąd wy wiecie czy ja chcę się włamać na poczte na czyjeś konto w allegro czy może do komputera nato. Nie było mowy o żadnym włamywaniu. Programik chciałem napisac bo przydatny jest czasami.
Taki mały przykład na hasełka od 1 do 5 literowego.
Wydajność i inne bobole pomijam milczeniem. ;)
To ma być tylko przykład.
procedure TForm1.Button1Click(Sender: TObject); var znak1, znak2, znak3, znak4, znak5: integer; z, kod: string; begin z:=' ABCDEFGHIJKLMNOPQRS'; // znaki dozwolone w haśle (koniecznie spacja na początku) // celowo dałem tylko tyle bo mam tylko Duron800 a chciałem wynik zobaczyć dziś znak1:=2; znak2:=1; znak3:=1; znak4:=1; znak5:=1; // ustawiając np i,j,k na 2 rozpocznie od 3 literowych itp. while znak5<length(z)+1 do begin kod:=trim(z[znak5]+z[znak4]+z[znak3]+z[znak2]+z[znak1] ); label1.Caption:=kod; // tu można dać np. dopisywanie do textfile, ale czy dysk to wytrzyma?;-) application.ProcessMessages; inc(znak1); if znak1>length(z) then begin inc(znak2); znak1:=2; end; if znak2>length(z) then begin inc(znak3); znak2:=2; end; if znak3>length(z) then begin inc(znak4); znak3:=2; end; if znak4>length(z) then begin inc(znak5); znak4:=2; end; end; end;
Aha. pętla leci , leci aż przeleci. :)
hehe a ja proponuje rozwiązanie rekurencyjne: nie będę pisał tu kodu bo nie mam delfina pod ręką ale napisze sposób.
Otóż najpierw wywołujemy prockę np. "haslo(ciag:ShortString); //shortstring - trzeba oszczędzać pamięć :D " czyli będzie w tym wypadku procka "haslo('a');" Nasza procka da ciąg "b" (czyli - zamieni ostatni znak z ciągu na następny na liście jak u mojego przedmówcy :D ), spróbuje złamać hasło tym ciągiem i wywołuje "haslo('b');"... kiedy będzie już "Z" (to dla uproszczenia, wiem że powinny być jeszcze cyfry, znaki specjalne itp. chodzi po prostu o to, że jak dotrze do ostatniego znaku) to zaczyna od nowa, tylko że od "aa". Kiedy dotrze już do "aZ" wtedy zaczyna od "ba", jak dotrze do "ZZ" to zaczyna od "aaa" itd. itp.
napiszcie czy coś takiego by przeszło bo mimo iż teoretykę mam wkutom :D na pamięć no to nie jestem doświadczonym programistą... a dokładniej: wiem że teoretycznie coś takiego jest dobre, ale nie wiem czy w praktyce czasem właśnie coś takiego nie będzie trwać... ho ho :D a pozatym mam dopiero 13 wiosen tak więc musze swój umysł troszeczkę jeszcze doszkolić :D :D :D
może dam kodzik jak cuś podobnego napiszę... :D
Użytkownik dos edytował ten post 14 sierpień 2005, 14:19
Co prawda wyslalem juz ten komponent do autora tematu, ale postanowilem umiecic go na stronie....
Zapraszam do dzialu downloads -> komponenty na mojej stronie. Znajduje sie tam komponent "Generator Haseł", ktory generuje kolejne hasla (zaczynajac od podanego) na podstwie podnych znakow.
chciałbym wrócić do przykładu johansa co trzeba zrobic aby zatrzymać te generowanie liter i żeby dało się je dalej kontynuować?
BUAHHAHAHAHAHAHAHAHA
troche mnie nie bylo na FKSE, wiec nie sledzilem tego tematu, w sumie bylem przekonany ( mialem nadzieje ? ) ze sobie autor topica po moim poscie odpuscil... jak zobaczylem ten topic na wierzchu i jego kontynuacje... niezle sie usmialem.
"30 zobaczą ( teoretycznie) dopiero twoje wnuki."
wnuki ? :-D nie bardzo :-P
"mmmmmm tez kiedys probowalem cos takiego napisac ale jakos zabraklo mi czasu i chenci. Ja mialem bardziej szalony pomysl - aby stworzyc wszystkie kombinacje [do dlugosci 255]."
n/c, patrz nizej
"Twierdzicie że to jest w przeciągu 150 lat nawet na najlepszych komputerach nie możliwe. A to zależy głównie od wydajności kodu."
gowno. to zalezy glownie a moze nawet wylacznie od zlozonosci algorytmu. na wydajnosci kodu dla takich danych mozesz zdobyc +- 1 rok. to jest nic.
"(supernowoczesny komputer z "Cyfrowej Twierdzy", który potrafił złamać hasło złożone z 64 znaków w 10 minut, zbudowany z 3 mln procesorów)"
a wiec nie uzywa typowego brute force'a. nie chce cie martwic ale haslo zlozone z 64 znakow... powiedzmy ze wydajnosc procesorow bedzie szybko rosnac i kazdy procesor bedzie mial 3k Ghz, i powiedzmy ze ten supernowoczesny komputer bedzie mial 30 miliardow takich procesorow... nadal NIE ZBLIZYLISMY sie nawet do magicznej granicy 1 miliona lat.
"Jeden to samo hasło odszyfrował w 2 godziny, a drugi odszyfrował w 10 minut. "
a moze zalezy po prostu od kolejnosci w jakiej te hasla leca ? roznica w optymalizacji tego samego algorytmu nie bedzie tak duza. po prostu dla tego hasla program 1 mial 2 godziny, program 2 mial 10 minut. dla innego hasla sytuacja moze sie zmienic.
"Umiem programować.. Wygenerowanie losowego ciągu znaków to nie problem.. Tylko żeby generowane były po kolei czyli aaa, aab, aac itd."
n/c
"Może jakby się zebrało paru programistów to można by było taki dobry i rozbudowany program zrobić... blink.gif"
nie mozna by bylo.
"Nie zartuj. Wygenerowanie 16 losowych znakow tak, zeby zaden sie nie powtarzal to mala pestka smile.gif Generujesz znak, sprawdzasz, czy juz taki byl, i jak nie byl to go umieszczasz na koncu ciagu. Zero problemow smile.gif"
juz widze ten "optymalny kod"
Ale jeżeli hasło jest krótkie np. 3 znaki to bardzo łatwo można je odgadnąć.
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Chyba za dużo filmów się naoglądałeś :P :P Jak już chcesz wprowadzić swój pomysł w życie to pojedyńcze znaki zapisz w tablicy, i napisz do tego funkcję opartą głównie na pętlach.
Użytkownik reVis edytował ten post 17 lipiec 2005, 23:50
No na oglądałem się :lol: . Ale jeżeli hasło jest krótkie np. 3 znaki to bardzo łatwo można je odgadnąć. A jak stworzyć taką tablicę? I jak w pętli do niej wpisać pokolei wszystkie znaki?
Użytkownik D@nko edytował ten post 17 lipiec 2005, 23:52
hm, bylo o tym na 4programmers ;] ale gdzie to nie pamiętam :)
Poszukaj na forum i w serwisie o "brutal force" :)
dh_maniak: chyba wiadomo, że zapomniałem o literce "o", a Ty od razu musisz sie naśmiewać :P :mad:
Użytkownik -=PcSA=- edytował ten post 18 lipiec 2005, 01:08
Piszę pewną ciekawą aplikację w Delphi o nazwie "Odgadywacz haseł". Polega ona na tym że generuje hasło sprawdza czy pasuje, jeżeli nie to generuje następne i tak w nieskończoność. Ale mam problem bo niewiem jak napisać procedurę generującą hasła. Chodzi o to że najpierw generuje po kolei wszystkie znaki dostępne na komputerze, jest ich 255. Jeżeli wszystkie zostaną wygenerowane to zaczyna się drugi poziom, a pierwszy sie resetuje, i pierwszy zmienia litere na następną kiedy wszystkie litery z drugiego poziomu zostaną wyczerpane i naliczanie drugiego poziomu następuje od nowa po naliczeniu poprzedniego i tak w nieskończoność aż do 30 poziomu. Czy ktoś wie może jak to zrobić?

A jak z pliku pas wyciągnąć dcu?
Za co ty sie bierzesz skoro nie znasz podstaw :lol:
a to twoje ostatnie pytanie zastanów sie czy ma sens jak wyciagnac dcu z pas a to jest tam w srodku uwazasz jesli tak to sie myslisz lepiej bardziej sie postaraj i poszukaj obok pas
A jak z pliku pas wyciągnąć dcu?

Nie, nie robcie mi nic, to chyba tak bedzie wygladac w c++:
(...) // W programie obecna zmienna z zaszyfrowanym haslem pszPass const int iDlugoscHasla = strlen(pszPass); char caEncPass[iDlugoscHasla]; const int c_iLiczbaZnaczkow = 255; char caZnaczki[c_iLiczbaZnaczkow] = { 'a', 'b', 'c', (...) }; while(1) { for(int i=0; i<iDlugoscHasla;i++) { caEncPass[i] = caZnaczki[(rand()%c_iLiczbaZnaczkow)]; } if(Zaloguj(caEncPass)) {cout << "Haslo to " >> caEncPass << endl; break; } }
Jak cos zle to mnie poprawcie, pierwszy raz pisze taki programik. Oczywiscie musi byc funkcja Zaloguj spraqwdzajaca, czy wygenerowano dobre haslo
Piszę pewną ciekawą aplikację w Delphi o nazwie "Odgadywacz haseł". Polega ona na tym że generuje hasło sprawdza czy pasuje, jeżeli nie to generuje następne i tak w nieskończoność. Ale mam problem bo niewiem jak napisać procedurę generującą hasła. Chodzi o to że najpierw generuje po kolei wszystkie znaki dostępne na komputerze, jest ich 255. Jeżeli wszystkie zostaną wygenerowane to zaczyna się drugi poziom, a pierwszy sie resetuje, i pierwszy zmienia litere na następną kiedy wszystkie litery z drugiego poziomu zostaną wyczerpane i naliczanie drugiego poziomu następuje od nowa po naliczeniu poprzedniego i tak w nieskończoność aż do 30 poziomu. Czy ktoś wie może jak to zrobić?

prawdopodobnie nie do konca skumalem o co chodzi, ale jezeli dobrze skumalem, to pragne zauwazyc ze to jest 256^30 = (2^8)^30 = 2^240 kombinacji... :-D ;-D ;-D buhehehehehe... na jakim komputerze ty chcesz to liczyc ? :-D

Liczba mozliwosci zalezy od dlugosci odgadywanego hasla psze pana :P . A moze gosc ma w pokoju obok maszyne ktora zajmuje pierwsze miejsce w TOP 500 :D

Ściągnij sobie Brutusa. I spróbuj złamać hasełko do swojej poczty. Koniecznie ustaw hasło krótkie (5-6 znaków).
Gdy wsystkie kombinacje przelecą (jakieś 3 miesiące nonstop, o ile nie dostaniesz bana na serwer poczty a dostaniesz napewno max po godzinie) to zrozumiesz że wyniki poziomu 30 zobaczą ( teoretycznie) dopiero twoje wnuki.
O ile sie nie myle, na podobnej zasadzie dziala programik do wyciagania hasel z archiwow Rara. Kilkuliterowe haslo odczytuje wiele godzin. Bez sensu...
Bez sensu...

Chodzilo mi o to, ze bez sensu jest pisanie czegos co dawno zostalo napisane. A na haslo znam lepszy sposob: nie grzebac tam, gdzie Cie nie proszono :)
hmmmmmm tez kiedys probowalem cos takiego napisac ale jakos zabraklo mi czasu i chenci. Ja mialem bardziej szalony pomysl - aby stworzyc wszystkie kombinacje [do dlugosci 255].
Do napisania tego programu napewno przyda ci sie wzór na kombinacje 9Poczytaj sobie to http://ux1.math.us.e...at.htm#tth_sEc2
jak cos to pisz do mnie na darkcez@wp.pl a postarm ci pomócv [moze wspolnie to napiszemy LOL B)
Juz dawno temu napisalem komponent, ktory generuje kolejne kombinacje znakow (oczywiscie do celow naukowych :P). Jes to banalne zadanie. Jak bedziesz chcial to moge podeslac na @ albo wkleic na nopaste...
Twierdzicie że to jest w przeciągu 150 lat nawet na najlepszych komputerach nie możliwe. A to zależy głównie od wydajności kodu.
Twierdzicie że to jest w przeciągu 150 lat nawet na najlepszych komputerach nie możliwe. A to zależy głównie od wydajności kodu.

Ale to trochę dziwne. Miałem jakieś 2 programy do łamania hasła winrara. Jeden to samo hasło odszyfrował w 2 godziny, a drugi odszyfrował w 10 minut. Więc dużo zależy od wydajności kodu i jego ograniczeń np. hasło losowane i sprawdzane co 50 milisekund a można ustawić taką granicę żeby program mógł odbsłużyć np 10 milisekund. I było by dużo szybciej(5 razy szybciej).
Hehehe :D Tak czytam wasze posty i przypomnialem sobie moj stary programik w C++mozecie go sciagnac tutaj :Generator Haseł
Moze chodzi ci chodzi o cos w tym stylu? B)
Użytkownik Xardis edytował ten post 12 sierpień 2005, 16:28
Mi nie chodzi o wygenerowanie hasła. Tylko losowego ciągu znaków tak żeby program automatycznie sprawdzał czy pasuje.
Mi nie chodzi o wygenerowanie hasła. Tylko losowego ciągu znaków tak żeby program automatycznie sprawdzał czy pasuje.

A ogladales chociaz program <_< Hasla ktore generuje to poprostu ciag znakow. :P Wlasnie takie ciagi mozna by wykorzystac do programu nad jakim pracujesz;) Tylko jeszcze tylko troche rozbudowac program i dodac zeby je sprawdzal i wszystko gotowe. Ale oczywiscie tylko do celow edukacyjnych B)
Użytkownik Xardis edytował ten post 12 sierpień 2005, 16:43
Jak masz TRANSLATORA (supernowoczesny komputer z "Cyfrowej Twierdzy", który potrafił złamać hasło złożone z 64 znaków w 10 minut,
Dopuki nie znajdzie sie jakis japoniec ktory go oszuka ;)
No właśnie. A kodów to tego programu nie mam. A pozatym to on potrafi bardzo nie wiele. Generowanie tam 4 8 i 16 znaków czy coś w tym stylu.. Pozatym te znaki mogą się powtarzać... <_<
Program ten stworzylem niezly czas temu wiec cudenkiem to on nie jest ;) . Ale jakby go rozbudowac to by sie nawet i na to nadal B)
No właśnie. A kodów to tego programu nie mam. A pozatym to on potrafi bardzo nie wiele. Generowanie tam 4 8 i 16 znaków czy coś w tym stylu.. Pozatym te znaki mogą się powtarzać... <_<

Umiem programować.. Wygenerowanie losowego ciągu znaków to nie problem.. Tylko żeby generowane były po kolei czyli aaa, aab, aac itd.
Cinekcool po prostu smerfastycznie to ujales ;) (bez obrazy) Zamiast dyskutowac tu niepotrzebnie moglibysmy zrobic wiele pozyteczniejszych rzeczy ;)
Może jakby się zebrało paru programistów to można by było taki dobry i rozbudowany program zrobić... :blink:
Hehe kolejny projekt xD To nie wyjdzie jak zawsze ...
Użytkownik patseb edytował ten post 12 sierpień 2005, 17:06
Hehe kolejny projekt xD To nie wyjdzie jak zawsze ...

To skombinuj jakas paczke i bierz sie do roboty ;)
:D Chętni pchają się dzwiami i oknami :D :D Jest tylko jeden problem.. Nie umiem koordynować pracą... :(
Umiem programować.. Wygenerowanie losowego ciągu znaków to nie problem.. Tylko żeby generowane były po kolei czyli aaa, aab, aac itd.

Twierdzicie że to jest w przeciągu 150 lat nawet na najlepszych komputerach nie możliwe. A to zależy głównie od wydajności kodu.

Wiesz.. wlasnie wropcilem z pracy..zmeczony, za mala wyplata itp itd..smutny, zly itp itd :D, a tu Twoj post :) i od razu micha mi sie cieszy :)
Jestes geniuszem.... to ja jak lamalem hasla w md5 (testowe 3 znakowe) prawie zakatowalem 3 serwery :)
a ty tu masz pomysl na jakies rewolucyjne algorytmy...moze wspomoc finansowo Twoj projekt? :D

cinekcool czasami zeby ruszyc mozgownica trzeba ja miec ;) roznie sie zdarza :P
A ja ciągle nie wiem jak dokładnie chcesz odgadywać to hasło :P. Z tego co napisałeś w pierwszym poście to rouzmiem że chciałeś program który będzie zgadywał po kolei każdy znak w haśle. Jak zgadnie pierwszy to przejdzie do drugiego itd... Tak się nie da :) bo hasło albo całe albo nic. Nie będziesz miał jak sprawdzić pojedynczych znaków w haśle.
A w kwestii drugiej czyli generowania losowego ciągu znaków. Fakt będzie to trwało raczej długo ( no chyba że masz szczęście )... zauważ też że praktycznie nie wiesz ile hasło ma znaków co tym bardziej utrudnia sprawę ( a już napewno wydłuża :) )
A jeszcze na zakończenie wyprowadź mnie z błędu jeżeli walnąłem się w interpretacji twojego postu. Bo teraz naszedł mnie inny pomysł rozumienia Twojego postu :). Może chcesz żeby komp generował wszystkie możliwe ciągi znaków najpierw jednoznakowe, potem dwuznakowe... itd. Więc? Trafiłem z którymś pomysłem?
Użytkownik reVis edytował ten post 12 sierpień 2005, 17:53
A ja ciągle nie wiem jak dokładnie chcesz odgadywać to hasło :P. Z tego co napisałeś w pierwszym poście to rouzmiem że chciałeś program który będzie zgadywał po kolei każdy znak w haśle. Jak zgadnie pierwszy to przejdzie do drugiego itd... Tak się nie da :) bo hasło albo całe albo nic. Nie będziesz miał jak sprawdzić pojedynczych znaków w haśle.
A w kwestii drugiej czyli generowania losowego ciągu znaków. Fakt będzie to trwało raczej długo ( no chyba że masz szczęście )... zauważ też że praktycznie nie wiesz ile hasło ma znaków co tym bardziej utrudnia sprawę ( a już napewno wydłuża :) )
A jeszcze na zakończenie wyprowadź mnie z błędu jeżeli walnąłem się w interpretacji twojego postu. Bo teraz naszedł mnie inny pomysł rozumienia Twojego postu :). Może chcesz żeby komp generował wszystkie możliwe ciągi znaków najpierw jednoznakowe, potem dwuznakowe... itd. Więc? Trafiłem z którymś pomysłem?

może użyć wyrażeń regularnych (np. gdy wiemy jak się hasło zaczyna - i już kilka(set, tysięcy, milionów) przebiegów mniej :))
do tego jeszcze słownik popularnych haseł - imiona, daty, nazwy zwierząt, itp :) widziałem gdzieś na necie listę takich kilkuset najpopularniejszych haseł - to by mogło tak działać:
1. sprawdza najpopularniejsze
2. sprawdza słownik
3. brute force...
Nie zartuj. Wygenerowanie 16 losowych znakow tak, zeby zaden sie nie powtarzal to mala pestka :) Generujesz znak, sprawdzasz, czy juz taki byl, i jak nie byl to go umieszczasz na koncu ciagu. Zero problemow :)
Ha ha ha ha... :mad: Nie mam żadnych super algorytmów... Ja tylko się pytam jak to zrobić... :P

Czyli zwykłe bruteforce. Napisać się da (już nawet jest).
Wszystkich możliwych znaków w haśle jest ok. 80 (A..Z a..z 0..9 !#$% itp.)
Długość hasła może wynosić do 30 znaków czyli wszystkich kombinacji jest około:
80+80^2+80^3+80^4+80^5+...................+80^29+80^30 czyli coś około
1253610166364942050530758479817700000000000000000000000000 kombinacji.
(to liczba kombinacji od 19 znaków do 30 bo dalej nie chciało mi sie liczyć)
Zakładając że chce np. złamać hasło do serwera poczty to musiałby z każdą kombinacją wykonać logowanie via net. Załóżmy że czas dopowiedzi serwera wynosi ok 1 sek. (zależy jakie ma kto łącze).
Jeżeli ktoś na kogo pocztę chcesz się włamać ma hasło w postaci 30 dowolnych znaków to wynik działania programu zobaczysz po czwartym BIG-BANGU (takie CUŚ co zrobiło wszechświat)
Jeśli hasło będzie miało tylko 6 znaków to włam na pocztę uda Ci się po około 8312 latach. Może troszkę szybciej jeśli masz łącze 50Mbit lub lepsze.
PS Jak patrzę na te liczby to mi się coś wydaje że się kopnęłem w obliczniach :D
Jeżeli ktoś na kogo pocztę chcesz się włamać ma hasło w postaci 30 dowolnych znaków to wynik działania programu zobaczysz po czwartym BIG-BANGU (takie CUŚ co zrobiło wszechświat)
Jeśli hasło będzie miało tylko 6 znaków to włam na pocztę uda Ci się po około 8312 latach. Może troszkę szybciej jeśli masz łącze 50Mbit lub lepsze.

[...]
dlatego najlepiej operować bezpośrednio na maszynie, na której się łamie hasła - i do tego wyłączyć wszystkie zbędne procesy - żeby jak najwięcej kaloryferków w stylu RAMu i CPU można było użyć ^^
albo wykorzystywać superkomputery ^^
Jak sie nie znasz w rzeczonej materii to proponuje sie nie udzielac

www.johans24.webpark.pl/brutus.rar
Tu macie brutusa.
Ustawić
Target: ip serwera poczty
type: pop3
zaznaczyć single user
userid: login do poczty
pass mode : bruteforce
range: fullkeyspace
max length: 16
i start ;)
na dole okna pisze za ile (około) skończy. Lepiej tam nie zaglądać :D
Aha. prog wykrywany przez antywira jako trojan Win32.Trojan-gen {Delphi}
edit/
A najbardziej w tym programie podoba mi się komunikat:
The attack you have ordered is likely to take several billions years to execute.
Since MS Windows will cease working around the middle of the 21st century this seems futile.
Brutus has calculated thet you stand more chance by telephoning the target system owners/organisation and asking for a username/password :lol:
Użytkownik johans edytował ten post 12 sierpień 2005, 20:21
no reVis ma racje, jakby nie patrzec, mozliwosc sprawdzenia hasla znak po znaku stawialaby pod znakiem zapytania fakt uzywania hasel. co prawda mozna spotkac przypadki takiego czegos, ale sa one chyba nieliczne (ktorys windows chyba czegos takiego uzywal, ale nie jestem pewien). tak czy siak nie ma odpytywania znak po znaku :)
A skąd wy wiecie czy ja chcę się włamać na poczte na czyjeś konto w allegro czy może do komputera nato. Nie było mowy o żadnym włamywaniu. Programik chciałem napisac bo przydatny jest czasami.
A skąd wy wiecie czy ja chcę się włamać na poczte na czyjeś konto w allegro czy może do komputera nato. Nie było mowy o żadnym włamywaniu. Programik chciałem napisac bo przydatny jest czasami.

Taki mały przykład na hasełka od 1 do 5 literowego.
Wydajność i inne bobole pomijam milczeniem. ;)
To ma być tylko przykład.
procedure TForm1.Button1Click(Sender: TObject); var znak1, znak2, znak3, znak4, znak5: integer; z, kod: string; begin z:=' ABCDEFGHIJKLMNOPQRS'; // znaki dozwolone w haśle (koniecznie spacja na początku) // celowo dałem tylko tyle bo mam tylko Duron800 a chciałem wynik zobaczyć dziś znak1:=2; znak2:=1; znak3:=1; znak4:=1; znak5:=1; // ustawiając np i,j,k na 2 rozpocznie od 3 literowych itp. while znak5<length(z)+1 do begin kod:=trim(z[znak5]+z[znak4]+z[znak3]+z[znak2]+z[znak1] ); label1.Caption:=kod; // tu można dać np. dopisywanie do textfile, ale czy dysk to wytrzyma?;-) application.ProcessMessages; inc(znak1); if znak1>length(z) then begin inc(znak2); znak1:=2; end; if znak2>length(z) then begin inc(znak3); znak2:=2; end; if znak3>length(z) then begin inc(znak4); znak3:=2; end; if znak4>length(z) then begin inc(znak5); znak4:=2; end; end; end;
Aha. pętla leci , leci aż przeleci. :)
hehe a ja proponuje rozwiązanie rekurencyjne: nie będę pisał tu kodu bo nie mam delfina pod ręką ale napisze sposób.
Otóż najpierw wywołujemy prockę np. "haslo(ciag:ShortString); //shortstring - trzeba oszczędzać pamięć :D " czyli będzie w tym wypadku procka "haslo('a');" Nasza procka da ciąg "b" (czyli - zamieni ostatni znak z ciągu na następny na liście jak u mojego przedmówcy :D ), spróbuje złamać hasło tym ciągiem i wywołuje "haslo('b');"... kiedy będzie już "Z" (to dla uproszczenia, wiem że powinny być jeszcze cyfry, znaki specjalne itp. chodzi po prostu o to, że jak dotrze do ostatniego znaku) to zaczyna od nowa, tylko że od "aa". Kiedy dotrze już do "aZ" wtedy zaczyna od "ba", jak dotrze do "ZZ" to zaczyna od "aaa" itd. itp.
napiszcie czy coś takiego by przeszło bo mimo iż teoretykę mam wkutom :D na pamięć no to nie jestem doświadczonym programistą... a dokładniej: wiem że teoretycznie coś takiego jest dobre, ale nie wiem czy w praktyce czasem właśnie coś takiego nie będzie trwać... ho ho :D a pozatym mam dopiero 13 wiosen tak więc musze swój umysł troszeczkę jeszcze doszkolić :D :D :D
może dam kodzik jak cuś podobnego napiszę... :D
Użytkownik dos edytował ten post 14 sierpień 2005, 14:19
Co prawda wyslalem juz ten komponent do autora tematu, ale postanowilem umiecic go na stronie....
Zapraszam do dzialu downloads -> komponenty na mojej stronie. Znajduje sie tam komponent "Generator Haseł", ktory generuje kolejne hasla (zaczynajac od podanego) na podstwie podnych znakow.
chciałbym wrócić do przykładu johansa co trzeba zrobic aby zatrzymać te generowanie liter i żeby dało się je dalej kontynuować?
BUAHHAHAHAHAHAHAHAHA
troche mnie nie bylo na FKSE, wiec nie sledzilem tego tematu, w sumie bylem przekonany ( mialem nadzieje ? ) ze sobie autor topica po moim poscie odpuscil... jak zobaczylem ten topic na wierzchu i jego kontynuacje... niezle sie usmialem.
"30 zobaczą ( teoretycznie) dopiero twoje wnuki."
wnuki ? :-D nie bardzo :-P
"mmmmmm tez kiedys probowalem cos takiego napisac ale jakos zabraklo mi czasu i chenci. Ja mialem bardziej szalony pomysl - aby stworzyc wszystkie kombinacje [do dlugosci 255]."
n/c, patrz nizej
"Twierdzicie że to jest w przeciągu 150 lat nawet na najlepszych komputerach nie możliwe. A to zależy głównie od wydajności kodu."
gowno. to zalezy glownie a moze nawet wylacznie od zlozonosci algorytmu. na wydajnosci kodu dla takich danych mozesz zdobyc +- 1 rok. to jest nic.
"(supernowoczesny komputer z "Cyfrowej Twierdzy", który potrafił złamać hasło złożone z 64 znaków w 10 minut, zbudowany z 3 mln procesorów)"
a wiec nie uzywa typowego brute force'a. nie chce cie martwic ale haslo zlozone z 64 znakow... powiedzmy ze wydajnosc procesorow bedzie szybko rosnac i kazdy procesor bedzie mial 3k Ghz, i powiedzmy ze ten supernowoczesny komputer bedzie mial 30 miliardow takich procesorow... nadal NIE ZBLIZYLISMY sie nawet do magicznej granicy 1 miliona lat.
"Jeden to samo hasło odszyfrował w 2 godziny, a drugi odszyfrował w 10 minut. "
a moze zalezy po prostu od kolejnosci w jakiej te hasla leca ? roznica w optymalizacji tego samego algorytmu nie bedzie tak duza. po prostu dla tego hasla program 1 mial 2 godziny, program 2 mial 10 minut. dla innego hasla sytuacja moze sie zmienic.
"Umiem programować.. Wygenerowanie losowego ciągu znaków to nie problem.. Tylko żeby generowane były po kolei czyli aaa, aab, aac itd."
n/c
"Może jakby się zebrało paru programistów to można by było taki dobry i rozbudowany program zrobić... blink.gif"
nie mozna by bylo.
"Nie zartuj. Wygenerowanie 16 losowych znakow tak, zeby zaden sie nie powtarzal to mala pestka smile.gif Generujesz znak, sprawdzasz, czy juz taki byl, i jak nie byl to go umieszczasz na koncu ciagu. Zero problemow smile.gif"
juz widze ten "optymalny kod"
Ale jeżeli hasło jest krótkie np. 3 znaki to bardzo łatwo można je odgadnąć.
