brute force key berechnung

hallo
ich bin neu in diesem forum
und hab eine frage ich hoffe ihr könnt sie mir beantworten.
wen ich brute force benutze und ein passwort nur mit Groß-Klein Buchstaben und Zahlen erraten will. Wie lange würde dies dauern wen ich einen 4x3300mhz prozessor haben würde und ich (geschätzt) 2 mio keys ausprobieren würde
wenn das passwort 6-10 zeichen lang wäre

LG rafa
 
Woran ausprobieren?

Darauf kommt es doch an, oder? Wie lange eben ein Versuch dauert. Und das kann von Fall zu Fall sehhhrr unterschiedlich sein.
Ob es nun ein Web-Login, ein Hash oder sonstwas ist.
 
Kommt auf den speziellen Web-Login und auf den speziellen Hash an, auf die Rechenleistung und die Internetanbindung, die Toleranz des Servers bzw. der Komplexität des Hash-Algorithmus. :rolleyes:
Ein simpler HTACCESS Login geht schneller als ein Login mit SQL Backend.
Und ein LM Hash lässt sich um Längen schneller bruten als SHA512 zum Beispiel.
Alles nicht konkret genug.
 
es gibt auf deine frage keine allgemeine antwort

es hängt wie bereits erwähnt vom einzelfall ab, und was als beispiel genannt wurde sind keine einzelfälle, da sie nicht konkret genug sind ...

warum ist das so?

nehmen wir eine typische smartcard als beispiel ... sagen wir es gibt eine 4 stellige numerische PIN ... 10000 möglichkeiten ... sollte sich schnell knacken lassen, oder? dumm nur, wenn nach X fehlversuchen die smartcard einen auf harakiri macht und sich selbst löscht ...

anderes beispiel, gleiches problem:

viele systeme (wie z.b. windows domänen) lassen sich so konfigurieren, dass sie nur X fehlversuche zulassen, und dich dann für x minuten nicht mehr rein lassen, egal ob das pw richtig ist, oder nicht


anderes beispiel, anderes problem ...

RAR archive ... um zu testen ob das passwort korrekt ist, musst du das komplette archiv entpacken ... erst danach gibt die prüfsumme darüber aufschluss ob das PW richtig war ... wie lange wird ein versuch wohl dauern, wenn das archiv ein paar GB groß ist ...


willst du dagegen hash-kollisionen suchen, z.b. für LM, md5, etc... dann sieht die sache schon anders aus ... aber es bleibt dennoch eine frage der implementierung der funktion, und den genauen umständen, bevor man performance auf eine zahl runterbrechen kann ...
 
wie ihr so viele dinge und so komplizierte dinge im kopf behalten könnt is mir ein rätsel ._.
versuchen sie bitte bei der nächsten antwort (wen sie so lieb wären) etwas auf anfänger niveau zu erklären ;)

okey sagen wir mal
konstante 4000 K/bits
4x3300 mhz /cpu & gtx 560 ti /gpu

über ein login fenster über eine internet verbindung bei der nicht sofort die ganze seite neugeladen wird
ich hoffe sie wissen was ich meine,denn wikipedia/google haben nicht grade gute ergebnisse für HTACCESS und SQL Backend ausgespuckt :D
 
es gibt auf deine frage keine allgemeine antwort

es hängt wie bereits erwähnt vom einzelfall ab, und was als beispiel genannt wurde sind keine einzelfälle, da sie nicht konkret genug sind ...

warum ist das so?

nehmen wir eine typische smartcard als beispiel ... sagen wir es gibt eine 4 stellige numerische PIN ... 10000 möglichkeiten ... sollte sich schnell knacken lassen, oder? dumm nur, wenn nach X fehlversuchen die smartcard einen auf harakiri macht und sich selbst löscht ...

anderes beispiel, gleiches problem:

viele systeme (wie z.b. windows domänen) lassen sich so konfigurieren, dass sie nur X fehlversuche zulassen, und dich dann für x minuten nicht mehr rein lassen, egal ob das pw richtig ist, oder nicht


anderes beispiel, anderes problem ...

RAR archive ... um zu testen ob das passwort korrekt ist, musst du das komplette archiv entpacken ... erst danach gibt die prüfsumme darüber aufschluss ob das PW richtig war ... wie lange wird ein versuch wohl dauern, wenn das archiv ein paar GB groß ist ...


willst du dagegen hash-kollisionen suchen, z.b. für LM, md5, etc... dann sieht die sache schon anders aus ... aber es bleibt dennoch eine frage der implementierung der funktion, und den genauen umständen, bevor man performance auf eine zahl runterbrechen kann ...


ich weiß was sie meinen aber wen so etwas nicht passiert dass wen man zu viele falsche passwörter eingibt sofort das jeweilige ,,produkt´´ geblockt wird
sondern man unendlich viele versuche hat den schlüssel zu erraten?
 
Der wichtige Schlüsselsatz in der Antwort von GrafZahl sollte auf Anfängerniveau eigentlich sein:

aber es bleibt dennoch eine frage der implementierung der funktion, und den genauen umständen, bevor man performance auf eine zahl runterbrechen kann

Vor allem die Frage der Implementierung des Bruteforce spielt eine nicht unerhebliche Rolle. Für jede Netzwerk/Internet-Verbindung wird ein sogenannter Socket benötigt. Nun kann man einen solchen Socket offen lassen und jedes Mal wiederverwenden oder jedes Mal einen neuen erstellen. Allein dadurch wird unterschiedlich viel Rechenzeit verbraucht. Dann müssen Daten gesendet und empfangen werden. Auch das wiederum kann unterschiedlich implementiert sein. Man kann das auf einer Raw-Ebene machen und mit ganz einfachen Funktionen arbeiten, oder man kann grosse Programmbibliotheken laden, die zwar das Programmieren vereinfachen, oft aber mehr Rechenleistung brauchen. Manche sind aber so effizient implementiert, dass sie im Vergleich zu Anfänger-Code wesentlich schneller sind. Dann müssen ja auch noch die Passwörter aus einer Datei geladen werden. Auch dafür gibt es verschiedene Möglichkeiten. Entweder man hat Unmengen RAM zur Verfügung, so dass man alle Passwörter in den RAM laden kann, oder man liest sie einzeln direkt aus der Datei, wenn man sie braucht. Doch um eine Datei zu lesen, muss ein Dateidescriptor geöffnet werden. Auch hier ist es, wie bei einem Socket, möglich den Descriptor offen zu lassen und ihn immer wieder zu verwenden oder man öffnet die Datei jedes Mal neu. All das verbraucht unterschiedlich viel Rechenzeit.

Kurzum: Solange man den Bruteforce-Algorithmus, die Antwortzeiten des Servers und die Dauer der Datenübertragung nicht kennt, kann niemand sagen wie lange der Bruteforce brauchen wird.
 
okey und gibt es ein brute force bei dem man eine eigene wortlist erstellen kann und das schneller arbeitet als das wir bekannte Brutus A2.

oder kann man sich ein eigenes brute force zusammen stellen wortlist,tastenkombi etc.?
 
okey und gibt es ein brute force bei dem man eine eigene wortlist erstellen kann und das schneller arbeitet als das wir bekannte Brutus A2.

oder kann man sich ein eigenes brute force zusammen stellen wortlist,tastenkombi etc.?

dir scheint so ziemlich jegwedes hintergrundwissen zu fehlen...

brute force ist kein programm ... es ist viel mehr ein allgemeiner ansatz der besagt: "probiere jeden möglichen schlüssel aus, bis du den richtigen gefunden hast". auch bekannt als "erschöpfende schlüssel(raum) suche"


definitions bedingt gilt dieser ansastz für jede art von schlüssel: egal ob passwort oder binär-wert, oder sonstiges...

betrachten wir mal nur den passwort fall ...

sagen wir mal du hast ein passwort "dollespasswort"

sagen wir ferner, dieses passwort liegt lokal als hash ("17a40463f74aea1a8e97330152705c2d") vor, und die hashfunktion (md5) sei bekannt

nun soll dieser hash "gebrochen" werden...

wir wissen: den hash eines passworts zu erzeugen ist leicht ... md5("dollespasswort")=17a40463f74aea1a8e97330152705c2d

aber die umkehrung ist nicht bekannt ... reverseMd5("17a40463f74aea1a8e97330152705c2d")="dollespasswort"

würde es die funktion reverseMd5(...) geben, hätte man kein problem das passwort zu berechnen ... grundlegende eigenschaft von hash funktionen ist es allerdings das sie mathematisch gesehen einbahnstraßen sind ... die reverse (oder auch inverse) funktion gibt es nicht... das liegt unteranderem daran, dass die meisten hashfunktionen eine feste länge des hashwertes haben ... egal wie viel text du auf der einen seite rein stopfst, das ergebnis hat immer die gleiche länge ... im fall von md5 32 byte ... denken wir den gedanken mal weiter ... wenn es nur endlich viele 32 byte werte gibt, aber es möglich ist dinge zu hashen die länger sind als 32 byte, dann muss md5 mehr als einen eingabe wert auf den gleichen hashwert abbilden ... da es unendlich viele mögliche eingabewerte gibt, aber nur endlich viele ausgabe werte, muss md5 sogar unendlich viele eingaben auf die gleiche ausgabe abbilden ... wenn man also 2 eingaben kennt, die zum gleichen hashwert führen, nennt man dies kollision

sagen wir mal das passwort gehört zu irgend einer applikation bei der du dich anmelden musst, und die ggf nicht mal auf deinem rechner, sondern irgendwo läuft ...

kann man sich ohne das passwort wirklich nicht anmelden?

der server prüft bei der anmeldung ob das was du eingegeben hast, beim hashen den gespeicherten wert ergibt.

da wir aber wissen, dass undendlich viele eingaben auf den gespeicherten hashwert führen, reicht es, wenn wir irgend einen dieser werte kennen ...

wir suchen also gar nicht das ursprüngliche passwort, sondern nur eine beliebige kollision mit dem bekannten hashwert ... das kann das passwort sein, oder aber auch etwas völlig anderes ... präziser ausgedrückt, wird folgendes gesucht:

eine beliebige kollision, die von der verfügbaren eingabemöglichkeit abgedeckt wird (beliebige kollisionen aleine könnten dinge beinhalten die dem system nicht möglich sind ... die eingabe muss evtl alphanumerisch sein, so dass binärdaten, die zwar eine kollision darstellen, aber leider nicht durch die eingabeprüfung kämen, nutzlos wären... wir suchen aber eine nutzbare kollision)

hat man diese überlegungen dann abgeschlossen, geht es daran eine entsprechende suche durchzuführen ...

als nächstes sollte man sich den zu durchsuchenden schlüsselraum (gesammtheit aller möglichen eingaben) definieren ...

wenn man eine vorstellung von besagtem schlüsselraum hat, gilt es danach aus performance gründen die verfügbaren ausführungseinheiten zu benennen ... das können kerne einer CPU sein ... GPUs ... oder eine annsammlung von diesen, evtl verteilt über ein rechnernetz, etc ...

jede einzelne einheit kann einen teil des schlüsselraums durchsuchen ... es gilt nun eine partitionierung des schlüsselraums zu finden (den schlüsselraum entsprechend der leistungsfähigkeit der einzelnen einheiten so aufzuteilen, dass alle einheiten optimal eingesetzt werden)

dann brauchst du eine implementierung der besagten hashfunktion in einer form, die jeweils auf die zugrundeliegende ausführungseinheit zugeschnitten ist (eine GPU hat einen anderen befehlssatz als eine CPU, dementsprechend kann man die funktion anders optimieren)

um die eigentliche funktion herum fehlt dann noch ein konstrukt dass den jeweiligen teil des schlüsselraums, schlüsselkandidat für schlüsselkandidat an die funktion übergibt und das ergebnis mit der vorgabe vergleicht. im falle einer übereinstimmung kann die weitere verarbeitung abgebrochen werden und der aktuelle schlüsselkandidat der einheit sollte als gefundene kollision gemeldet werden ...

das wäre der eigentliche funktionelle teil ... die infrastrukturmaßnahmen, um das ganze zu organisieren würden an dieser stelle den rahmen sprengen ...


das wäre so in etwa der grobe abriss ...
 
2 MOH und ein Mod erklären jemandem alles ganz genau, obwohl derjenige nicht mal einen Funken Eigeninitiative mitbringt?! Ich bin ganz ehrlich sprachlos.

Natürlich im positiven Sinne.
 
2 MOH und ein Mod erklären jemandem alles ganz genau, obwohl derjenige nicht mal einen Funken Eigeninitiative mitbringt?! Ich bin ganz ehrlich sprachlos.

Natürlich im positiven Sinne.


ob das ganze rafael helfen wird, wage ich zu bezweifeln, aber wenn nicht ihm, dann evtl jemand anderem der sich näher damit befassen will ... aber evtl werden wir auch alle von rafael überrascht ... :rolleyes:
 
Zurück
Oben