mHOCHe
Anmeldungsdatum: 3. Februar 2011
Beiträge: Zähle...
|
Hallo liebe Forumsmitglieder!
Ich habe das Passwort für eine meiner rar-komprimierten Dateien verlegt. Nach einiger Zeit Suche im Netz nach einem entschlüsselungs-tool, habe ich den Entschluss gefasst ein eigenes Programm/Skript dafür zu schreiben (da ich dann die zu versuchenden Passwörter stark eingrenzen kann).
Ich würde dazu gerne ein shell-Skript schreiben (oder eignen sich andere Prog-Sprachen dazu besser? habe mittlere Java-Erfahrung und etwas C Erfahrung)
Nach dem ich mich etwas in die Skriptsprache eingelesen/eingearbeitet habe, hab ich mal so was geschrieben:
#!/bin/bash
# dateiname soll in der variablen $1 an den Aufruf angehängt sein...
# entpackungsort in $2
unrar e $1 $2
(soll ich lieber die dash-shell benutzen?) Jetzt weis ich jedoch nicht, wie ich die Passworteingabe per Skript realisieren kann. Kann ich das Passwort irgendwie dem unrar Befehl als Parameter anhängen? Also zusammenfassend 3 Fragen: 1. eignet sich shell-Skript überhaupt für diesen Zweck oder sollte ich auf eine andere Prog-Sprache umsteigen? 2. sollte ich lieber die dash shell benutzen (da ich gelesen habe, dass diese schneller ist)? 3. wie kann ich die Passworteingabe per Skript realisieren? Gruß,
mHOCHe
|
Snooga
Anmeldungsdatum: 17. Dezember 2009
Beiträge: 95
Wohnort: Saarland
|
Hi also ich bin nicht der bash skripter vor dem Herren da ich ebenfalls erst begonnen habe damit.. Komme eigentlich aus der C# Java Abap ecke...
Aber mit einem bash skript kannst du es machen.. Würd mir ein Array erzeugen in dem du die Passwörter eingibst wo du denkst das es sie sein könnten...
Dann mit einer schleife drüber laufen und als parameter den aktuellen Indexsatz an unrar übergeben.... woerter=("bla" "blu" "bli"); for((i=0;i<${#woerter};i++)); do unrar Parameter ${woerter[$i]};done um es mal Pseudomässig hinzuschreiben.. Vllt gibt es aber auch schnellere und elegantere Lösungen... Gruss
|
mHOCHe
(Themenstarter)
Anmeldungsdatum: 3. Februar 2011
Beiträge: 7
|
Hi Snooga, danke für deine schnelle Antwort.
Also es beruhigt mich erst mal, dass ich mit nem bash/dash-Skript nicht in die falsche Richtung laufe.
... Wenn ich jedoch eine liste fester länge von möglichen Passwörtern hätte, hätte ich sie ja auch schon so durchprobieren können. Mein Problem ist ja, dass ich das Passwort nich mehr genau kenne, es jedoch auf bestimmte Zeichen/Zahlen Kombinationen beschränken kann, bzw. einige Symbole (Sonderzeichen) ausschließen kann. Und benutze ich jetzt die dash oder die bash shell (ist mir nicht so ganz klar wo da der unterschied ist)? Und wie kann ich denn jetzt dem unrar Befehl ein Passwort mit übergeben? steht auf der Befehls-infoSeite nicht. Gruß,
mHOCHe
|
Snooga
Anmeldungsdatum: 17. Dezember 2009
Beiträge: 95
Wohnort: Saarland
|
Hi, unterschied bash/dash kann ich dir leider nichts dazu sagen, hab ich mich nicht eingelesen, da ich bash verwende.
Ein Passwort übergibst du mit dem Parameter -p : man unrar: -p<password> Set password.
Ansonsten könntest du beim Skript aufruf dir ein Array Erzeugen wo du aus den Vorhandenen Daten (keine Sonderzeichen bzw nur bestimmte) dir Suchstrings entwickeln lässt... Nur weis ich die Funktion leider nicht regex oder so aber möchte da nichts falsches sagen... Such einfach mal nach Muster bauen oder so ähnlich gerade etwas gefunden, er erzeugt sich so zufallspasswörter, vllt kannst du ja von der Logik etwas abkupfern... Bei den Zeichen setzt du dann halt deine Zeichen ein die du weist
#!/bin/bash
ZEICHENVORRAT='ABCDEabcde012345'
PASSWORTLAENGE=10
for ((i=1; i <= PASSWORTLAENGE ; i++))
do
echo -n ${ZEICHENVORRAT:$(($RANDOM%${#ZEICHENVORRAT})):1}
done
echo
|
mHOCHe
(Themenstarter)
Anmeldungsdatum: 3. Februar 2011
Beiträge: 7
|
Sehr gut, danke! Vllcht mache ich mir so eine Random Funktion, die die Passwörter zufällig generiert. Aber mal was anderes: Ich komm grad nicht mit Arrays klar.
Wenn ich ein Array so definiere
#!/bin/bash
array[1]='a'
erhalte ich von der Konsole:
test.sh: 3: array[1]=a: not found
und wenn ich ein array so definiere
#!/bin/bash
array=( 1 2 3 )
erhalte ich:
test.sh: 3: Syntax error: "(" unexpected
?????
Was mach ich falsch, bzw. wo hakt es??
|
frostschutz
Anmeldungsdatum: 18. November 2010
Beiträge: 7782
|
Na auweia, da kannste ein paar Wochen lang das Bash Script laufen lassen so... der Overhead (für jeden Versuch rar neu starten) ist extrem. Idealerweise bräuchtest du ein Programm in C das mit möglichst wenig Aufwand nur das Passwort testet und sonst nichts. Schau dir vielleicht mal crark an. Ansonsten lass dir das Passwort halt wieder einfallen. ☺
|
theinlein
Anmeldungsdatum: 29. Dezember 2007
Beiträge: 1279
|
Hi, vergiss Arrays in der Shell, eine unpraktische Sache, nachträglich mal drangestrickt. Die Zuweisung darf keine Leerzeichen an den Klammern enthalten, um den Wert auszulesen musst du mit der geschweiften Klammerung der Shell sagen, wofür das Dollar gut ist. arr=(a b c)
echo ${arr[1]}
liefert dann das 'b' Mit Listen ist das schöner zu verarbeiten liste="a b c d e f"
for element in $liste
do
echo "element=$element"
done Wenn du einen Vorrat an Daten einlesen/verarbeiten willst, schreib sie dir in eine Datei und lies die Zeilen einzeln ein: while read line
do
echo "das ist eine gelsene Zeile: $line"
done < dieDateiWoDasZeugZeilenweiseDrinsteht.txt
|
theinlein
Anmeldungsdatum: 29. Dezember 2007
Beiträge: 1279
|
... ach ja - stimmt, da hat frostschutz gar nicht unrecht
|
mHOCHe
(Themenstarter)
Anmeldungsdatum: 3. Februar 2011
Beiträge: 7
|
Danke erstmal für eure Antworten.
Was ich jetzt immer noch nicht kenne, ist der Unterschied zwischen Dash und Bash und ob das wirklich so große
performance Unterschiede sind zwischen beiden shells... @frostschutz: hi, ja kann mir schon denken, dass das ziemlich rechenaufwändig wird... Schreib aber trotzdem ein bischen am Skript weiter, kann ja meinen shell-skills nicht schaden 😉 Falls ich mal fertig werde mit dem Skript stell ichs mal vor... @theinlein:
ah, ok also keine arrays 😉 Na gut dann versuch ichs mit Listen...
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
mHOCHe schrieb: Was ich jetzt immer noch nicht kenne, ist der Unterschied zwischen Dash und Bash und ob das wirklich so große
performance Unterschiede sind zwischen beiden shells...
Von der Sache her empfiehlt sich für diese Frage die Lektüre von man bash und man dash - das sind die Originaltexte. Oder Du liest es in Greg's Wiki nach, da steht es hübsch in einer Liste. Wie groß der Performance-Unterschied ist kann ich Dir nicht verbindlich sagen. Aber ich schätze, Dein Programmierstil hat mehr Einfluss auf die Geschwindigkeit als die Wahl der Shell. Im Zweifel muss Du es einfach mal konkret mit Deinem Skript testen. LG, track
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17604
Wohnort: Berlin
|
mHOCHe schrieb: Was ich jetzt immer noch nicht kenne, ist der Unterschied zwischen Dash und Bash und ob das wirklich so große performance Unterschiede sind zwischen beiden shells...
Wenn Du nur ein paar Tausend Paßwörter testen willst spielt es wohl kaum eine Rolle. Für eine Bruteforceattacke dagegen wäre, wie schon frostschutz schrieb, beides ungeeignet. Wieviele Paßwörter willst Du denn testen?
|
mHOCHe
(Themenstarter)
Anmeldungsdatum: 3. Februar 2011
Beiträge: 7
|
user unknown schrieb: Wieviele Paßwörter willst Du denn testen?
keine Ahnung wieviele genau, ich denke ich werde eine liste der Form:
list="xx xy yx xz zx ..."
durchgehen, wobei xx, xy,.... für oft von mir verwendete Passwortelemente stehen (also z.B. Geburtsjahr, Anfangsbuchstaben,etc.). Die Elemente der Liste werde ich dann beliebig permutieren/zusammenfügen und den jeweils erhaltenen String testen
...
|