# Encrypted (passwort) Rar Datei entpacken



## Christopher25 (24. Jan 2016)

Hallo Zusammen.

Ich habe nur eine kleine Frage.
Ich suche eine Möglichkeit eine Rar-Datei, welche Passwort gesichert ist, zu entpacken.

Ich habe das Projekt junrar (https://github.com/edmund-wagner/junrar) entdeckt,
welches aber keine encryption unterstützt.

Ich bedanke mich für Eure Antwort =)


----------



## thecain (24. Jan 2016)

7zip? oder meinst du in Java?


----------



## Christopher25 (24. Jan 2016)

Nun natürlich zum einbauen in einem kleinem java-projekt.
Also kein Tool^^


----------



## Christopher25 (25. Jan 2016)

Keine Antworten mehr?


----------



## Joose (25. Jan 2016)

Verwende doch einfach WinRAR oder 7Zip dafür. Da ist schon alles fertig und beide Programme können über die Kommandozeile aufgerufen werden.
Sprich du musst aus deinem Programm nur die entsprechende EXE mit den Parametern starten.
Beispiel: http://stackoverflow.com/questions/9346077/java-execute-command-line-program

Ansonsten: http://blog.alutam.com/2009/10/31/reading-password-protected-zip-files-in-java/


----------



## Christopher25 (25. Jan 2016)

Nun Zip-Files und Rar-Files sind gänzlich andere Verfahren ^^
Warum postest du dann Informationen über Zip-Files?
Wenn es sich nur um Zip-Dateien handeln würde, hätte ich kein Problem.
Nur mit Rar-Dateien ist es eins und auch nur, wenn diese ein passwort haben.
Ich möchte möglichst vermeiden, Fremdprogramme aufzurufen, da diese nicht
bei jedem installiert sind und zum anderen weil es eine unschöne Art ist zu programmieren.


----------



## Joose (25. Jan 2016)

Da hast du natürlich recht 
Wurde von mir geschickt überlesen das RAR vorgegeben ist.


----------



## Christopher25 (25. Jan 2016)

Gibt also nichts?


----------



## VirtualIndex (25. Jan 2016)

Möglicherweise hilft dir diese Bibliothek @Christopher25: https://github.com/edmund-wagner/junrar


----------



## Christopher25 (25. Jan 2016)

Ich habe doch oben genau den selben Link gepostet VirtualIndex 
Genau im ersten Beitrag xD
Aber diese Bibliothek habe ich bereits ausprobiert.
Damit lässt sich leider keine Dechifrierung vornhemen.
Ohne Passwort funktioniert das, aber habe nichts gefunden,
was mir bei Junrar es ermöglicht ein passwort mitzugeben.


----------



## VirtualIndex (25. Jan 2016)

... keine Ahnung wie ich das so komplett vergeigen konnte. Letztlich könntest du deinem Projekt immer eine portable unrar.exe beilegen. Dann wäre das kein Problem, dass es nicht überall installiert ist.

Aber ja - bezüglich RARs wird es schwer - ZIP ist leicht gelöst. Ich suche mal weiter .


----------



## Christopher25 (25. Jan 2016)

Vielen dank^^
Nun mit Zip-Dateien habe ich keine Probleme, stehe nur vor dem Problem,
dass ich auch Rar-Dateien habe, welche immer passwort geschützt sind.
Diese möchte ich gerne automatisch in ein angegebenes Verzeichnis extrahieren.


----------



## Schesam (26. Jan 2016)

Lad dir die Portable-Version von 7Zip runter und leg die deinem Projekt bei. Führe das dann mit den Kommandozeilenbefehlen für 7zip aus:
http://www.dotnetperls.com/7-zip-examples

Also mit
Runtime.getRuntime().exec("Command");


----------



## Joose (26. Jan 2016)

Schesam hat gesagt.:


> Lad dir die Portable-Version von 7Zip runter und leg die deinem Projekt bei. Führe das dann mit den Kommandozeilenbefehlen für 7zip aus:
> http://www.dotnetperls.com/7-zip-examples



Nicht nur den Anfangspost lesen sondern auch die Antworten der anderen User.
Genau das habe ich auch schon vorgeschlagen


----------



## Christopher25 (26. Jan 2016)

Ich versuch es einfach mal so umzusetzen vielen Dank.
Ich gebe bescheid, ob es klappt oder nicht.

PS:
Die Dokumentation für die Commandozeile von 7zip finde ich ja echt grottig^^


----------



## Christopher25 (26. Jan 2016)

Hat jemand vielleicht den Command den ich brauche um folgendes Problem zu lösen?
Also mein Programm liegt im normalen Projekt Verzeichnis. (oder muss das in den src?)
Dann soll eine Rar-Datei mit einem Passwort an einem bestimmten Dateipfad extrahiert werden.

Die Rar-Datei liegt als File datei vor, genauso wie der destinationFolder und das Passwort natürlich als String.


----------



## Christopher25 (27. Jan 2016)

Schade ich bekomm diesen Parameter nicht wirklich hin.


----------



## VirtualIndex (27. Jan 2016)

Geht folgendes?

```
7za.exe x <Datei> <Zielpfad> -p<Passwort ohne Leerzeichen davor>
```

Laut Doku muss der Zielpfad vorher schon existieren.


----------



## Bitfehler (27. Jan 2016)

```
7z e test.rar -ptest
```

e = Entpacken
test.rar = Archiv
test = PWD

Hinweis:
7z muss in dem Bsp über PATH findbar sein.

EDIT: Zu langsam, lass es aber trotzdem mal stehen


----------



## Christopher25 (27. Jan 2016)

Es funktioniert nicht wirklich. Ich habe folgendes als Parameter stehen

/C:/Users/Christopher/workspace/ZipDateiEntpacker/bin/App/7-Zip/7zG.exe x G:\Downloads\Test/test.rar G:\TestTarget -ptestpasswort

Es kommen keine Fehlermeldung, er macht einfach garnichts.
Lass ich das Passwort weg, obwohl der ein passwort hat, kommt die 7zip
Oberfläche, worin ich ein passwort eingeben soll. Mach ich das geht einfach das Fenster wieder zu und nichts passiert.


----------



## Schesam (28. Jan 2016)

Wie lautet jetzt dein Befehl, mit dem du das Entpacken anstößt? Weil bei mir kommt immer wieder ein "Das System kann die Datei nciht finden", obwohl die 7z.exe vorhanden ist und auch mit getResource auffindbar ist.


----------



## Christopher25 (28. Jan 2016)

Runtime.getRuntime().exec(getClass().getResource("../App/7-Zip/7zG.exe").getPath()+" x "+ archive.getPath() + " " + destDir.getPath() +((pwd.length() > 0) ? " -p"+pwd : ""));


----------



## Schesam (28. Jan 2016)

```
public static void main(String[] args) {
        URL url = RarEntpacker.class.getResource("resources/x64/7za.exe");
        System.out.println(url);
        try {
            Runtime.getRuntime().exec(url.getPath() + " e SplashDemo.zip");
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
```
Bei mir kommt da dauernd Datei nicht gefunden, obwohl die URL auf die Datei zeigt^^


----------



## Christopher25 (28. Jan 2016)

versuch mal URL url = RarEntpacker.class.getResource("../resources/x64/7za.exe");
und überprüfe bitte, ob deine exe datei wirklich dieses a im namen hat.

oder meinst du mit dem zip file?
Dann gib den vollen Dateipfad an.


----------



## Schesam (28. Jan 2016)

ja hat sie, Die kommandozeilenversion heißt doch 7za.exe? Zumindest laut der offiziellen Seite:
http://www.7-zip.de/download.html

wenn ich bei mir das "../" Davor amche kommt ne Nullpointer weil die URL null ist. Soweit ich weiß sorgt das auch nur dafür das du im Dateisystem des Betriebssystems aufs unterste Verzeichnis gehst, also Beispielsweise auf C:\ unter Windows


----------



## Christopher25 (28. Jan 2016)

Also laut meiner Kenntniss ist ../ einfach nur eine relative Pfadsangabe.
Natürlich hast du Recht und das System schaut von der untersten Ebene, aber das muss doch nicht unbedingt C:\ Das kommt doch darauf an, wo die ausgeführte Datei liegt.
7za.exe muss doch dann entsprechend auch als Datei vorliegen oder nicht?
Vielleicht ist es eine spezielle Datei? Ich weiß es ehrlich gesagt nicht.


----------



## Schesam (28. Jan 2016)

War ja nur ein Beispiel^^ Und in meinem Code ist im Sout ja der richtige und Komplette Pfad zur Datei vorhanden


----------



## Christopher25 (28. Jan 2016)

Probier meinen Ansatz mal aus.


```
Runtime.getRuntime().exec(getClass().getResource("../App/7-Zip/7zG.exe").getPath()+" x "+ archive.getPath() + " " + destDir.getPath() +((pwd.length() > 0) ? " -p"+pwd : ""));
```


----------



## Schesam (28. Jan 2016)

Habe ich ja, da kommt ja dann die nullpointer


----------



## Christopher25 (28. Jan 2016)

Also bei mir nicht^^
Hast du die exe Datei im src ordner?


----------



## Dukel (28. Jan 2016)

7zG ist die Gui, du willst aber die CLI Vesion 7za (evtl. musst du diese extra Herunterladen).


----------



## Christopher25 (28. Jan 2016)

Also ich kann bei besten Willen keine 7za.exe finden. Und nur sowas wie diese hier http://de.originaldll.com/file/7za.exe/24132.html
aber die scheint mir nicht wirklich glaubwürdig zu sein.


----------



## Dukel (28. Jan 2016)

Wie gesagt. Extra herunterladen:
http://www.7-zip.org/a/7z1514-extra.7z
Siehe http://www.7-zip.org/download.html


> Download .7z x86 / x64 7-Zip Extra: *standalone console version*, 7z DLL, Plugin for Far Manager


----------



## Christopher25 (28. Jan 2016)

Tut mir leid, da passiert leider immer noch nichts.
Ich poste nochmal meinen Code.


```
String exePath = getClass().getResource("../7za.exe").getPath();
            if (System.getProperty("os.arch").contains("64")) {
                exePath = getClass().getResource("../x64/7za.exe").getPath();
            }
            System.out.println(exePath+" x "+ archive.getPath() + " " + destDir.getPath() +((pwd.length() > 0) ? " -p"+pwd : ""));
            Runtime.getRuntime().exec(exePath+" x "+ archive.getPath() + " " + destDir.getPath() +((pwd.length() > 0) ? " -p"+pwd : ""));
```


----------



## Dukel (28. Jan 2016)

Wenn du das, was im Code zusammengebaut wird, in einer CMD ausgeführt wird, funktioniert das denn?
Gibt es irgendwelche Fehlermeldungen von 7za?


----------



## Christopher25 (28. Jan 2016)

Nein keine Fehlermeldungen. Er läuft schnell durch und macht eig. nichts


----------



## Christopher25 (28. Jan 2016)

Ich habe das ganze jetzt mal im CMD laufen lassen, dort sagt der dass er den gegebenen Pfad nicht finden kann.
Er kommt wenn ich zb. einen Ordner habe mit den Namen "Silent Hill" nicht mit dem leerschritt parat.
Muss ich dabei etwas beachten? der nimmt nur das Wort Silent!

PS:
Wenn ich das ganze aber ohne leerschritte mache mit anderne Ordnern
zb. mit G://TestOrdner und G://TestOrdner/Test.rar
dann kommt folgende Fehlermeldung:
Can not open the file as archive.

Aber das ist definitiv eine rar datei. Ich habe einfach eine .txt Datei mit WinRar in eine Rar-Datei gepackt


----------



## Christopher25 (29. Jan 2016)

Gibt es jemanden, bei dem es klappt?


----------



## Schesam (29. Jan 2016)

Wie immer in CMD/Terminal/allgemein Befehlszeilen: Bei leerzeichen in Pfaden immer den ganzen Pfad in "" packen. Und Wenn die Meldung "Can not open the file as archive" kommt, kann 7Zip die Datei nicht öffnen, kenne die Meldung selber nur zu gut. Probier das mal mit nem anderen Archiv, bzw erstmal mit nem normalen ZIP.


----------



## Christopher25 (30. Jan 2016)

Also 1. War die Rar datei mit 7Zip gemacht^^
Und 2. kann ich die Datei auch mit 7Zip über die 7Zip Gui öffnen und extrahieren^^

Aber danke für den Tipp mit den beiden "" werde ich gleich mal ausprobieren


----------



## Christopher25 (9. Feb 2016)

Also mit den hochkommata hat das nichts zu tun.
Ich kann selbst über den konsolen befehl nicht extrahieren!


----------



## Christopher25 (10. Feb 2016)

Keine weiteren Vorschläge mehr?
Vielleicht einen anderen Lösungsansatz außer 7za?


----------



## Bitfehler (10. Feb 2016)

Wie lautet der Befehl samt Parameter, den du auf der Konsole verwendest?
Welche Fehlermeldung bekommst du?
Hast du ein rar als Beispiel, das nicht geht, damit man es evtl nachvollziehen kann?


----------

