Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 19.01.2005, 20:09 Titel: Brute-Force Simulation |
|
|
Moin !
Vielleicht kennt der eine oder andere unter euch den Brute-Force Algorithmus. Hacker benutzen ihn, um Passwörter zu knacken. Dabei werden einfach sämtliche möglichen Kombinationen von Buchstaben und Zahlen ausprobiert.
Aus Langeweile hab ich neulich mal so eine Programm-Simulation geschrieben, ihr könnt es unten begutachten.
Meine Frage: gibt es eine einfachere Möglichkeit, als die Buchstaben so umständlich ausztutauschen wie ich es mache, oder arbeiten die echten Brute Force Progs auch genauso ? Weil über den tatsächlichen Algorithmus hab ich Netz nicht sonderlich Viel (=nichts) gefunden...
Code: |
'----------------------------------------------------------------------------
PW$ = "paule" 'Das Passwort, welches geknackt werden soll
Bereich$ = "abcdefghijklmopqrstuvwxyz" 'Enth„lt alle Zeichen, die im Passwort
'vorkommen k”nnten.
'----------------------------------------------------------------------------
'Testwerte auf P4 mit 2.82GHz:
'
'Passwort Ben”tigte Zeit in sec.
'------------------------------------
' a 0.00
' m 0.00
' z 0.00
' aa 0.00
' mm 0.00
' zz 0.00
' aaa 0.00
' mmm 0.10
' zzz 0.10
' aaaa 0.00
' mmmm 2.08
' zzzz 4.17
' aaaaa 0.00
' mmmmm 61.73
' zzzzz 123.30
'
'Wir erkennen: Schon ein einizger Buchstabe mehr im Passwort kann einen
' riesigen Zeitunterschied hervorrufen. Auáerdem spielt es
' bei dem Zeitaufwand auch noch eine Rolle, wie weit der
' letzte Buchstabe des Passwortes in der Bereichsvariable
' steht. Je weiter hinten, desto l„nger dauert es.
'
PWL = LEN(PW$) 'L„nge des Passwortes
BRL = LEN(Bereich$) 'L„nge der Bereichsvariable
MGL = BRL ^ PWL 'Anzahl der max. Kombinationsm”glichkeiten
CLS
PRINT "ICC BruteForce Simulation"
PRINT
PRINT "Passwortl„nge...........................:"; PWL; "Buchstaben"
PRINT "Anzahl der m”glichen Durchl„ufe.........:"; MGL
PRINT
PRINT "CRACKING..."
PRINT
DIM Ch(1 TO PWL) AS STRING * 1, p(1 TO PWL)
FOR Init = 1 TO PWL
Ch(Init) = LEFT$(Bereich$, 1)
p(Init) = 1
NEXT Init
Startzeit = TIMER
DO
' Hier wird ?berpr?ft, welcher der n„chsten Buchstaben hochgez„hlt werden muss
FOR a = 1 TO PWL - 1
IF p(a) > BRL THEN
Ch(a) = LEFT$(Bereich$, 1)
p(a) = 1
p(a + 1) = p(a + 1) + 1
Ch(a + 1) = MID$(Bereich$, p(a + 1), 1)
EXIT FOR
END IF
NEXT a
Ch(1) = MID$(Bereich$, p(1), 1)
p(1) = p(1) + 1
CR$ = ""
FOR Create = 1 TO PWL 'Die Buchstaben zum Test-Passwort zusammenf?gen
CR$ = CR$ + Ch(Create)
NEXT Create
PROB = PROB + 1 'Den durchlaufz„hler erh”hen
IF PROB MOD 10000 = 0 THEN LOCATE 6, 20: PRINT "Druchlauf"; PROB
IF CR$ = PW$ THEN EXIT DO 'Wenn er das Passwort geknackt hat: Raus hier !
IF PROB = MGL THEN GOTO OutOfRange 'FEHLER !!
LOOP
' Ergebnis verk?nden !
PRINT
PRINT CR$; "="; PW$
PRINT "Das Passwort wurde in"; TIMER - Startzeit; "Sekunden geknackt !"
PRINT "Dazu wurden"; PROB; "Durchl„ufe ben”tigt !"
END
OutOfRange:
' Das kommt immer dann, wenn das Passwort Zeichen enth„lt,
' welche nicht in Bereich$ stehen.
PRINT
PRINT "FEHLER: Auáerhalb des Zeichenbereiches ! Zeichenbereichsvariable ?berpr?fen !"
PRINT "Das Passwort konnte nicht geknackt werden !"
END
|
Vielleicht kennt sich ja jemand von euch mit Hacken aus
PS: Gehört dieser Beitrag eigentlich in die Projektvorstellungen?  _________________
 |
|
Nach oben |
|
 |
kennyrcc

Anmeldungsdatum: 18.01.2005 Beiträge: 47 Wohnort: Nürnberg
|
Verfasst am: 19.01.2005, 21:29 Titel: |
|
|
normalerweise arbeiten brutforce knacker mit einer passwortliste die vom user eingespeist wird. glück für dich, denn dann must nicht du dir die umstände machen sondern der user. die kunst liegt dann allerding darin das brutforce tool möglichst kompatibel zu verschiedenen anwendungen oder websites zu machen (java, flash usw...) |
|
Nach oben |
|
 |
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 19.01.2005, 22:09 Titel: |
|
|
Du meinst die Wordlist-Methode. Aber es geht ja grad um die Klassische Methode mit den Buchstabenkombinationen.
Stell dir vor, ein Passwort lautet WFC34L2...das steht garantiert in keiner Wordlist  _________________
 |
|
Nach oben |
|
 |
stef
Anmeldungsdatum: 13.01.2005 Beiträge: 102
|
Verfasst am: 19.01.2005, 22:23 Titel: |
|
|
Ich hätte da schon mal was. Du erstellst jedesmal ein neues Testpaßwort:
Code: | FOR Create = 1 TO PWL 'Die Buchstaben zum Test-Passwort zusammenf?gen
CR$ = CR$ + Ch(Create)
NEXT Create |
Da String-Operationen bekanntlich länger dauern würde ich empfehlen den Code dahingehend zu verändern, daß nur die jeweils geänderten Buchstaben ersetzt werden:
MID$(CR$, a, 1) = ...
Ich denke das könnte das ganze noch beschleunigen. |
|
Nach oben |
|
 |
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 19.01.2005, 22:32 Titel: |
|
|
Ok, wäre auch eine Möglichkeit.
Später kann man dann alle Stringoperationen auch mit PEEK & POKE realisieren.
Ich dachte nur, dass es vielleicht noch einen besseren Algorithmus als den von mir verwendeten gibt..  _________________
 |
|
Nach oben |
|
 |
Heizi

Anmeldungsdatum: 19.01.2005 Beiträge: 309
|
Verfasst am: 20.01.2005, 14:22 Titel: Hi |
|
|
weiss nicht obs stimmt versuch mal so
for a = 1 to len(bereich)
for b= 1 to len(bereich)
for c = 1 to len (berich)
if pw$=rtrim(mid(bereich,a,1) +mid(bereich,b,1) +mid(bereich,c,1) )
next c
next b
next a
noch mehr Unterschleifen einfügen mit d,e,f...
trimmen des Strings mit rtrim damit Länge des Pw variabel bleibt |
|
Nach oben |
|
 |
Heizi

Anmeldungsdatum: 19.01.2005 Beiträge: 309
|
Verfasst am: 20.01.2005, 14:24 Titel: ich schon wieder |
|
|
ach ja hab noch vergessen bereich erweitern um Leerzeichen |
|
Nach oben |
|
 |
stef
Anmeldungsdatum: 13.01.2005 Beiträge: 102
|
Verfasst am: 20.01.2005, 18:20 Titel: |
|
|
Jetzt hatte ich eine super Idee wie man das ganze machen könnte. Die Idee war einfach mehrere ineinander geschachtelte For-Schleifen zu benutzen, so ähnlich wie bei dem Vorschlag von Heizi. Der große Unterschied ist, das ich das in einem rekursiven Aufruf einer Funktion mache. Das hat mehrere Vorteile:
- Das Wort wird nicht ständig neu aufgebaut, sondern immer nur das jeweilige Zeichen angehängt.
- Im Gegensatz zu einer festen FOR Schleife muß man das Programm nicht umschreiben, wenn die Paßwortlänge sich ändert.
Hier erst mal das Hauptprogramm:
Code: | DECLARE SUB testen (testPasswort1 AS STRING)
CONST pass = "zzzzz"
DIM SHARED laenge AS INTEGER
DIM SHARED bereich AS STRING
DIM SHARED BereichsGroesse AS INTEGER
DIM testPasswort AS STRING
DIM SHARED zeit AS SINGLE
laenge = LEN(pass)
bereich = "abcdefghijklmnopqrstuvwxyz"
BereichsGroesse = LEN(bereich)
zeit = TIMER
CLS
FOR i = 1 TO BereichsGroesse
testPasswort = MID$(bereich, i, 1)
LOCATE 1, 1
PRINT testPasswort
CALL testen(testPasswort)
NEXT i
PRINT "Ben”tigte Zeit:"; TIMER - zeit; "Sekunden" |
Auch wenn es eigenltich nicht nötig ist, habe ich auch im Hauptprogramm eine For-Schleife eingebaut, damit zwischendurch Ausgaben den Fortschrit des Programms anzeigen.
Und hier noch die dazugehörige Sub:
Code: | SUB testen (testPasswort1 AS STRING)
DIM i AS INTEGER
DIM testPasswort2 AS STRING
'Zeichen anh„ngen und rekursiver aufruf dieser Sub
IF LEN(testPasswort1) + 1 < laenge THEN
FOR i = 1 TO BereichsGroesse
testPasswort2 = testPasswort1 + MID$(bereich, i, 1)
CALL testen(testPasswort2)
NEXT i
'Zeichen anh„ngen und mit Passwort vergleichen
ELSE
FOR i = 1 TO BereichsGroesse
testPasswort2 = testPasswort1 + MID$(bereich, i, 1)
IF pass = testPasswort2 THEN
PRINT testPasswort2
PRINT "Ben”tigte Zeit:"; TIMER - zeit; "Sekunden"
END
END IF
NEXT i
END IF
END SUB |
|
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 20.01.2005, 22:18 Titel: |
|
|
Für die Interessierten: Ein bekanntes Hackertoll ist der "John the Ripper" - ich liess damit auch schon SAM-Datenbanken knacken. Dieses Tool ist Open Source, womit man im dortigen C-Quellcode nachschauen könnte, wie dort die effizienzsteigernde Verarbeitung gelöst wurde.
Ansonsten eine Idee von mir, die man mal ausprobieren kann. Rohmaterial ist ein Wörterbuch beispielsweise der deutschen Sprache, also ein langes .TXT mit sämtlichen deutschen Wörtern je Zeile drin.
Diese liest man normal mit OPEN und LINE INPUT# zeilenweise ein und extrahiert die Buchstabenpaare und zählt diese. Stark vereinfachte Variante mit einem Wörterbuch von nur 3 Wörtern:
Dies ergibt mal "be", "ee", "er", "re", "bi", "ie", "er", "bi", "ib", "be", "er"
Dies muss man sortieren und zählen.
=> 2x"be", 2x"bi", 1x"ee", 3x"er", 1x"ib", 1x"ie", 1x"re"
Nun lässt man die ganz seltenen Buchstabenpaare rausfallen. Meinetwegen soll in diesem Fall nur alles berücksichtigt werden, das doppelt und mehr vorkommt.
=> "be", "bi, "er"
Nun lässt man den Passwortgenerator so arbeiten, dass die Rekursion innerhalb der FOR i="a" to "z"-Schleife nur mit in dieser Liste existierenden Paaren arbeitet. In diesem Fall könnte man die Passwörter
generieren. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Eisbaer

Anmeldungsdatum: 16.10.2004 Beiträge: 354 Wohnort: Deutschland,Bayern
|
Verfasst am: 22.01.2005, 21:51 Titel: Re: Brutal-force |
|
|
Hi,
Ok die Idee ist an sicht nicht so schlecht.
Und was wäre wenn du sämtlichen Passwort Code gleich umgewandelt also als ASCII Code verarbeiten würdest.
Mal reine Zahlenspiele mit allen möglichen Kombinationen.
Beispiel :
Code: |
1 durchlauf 2 durchlauf 3 durchlauf
a aa ab
b ba bb
c ca cb
|
Irgendwann haste ja mal das Passwort geknackt.
weil die Buchsaben kombination ja immer länger wird.
Wie lange das Programm dann wohl für das Passwort braucht bei allen möglich kombination.
Sonderzeichen wären ja so auch möglich.[/code] _________________ Eigene Webseite:
http://www.eisbaer-studios.de |
|
Nach oben |
|
 |
Devilkevin aka Kerstin

Anmeldungsdatum: 11.11.2004 Beiträge: 2532 Wohnort: nähe Mannheim
|
Verfasst am: 23.01.2005, 12:41 Titel: |
|
|
Hi !
Kann mal jemand das Ding als BAS Datei auf nen Server zum download stellen ? Oder gitbs ne möglichekeit wie man das in QB rein kopiert ?
BTW : Die Werte sind ziemlich gut, ich hatte vor langer Zeit mal ein ähm *hust* Bruteforce Programm *grmbl* *hust* das brauchte für n Password mit 4 Zeichen (abcd) und einer (1) und einem Sonderzecihen(z.B. :!) _________________ www.piratenpartei.de
Zuletzt bearbeitet von Devilkevin am 23.01.2005, 12:49, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Mecki Igel

Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
|
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 23.01.2005, 19:11 Titel: |
|
|
oder einfach im editor als bat speichern?  _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Mecki Igel

Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
|
|
Nach oben |
|
 |
code
Anmeldungsdatum: 19.01.2005 Beiträge: 154
|
Verfasst am: 24.01.2005, 19:01 Titel: |
|
|
dann muss ja aber am schluss auch noch ein tastenanschlag simuliert werden.
hab aber keine ahnung ob das in qb geht. |
|
Nach oben |
|
 |
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 24.01.2005, 19:08 Titel: |
|
|
Kann man machen mit QB, nützt dir aber nicht viel: 1) QB ist vieel zu lahm für sowas, 2) kann man mit QB nicht direkt in Windowsprogramme schreiben.
Ich bin im Moment dabei, mithilfe eines Mikrocontrollers eine PC-Tastatur zu simulieren, welche dann Brute-Force-Passwörter in den PC einspeist
Bin grad an der Software dran
Wenns klappt, kommt es auf meine Website  _________________
 |
|
Nach oben |
|
 |
code
Anmeldungsdatum: 19.01.2005 Beiträge: 154
|
Verfasst am: 24.01.2005, 19:27 Titel: |
|
|
warum kann man nicht direkt in windows programme schreiben?
es wird doch ein tastenanschlag simuliert. also müsste der unter windows gelesen werden, und als signal der tastatur erkannt werden.
oder? |
|
Nach oben |
|
 |
Kai Bareis

Anmeldungsdatum: 10.09.2004 Beiträge: 545 Wohnort: Baden Würtemberg
|
Verfasst am: 24.01.2005, 19:30 Titel: |
|
|
will man vor dem eigentlichen Login von windows keine programme starten kann _________________ MfG Kai Bareis
Es ist noch kein Meister vom Himmel gefallen! Warum einfach wens auch umständlich geht! |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 24.01.2005, 19:32 Titel: |
|
|
Du meinst so was wie
OUT &H60, ASCII
?
(&H60 ist ja der Keyboard-Port)
Naja, so wirds wohl nicht gehen, aber in den Tastaturpuffer kann man auf jeden fall schreiben. Man muss halt dann auch den Pointer verschieben.
Naja, das lässt sich ja alles im SEG &H0040 machen *g*
Aber...
In VB gibts doch ne Methode, Tastatureingaben an andere Progs zu senden, oder? _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
code
Anmeldungsdatum: 19.01.2005 Beiträge: 154
|
Verfasst am: 24.01.2005, 19:34 Titel: |
|
|
jo so was hab ich gemeint. also funktioniers nicht. danke das wollt ich nur wissen. |
|
Nach oben |
|
 |
|