zip-Archiv Passwort verloren

Hallo Leute!

Ich habe ein Passwortgeschütztes Zip-Archiv von dem ich natürlich das Passwort verloren habe.

Ich habe schon mit einem selbstangelegten Wörterbuch (nur ca. 30 Worte - ich weiß ja eigentlich ungefähr, wie das PW aussieht) einen Wörterbuchangriff gemacht, aber leider werden nur die Wörter an sich als PW probiert - ich dachte, das Programm kombiniert die Wörter auch miteinander.

Nun habe ich aber eine unverschlüsselte Datei gefunden, die in dem Archiv ebenfalls enthalten ist. Da müsste doch ein Klartext funktionieren oder?
Habe das auch schon probiert, aber das Programm sagt:

"Keine passenden Dateien in den ausgewählten Archiven. Wenn Sie den Klartextangriff nur mit einem Teil der Datei durchführen wollen, ändern Sie die Archive bitte so, dass jedes nur eine Datei enthält."

Weiß nicht, was es von mir will... In dem Klartextarchiv ist ja nur diese eine Datei, die auch in dem Anderen ist.

Ich hoffe, jemand von euch kann mir helfen.

Und das Archiv ist auch wirklich von mir! Keine Angst ;)
Da sind Bilder drin, die ich mir gerne wieder mal ansehen möchte - Erinnerungen.
 
naja: ich weiß, welche Wörter ich verwendet haben könnte... hab ein txt-file angelegt und in dem sind 28 Wörter... also wahrscheinlich zu viele.

Wie bekomme ich raus, mit welcher Version von Win-RAR ich das Archiv gepackt habe und mit welcher Kompression. Das verschlüsselte Archiv hat 99% Kompression. Mit meiner jetztigen RAR-Version bekomme ich nur 97% oder 100%...

Für den Plaintextangriff brauche ich doch nur eine einzige Datei aus dem Archiv und muss die dann mit der selben Version in die mit der selben Methode in die selbe Kompression bringen oder nicht?
 
Code:
[color=#008800][i]#! /usr/bin/env python[/i][/color]
[color=#008800][i]# -*- coding: utf-8 -*-[/i][/color]
[color=#AA22FF][b]import[/b][/color] [color=#0000FF][b]sys[/b][/color]
[color=#AA22FF][b]from[/b][/color] [color=#0000FF][b]itertools[/b][/color] [color=#AA22FF][b]import[/b][/color] product

[color=#AA22FF][b]def[/b][/color] [color=#00A000]main[/color]():
    [color=#AA22FF][b]try[/b][/color]:
        [color=#AA22FF][b]with[/b][/color] [color=#AA22FF]open[/color](sys[color=#666666].[/color]argv[[color=#666666]1[/color]],[color=#BB4444]'rb'[/color]) [color=#AA22FF][b]as[/b][/color] in_file:
            words_raw [color=#666666]=[/color] in_file[color=#666666].[/color]read()[color=#666666].[/color]replace([color=#BB4444]'[/color][color=#BB6622][b]\r\n[/b][/color][color=#BB4444]'[/color],[color=#BB4444]'[/color][color=#BB6622][b]\n[/b][/color][color=#BB4444]'[/color])

        wordlist [color=#666666]=[/color] words_raw[color=#666666].[/color]split([color=#BB4444]'[/color][color=#BB6622][b]\n[/b][/color][color=#BB4444]'[/color])
        num_of_words [color=#666666]=[/color] [color=#AA22FF]int[/color](sys[color=#666666].[/color]argv[[color=#666666]3[/color]])
        
        [color=#008800][i]#################[/i][/color]
        num_of_combos [color=#666666]=[/color] [color=#AA22FF]len[/color](wordlist)[color=#666666]**[/color]num_of_words
        mem_req [color=#666666]=[/color] (num_of_combos [color=#666666]*[/color] num_of_words [color=#666666]*[/color]
                   [color=#AA22FF]len[/color](words_raw) [color=#666666]/[/color] [color=#AA22FF]float[/color]([color=#AA22FF]len[/color](wordlist)))
        [color=#AA22FF][b]print[/b][/color]([color=#BB4444]"Es werden [/color][color=#BB6688][b]%d[/b][/color][color=#BB4444] Woerter generiert"[/color] [color=#666666]%[/color] num_of_combos)
        [color=#AA22FF][b]print[/b][/color]([color=#BB4444]"Ca. [/color][color=#BB6688][b]%0.2f[/b][/color][color=#BB4444]MB Speicher benoetigt[/color][color=#BB6622][b]\n[/b][/color][color=#BB4444]"[/color] [color=#666666]%[/color] (mem_req [color=#666666]/[/color] [color=#666666]1024[/color] [color=#666666]/[/color] [color=#666666]1024[/color]))
        [color=#008800][i]#################[/i][/color]
        combos [color=#666666]=[/color] ([color=#BB4444]""[/color][color=#666666].[/color]join(e)[color=#666666]+[/color][color=#BB4444]'[/color][color=#BB6622][b]\n[/b][/color][color=#BB4444]'[/color]
                  [color=#AA22FF][b]for[/b][/color] e [color=#AA22FF][b]in[/b][/color] product(wordlist, repeat [color=#666666]=[/color] num_of_words))
        
        [color=#AA22FF][b]with[/b][/color] [color=#AA22FF]open[/color](sys[color=#666666].[/color]argv[[color=#666666]2[/color]],[color=#BB4444]'wb'[/color]) [color=#AA22FF][b]as[/b][/color] out_file:
            [color=#AA22FF][b]for[/b][/color] combo [color=#AA22FF][b]in[/b][/color] combos:
                out_file[color=#666666].[/color]write(combo)
                
    [color=#AA22FF][b]except[/b][/color] ([color=#D2413A][b]IndexError[/b][/color], [color=#D2413A][b]ValueError[/b][/color]):
        sys[color=#666666].[/color]stderr[color=#666666].[/color]write([color=#BB4444]"Benutzung:[/color][color=#BB6622][b]\n[/b][/color][color=#BB4444]python wordcombo.py <wortlist_datei> "[/color]
                         [color=#BB4444]"<ausgabe_datei> <anzahl_der_woerter>"[/color])

main()
Generiert aus der vorgegebenen Liste alle möglichen Kombinationen mit Anzahl der Wörter = Angabe
benötigt: Python 2.7
Nutzung:
in der Konsole eingeben:
Code:
python wordcombo.py meine_wortliste.txt ausgabeliste.txt anzahl_der_woerter
Bsp:
Code:
python wordcombo.py test_in.txt wordlist.txt 3
für test_in.txt =
Code:
eins
zwei
hello world
irgendwas
Ausgabe:
Code:
einseinseins
einseinszwei
einseinshello world
einseinsirgendwas
einszweieins
einszweizwei
einszweihello world
einszweiirgendwas
einshello worldeins
einshello worldzwei
einshello worldhello world
einshello worldirgendwas
einsirgendwaseins
einsirgendwaszwei
einsirgendwashello world
einsirgendwasirgendwas
zweieinseins
zweieinszwei
zweieinshello world
zweieinsirgendwas
zweizweieins
zweizweizwei
zweizweihello world
zweizweiirgendwas
zweihello worldeins
zweihello worldzwei
zweihello worldhello world
zweihello worldirgendwas
zweiirgendwaseins
zweiirgendwaszwei
zweiirgendwashello world
zweiirgendwasirgendwas
hello worldeinseins
hello worldeinszwei
hello worldeinshello world
hello worldeinsirgendwas
hello worldzweieins
hello worldzweizwei
hello worldzweihello world
hello worldzweiirgendwas
hello worldhello worldeins
hello worldhello worldzwei
hello worldhello worldhello world
hello worldhello worldirgendwas
hello worldirgendwaseins
hello worldirgendwaszwei
hello worldirgendwashello world
hello worldirgendwasirgendwas
irgendwaseinseins
irgendwaseinszwei
irgendwaseinshello world
irgendwaseinsirgendwas
irgendwaszweieins
irgendwaszweizwei
irgendwaszweihello world
irgendwaszweiirgendwas
irgendwashello worldeins
irgendwashello worldzwei
irgendwashello worldhello world
irgendwashello worldirgendwas
irgendwasirgendwaseins
irgendwasirgendwaszwei
irgendwasirgendwashello world
irgendwasirgendwasirgendwas

PS: wenn es insgesamt ca. 30 Wörter sind, ergibt es 30 hoch (Wörteranzahl im Passwort).
Also für "3-Wort-Passwörter" 30^3=27 000, für 4 Wörter 810 000 und für 5 Wörter 24 300 000
Bei mehr als 6 Wörterkombinationen wird man also sehr lange brauchen.

Für den Plaintextangriff brauche ich doch nur eine einzige Datei aus dem Archiv und muss die dann mit der selben Version in die mit der selben Methode in die selbe Kompression bringen oder nicht?
Nein. Ich weiß nicht, was im verwendeten Bruteforcer mit "Klartextangriff" genau gemeint ist, aber falls die Verschlüsselung halbwegs aktuell ist (also AES und nicht irgendwas propiertäres, wie in alten Versionen vor 3.0 - also gut einer Dekade ;) ), funktioniert das nicht wirklich, da AES nicht für Klartextangriffe anfällig ist. Ggf ist die Entschlüsselung schneller, Bruteforce bleibt aber auch hier die einzige Option ;)
 
Danke für das Script! Aber wenn allein das generieren der Liste jetzt schon fast 20 min braucht und noch nicht fertig ist, dann mach ich mir keine großen Hoffnungen, dass das Finden der richtigen Kombi schnell geht ;)
 
Zuletzt bearbeitet:
jetzt schon fast 20 min braucht
Hm, wie viele Wörter hast Du angegeben? Das Script gibt ja auch aus, wie viele Wörter es sein werden sowie geschätzten Speicherbedarf (=> notfalls also mittels STRG+C[0] einfach abbrechen)

Ich hab' vor dem Posten testweise ca 1 Mio Wörter generiert und es lief innerhalb von Sekunden ab (wobei bei mir die 1.8'' Festplatte mit ca 25MB/s Schreibgeschwindigkeit eher der Flaschenhals ist ;) )

Anfangen würde ich eher mit 3 bzw 4 (das sollte unter 1 Mio Passwörter bleiben)).
Zudem kann man dann sehen, wie schnell das BF-Programm arbeitet (dürfte sich aber zwischen paar hundert und einigen tausend Versuchen pro Sekunde liegen, falls tatsächlich AES verwendet wurde. Die ganzen "ultimative Mrd/s cracker" Werbersprüche beziehen sich allesamt auf das mittlerweile uralte Verfahren :rolleyes: )

Dann kann man grob abschätzen, wie lange es bei mehr als 4-5 Wörtern pro Zeile dauert (wie erwähnt: Gesamtanzahl der Wörter hoch Wortanzahl pro "Passwordzeile" = Anzahl der Kombinationen. Das dann geteilt durch ). Ansonsten muss man bissle mehr reduzieren (z.B aufteilen zwischen Wörtern, die garantiert nur 1 mal vorkommen und dem "Rest", oder Zusammenfassen der Passwörter, die garantiert nur am Anfang bzw. am Ende auftauchen).

[0] STRG+C (aka STRG bzw Ctrl Taste und 'C') unterbricht die meisten Konsolenanwendungen, nicht nur diese ;)
 
Also es hat ca. eine dreiviertel Stunde gebraucht. Die Textdatei ist 152 GB groß :O
Ich habe 8 Wörter genommen^^

Und anscheinend kann man die Datei leider nicht mehr öffnen... weder mit dem normalen Editor, noch mit PsPad und auch nicht mit Word.

Und mit 7 Worten pro Kombi sind es immernoch 20 GB (und die brauche ich mindestens)
 
Zuletzt bearbeitet:
Nur als Hinweis: bei Angabe von 8 werden keine anderen Längen generiert ;)
Zum Öffnen:
Konsole:
Code:
more dateiname
oder
more +10000 dateiname
+Zahl => Ab welcher Zeile man es sehen möchte.
Der alte Konsoleneditor "edit" konnte imho auch mit "riesigen" Dateien umgehen (ist aber bei Win7 nicht mehr dabei).
Sonst Hexeditor (Tiny Hexer) nutzen - diese machen auch oft mit.
 
Zurück
Oben