Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Brute-Force Simulation
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Paul
aka ICC, HV-Freak


Anmeldungsdatum: 11.09.2004
Beiträge: 588
Wohnort: Uelzen

BeitragVerfasst am: 19.01.2005, 20:09    Titel: Brute-Force Simulation Antworten mit Zitat

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... durchgeknallt

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 lachen

PS: Gehört dieser Beitrag eigentlich in die Projektvorstellungen? peinlich
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
kennyrcc



Anmeldungsdatum: 18.01.2005
Beiträge: 47
Wohnort: Nürnberg

BeitragVerfasst am: 19.01.2005, 21:29    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Paul
aka ICC, HV-Freak


Anmeldungsdatum: 11.09.2004
Beiträge: 588
Wohnort: Uelzen

BeitragVerfasst am: 19.01.2005, 22:09    Titel: Antworten mit Zitat

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 lachen durchgeknallt
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
stef



Anmeldungsdatum: 13.01.2005
Beiträge: 102

BeitragVerfasst am: 19.01.2005, 22:23    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Paul
aka ICC, HV-Freak


Anmeldungsdatum: 11.09.2004
Beiträge: 588
Wohnort: Uelzen

BeitragVerfasst am: 19.01.2005, 22:32    Titel: Antworten mit Zitat

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.. lächeln
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Heizi



Anmeldungsdatum: 19.01.2005
Beiträge: 309

BeitragVerfasst am: 20.01.2005, 14:22    Titel: Hi Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Heizi



Anmeldungsdatum: 19.01.2005
Beiträge: 309

BeitragVerfasst am: 20.01.2005, 14:24    Titel: ich schon wieder Antworten mit Zitat

ach ja hab noch vergessen bereich erweitern um Leerzeichen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
stef



Anmeldungsdatum: 13.01.2005
Beiträge: 102

BeitragVerfasst am: 20.01.2005, 18:20    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 20.01.2005, 22:18    Titel: Antworten mit Zitat

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:
Code:
beere
bier
biber

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
Code:
be
ber
bi
er

generieren.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Eisbaer



Anmeldungsdatum: 16.10.2004
Beiträge: 354
Wohnort: Deutschland,Bayern

BeitragVerfasst am: 22.01.2005, 21:51    Titel: Re: Brutal-force Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Devilkevin
aka Kerstin


Anmeldungsdatum: 11.11.2004
Beiträge: 2532
Wohnort: nähe Mannheim

BeitragVerfasst am: 23.01.2005, 12:41    Titel: Antworten mit Zitat

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* Kopf schütteln 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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 23.01.2005, 12:48    Titel: Antworten mit Zitat

Na einfach den Text in eine leere TXT-Datei reinkopieren und diese als BAS umbenennen zwinkern

(oder ne leere BAS mit dem Editor öffnen) lächeln
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 23.01.2005, 19:11    Titel: Antworten mit Zitat

oder einfach im editor als bat speichern? Kopf schütteln
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 23.01.2005, 19:26    Titel: Antworten mit Zitat

und danach die bat in bas umbenennen.. grinsen zwinkern
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
code



Anmeldungsdatum: 19.01.2005
Beiträge: 154

BeitragVerfasst am: 24.01.2005, 19:01    Titel: Antworten mit Zitat

dann muss ja aber am schluss auch noch ein tastenanschlag simuliert werden. zwinkern
hab aber keine ahnung ob das in qb geht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Paul
aka ICC, HV-Freak


Anmeldungsdatum: 11.09.2004
Beiträge: 588
Wohnort: Uelzen

BeitragVerfasst am: 24.01.2005, 19:08    Titel: Antworten mit Zitat

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 grinsen
Bin grad an der Software dran

Wenns klappt, kommt es auf meine Website durchgeknallt
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
code



Anmeldungsdatum: 19.01.2005
Beiträge: 154

BeitragVerfasst am: 24.01.2005, 19:27    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Kai Bareis



Anmeldungsdatum: 10.09.2004
Beiträge: 545
Wohnort: Baden Würtemberg

BeitragVerfasst am: 24.01.2005, 19:30    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 24.01.2005, 19:32    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
code



Anmeldungsdatum: 19.01.2005
Beiträge: 154

BeitragVerfasst am: 24.01.2005, 19:34    Titel: Antworten mit Zitat

jo so was hab ich gemeint. also funktioniers nicht. danke das wollt ich nur wissen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz