UNRAR.DLL und passwortgeschützte Archive

German support forum

Moderators: white, Hacker, Stefan2

User avatar
Sheepdog
Power Member
Power Member
Posts: 5150
Joined: 2003-12-18, 21:44 UTC
Location: Berlin, Germany
Contact:

Re: paasword mit leertzeichen

Post by *Sheepdog »

Markus Schebsdat wrote:Bei mir lassen sich rar Archive mit einem Passwort, dass Leerzeichen enthält, nicht entpacken. Auch nicht, wenn statt der unrar.dll das winrar Programm verwendet wird. Entpacke ich die Archive mit Winrar allein geht es.

Im Einsatz ist TCM 6.03a und Winrar 3.4B3
Versuch mal das Passwort in Anführungszeichen zu setzen.

sheepdog
"A common mistake that people make when trying to design something
completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
Markus Schebsdat
Junior Member
Junior Member
Posts: 20
Joined: 2004-07-29, 13:37 UTC

Post by *Markus Schebsdat »

Tatsächlich das geht. Hätte ich ja nicht gedacht, das dann die "" ignoriert werden, wie bei einem Dateinamen :)

Wäre trotzdem schön, wenn das behoben wird.
Markus
User avatar
Hacker
Moderator
Moderator
Posts: 13065
Joined: 2003-02-06, 14:56 UTC
Location: Bratislava, Slovakia

Post by *Hacker »

Wäre trotzdem schön, wenn das behoben wird.
Wird wohl so leicht nicht moglich sein - woher soll man denn wissen, wo das Passwort aufhort?

Roman
Mal angenommen, du drückst Strg+F, wählst die FTP-Verbindung (mit gespeichertem Passwort), klickst aber nicht auf Verbinden, sondern fällst tot um.
Markus Schebsdat
Junior Member
Junior Member
Posts: 20
Joined: 2004-07-29, 13:37 UTC

Post by *Markus Schebsdat »

Hacker wrote:
Wäre trotzdem schön, wenn das behoben wird.
Wird wohl so leicht nicht moglich sein - woher soll man denn wissen, wo das Passwort aufhort?
Roman
Ich glaube ich verstehe Deine Bedenken nicht.
Offensichtlich, übergibt das Programm den String an RAR nicht in Hochkomma sondern wie er geschrieben wird.
TCM muss lediglich die Hochkomma vor und hinter den String setzen und alles komplett an RAR übergeben.
Das sollte kein Problem sein ...
Markus
Murphy
Member
Member
Posts: 124
Joined: 2005-02-20, 10:26 UTC

Post by *Murphy »

Hallo,
ich bin seit Tagen auf der Suche nach einer Möglichkeit passwortgeschützte
Rar-Archive zu entpacken.
Ich nutze als (externen) Packer 7-Zip in der aktuelle Beta-Version und bin
damit sehr zufrieden. Im Explorer über das Kontextmenü Entpacken nach...
und der Eingabe des Passsworts in den darauffolgenden Dialog gibt es
keinerlei Probleme.
7-Zip habe ich jetzt unter Konfigurieren-Packer über die 7zgn.exe
konfiguriert.
Wenn ich ein passwortgeschütztes Rar-Archiv habe, bekomme ich immer
die Fehlermeldung "Incorrect Commandline".
Was mache ich falsch. Kann mir jemand einen Tipp geben :idea:

Danke :wink:

Grüße,
Murphy
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

7-Zip kocht leider sein eigenes Süppchen und ist mit der Kommandozeile, wie sie vom TC übergeben wird, inkompatibel.

Einmal gibt es da den Parameter -c-, den 7-Zip leider nicht ignoriert (sorgt dafür, daß Kommentare nicht angezeigt werden beim Entpacken) und zudem muß das Zielverzeichnis bei 7-Zip blöderweise mit dem Schalter -o angegeben werden.

Das ist leider nicht kompatiblel zur RAR-Syntax, die vom TC übergeben wird.

Schreib den 7-Zip Autor einfach mal an, ob er sich nicht in der Lage sieht, -c- zu überlesen und auf -o zu verzichten, letzteres zumindest optional, dann klappt's auch mit dem TC. :)

In einem früheren Thread hier wurde allerdings erwähnt, daß der 7-Zip Autor seinen "File Manager" als Konkurrenz zum TC ansieht, immerhin bietet er ja eine Zweifenstertechnisk *hust*, evtl. ist also der Schalter -o vorsätzlich eingebaut worden. ;)

Icfu
This account is for sale
Murphy
Member
Member
Posts: 124
Joined: 2005-02-20, 10:26 UTC

Post by *Murphy »

Danke für die schnelle Rückmeldung ;-)

Da hatte ich mir vorher keinen Kopf drum gemacht. Ich habe
mir ein kleines AutoIt3-Script gebastelt, dass die Parameter
nun richtig übergibt. Kompiliert und abgespeichert im
7-Zip-Ordner als 7ztc.exe, habe ich es als Rar-Packer in den
TC eingebunden. Für mich die perfekt funktionierende Lösung.
Soll der Autor von 7-zip doch seine "Zweifenster-Ansicht" als
Konkurrenz sehen, ich tu es jedenfalls nicht ;-)

Hier das Script:

Code: Select all

If $cmdline[0] = 0 then Exit

$archive = $cmdline[3]
$destination = $cmdline[4] & "\"
If $cmdline[0] > 5 then $pass = $cmdline[6]

$os = @OSType
$exe = "7zg.exe"
If $os = "WIN32_NT" then $exe = "7zgn.exe"

$commandline = $exe & ' x "' & $archive & '" -o"' & $destination & '"'

If $pass <> "" then $commandline = $commandline & " " & $pass

Run($commandline)
Grüße,
Murphy
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Auf die Idee, die feste Kommandozeile über eine Exe zu filtern und dann zu übergeben, muß man auch erstmal kommen, Respekt! :)

Quasi das gleiche Vorgehen wie beim Ersatz für Noclose.pif, vielleicht wär das ja auch was für Dich:
http://www.ghisler.ch/board/viewtopic.php?t=6904

Script werde ich mir gleich mal kompilieren.

Icfu
This account is for sale
Murphy
Member
Member
Posts: 124
Joined: 2005-02-20, 10:26 UTC

Post by *Murphy »

Da ich es nicht gerne mag, Dateien zu vermischen, habe ich gerade
das Script noch ein Mal überarbeitet. Es ist jetzt möglich das Script in
einem beliebigen Verzeichnis unterzubringen. Beim Aufruf wird geprüft,
ob eine INI mit dem Pfad zur 7zg(n).exe vorhanden ist bzw. ob der
Pfad stimmt. Ist eine der beiden Abfragen falsch, kann man in einem
Dialogfenster den Pfad zur aktuellen 7zg(n).exe auswählen. Dies
gewährleistet auch, dass man das Script auf verschiedenen Rechnern
bzw. nach Pfadänderungen einsetzen kann.

Wer es gebrauchen kann, hier der Code:

Code: Select all

$exe = "7zg.exe"
If @OSType = "WIN32_NT" then $exe = "7zgn.exe"

$ini = @ScriptDir & "\7ztc.ini"
$ini_available = FileExists($ini)
$exe_available = FileExists(IniRead($ini, "Config", "Path", 0))

If Not BitAnd($ini_available, $exe_available) then
 $initdir = RegRead("HKLM\Software\7-Zip", "Path")
 if @error = 1 then $initdir = @ProgramFilesDir
 $path = FileOpenDialog("7-Zip", $initdir, "7-Zip-Executable (" & $exe & ")", 3, $exe)
 $path = StringLeft($path, StringLen($path) - StringLen($exe))
 $success = IniWrite($ini, "Config", "Path", $path)
 If $success = 0 then Exit
EndIf

If $cmdline[0] = 0 then Exit

$path = IniRead($ini, "Config", "Path", -1)
If $path = -1 then Exit
$archive = $cmdline[3]
$destination = $cmdline[4] & "\"
If $cmdline[0] > 5 then $pass = $cmdline[6]

$commandline = $path & $exe & ' x "' & $archive & '" -o"' & $destination & '"'
If $pass <> "" then $commandline = $commandline & " " & $pass

Run($commandline)
Grüße,
Murphy
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Das Problem ist nur, daß die Kommandozeile je nach Art der Archivöffnung unterschiedlich ist. Bei Alt-F6 wird -c- nicht mitgegeben vom TC, so daß sich die Parameter nach links verschieben.

Das Script ist in dieser Form nur brauchbar für Archivöffnung per Enter, für Alt-F6 und Packen nicht.

Wär vermutlich doch einfacher, wenn (der) 7-Zip(-Autor) flexibler wird.

Icfu
This account is for sale
Murphy
Member
Member
Posts: 124
Joined: 2005-02-20, 10:26 UTC

Post by *Murphy »

Hast ja recht :wink:

Welche Methoden zu Entpacken gibts denn noch, ich habe es jetzt so
angepasst, dass man direkt aus dem Archiv (also durch drücken von ENTER,
STRG+BILD AB oder Doppelklick mit der Maus) entpacken kann oder
wahlweise über ALT+F6 (Das kannte ich bis eben übrigens noch gar nicht
und war einer meiner größten Kritikpunkte an TC. Wieso steht das nicht in
der Hilfe?).

Ist zwar nicht so wichtig, aber das wurmt mich irgendwie :wink:

Hier das neue Script (ist nur schnell zusammengebastelt, mittlerweile ganz
schön unübersichtlich, ich weiß):

Code: Select all

#NoTrayIcon
$exe = "7zg.exe"
If @OSType = "WIN32_NT" then $exe = "7zgn.exe"

$ini = @ScriptDir & "\7ztc.ini"
$ini_available = FileExists($ini)
$exe_available = FileExists(IniRead($ini, "Config", "Path", 0))

If Not BitAnd($ini_available, $exe_available) then
 $initdir = RegRead("HKLM\Software\7-Zip", "Path")
 if @error = 1 then $initdir = @ProgramFilesDir
 $path = FileOpenDialog("7-Zip", $initdir, "7-Zip-Executable (" & $exe & ")", 3, $exe)
 $path = StringLeft($path, StringLen($path) - StringLen($exe))
 $success = IniWrite($ini, "Config", "Path", $path)
 If $success = 0 then Exit
EndIf

If $cmdline[0] < 4 then Exit

$path = IniRead($ini, "Config", "Path", -1)
If $path = -1 then Exit

$unzip = " " & $cmdline[1] & " "
$filter = "*.*"
$overwrite = ""
$pass=""
$n=2

If $cmdline[2] = "-c-" then 
 $archive = $cmdline[3]
 $n=4
Else
 $archive = $cmdline[2]
 $n=3
EndIf

$destination = $cmdline[$n] & "\"

if StringLeft($cmdline[$n+1],1) <> "@" then $filter = $cmdline[$n+1]
If $cmdline[0] > 4 then 
 if StringLeft($cmdline[$n+2],2) = "-p" then $pass = $cmdline[$n+2]
EndIf
If $cmdline[0] > 5 then 
 if StringLeft($cmdline[$n+2],3) = "-o+" then $overwrite = "-aoa"
EndIF

$commandline = $path & $exe & $unzip & '"' & $archive & '" -o"' & $destination & '" -ir!' & $filter & " " & $pass 

Run($commandline)
Wäre nett, wenn ihr das Mal testen könntet. Alle mir bekannten (und vor
allem relevanten) Prüfungen, verliefen nach kurzem Test positiv. Habe
aber sicher noch einiges übersehen...

Grüße,
Murphy
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Bugs:
1. Leerzeichen in Dateinamen werden geschluckt bei Aktivierung von "Entpacke jedes Archiv in separates Verzeichnis":
"datei name.rar" => Ordner "dateiname"
Entpackungsvorgang ist erfolgreich.

2. Beim Entpacken nach Betreten des Archivs mit Enter gibt's einen Scripterror, hab ich Dir hier hochgeladen:
http://img161.echo.cx/img161/3184/7zip8yk.png

Übertreib's aber nicht mit dem Script, mach nur das, was Du persönlich auch brauchst, sonst verrennst Du Dich in Codewirrwarr. ;)
Ich selbst setze hier weiterhin WinRAR ein, weil mir 7-Zip insgesamt noch zu unausgereift ist, vor allen Dingen, was die Unterstützung der Kommandozeile angeht. RAR-Archive kann man mit 7za.exe beispielsweise nicht entpacken, Archivtyp wird nicht erkannt, kann natürlich auch nur ein Bug in der 4.18 sein.
(Das kannte ich bis eben übrigens noch gar nicht
und war einer meiner größten Kritikpunkte an TC. Wieso steht das nicht in
der Hilfe?).
Hm, Suchwort "entpacken" führt direkt zum Treffer, der angegebene Shortcut ist Alt-F9, Alt-F6 ist eine Alternative dazu.

Icfu
This account is for sale
Murphy
Member
Member
Posts: 124
Joined: 2005-02-20, 10:26 UTC

Post by *Murphy »

2icfu:
Besten Dank für deinen Test. Hast recht, ist eh nur für mich
und deine aufgeführten Bugs treten nur auf, wenn die Archive
passwortgeschützt sind.

Was mich aber wundert ist die Parameterübergabe vom TC:
Ich habe die Parameter durch folgendes Script herausgefunden:
(kompiliert und als Packer konfiguriert)

Code: Select all

Dim $message
for $n = 1 to $cmdline[0]
 $message = $message & $n & ": " & $cmdline[$n] & @CRLF
next
MsgBox(0, "Param-Test", $message)
Bei einer Mehrfachauswahl treten bei mir bereits dort Fehler
des TC auf. Das Zielverzeichnis weicht ab, da kann ich ja
schon nichts mehr ändern. Kann es sein, dass es schon daran
liegt oder habe ich einen Denkfehler? Aber wie gesagt nur wenn
mindestens ein Archiv passwortverschlüsselt ist.

Danke schon mal ;-)

Grüße,
Murphy
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Besten Dank für deinen Test. Hast recht, ist eh nur für mich
und deine aufgeführten Bugs treten nur auf, wenn die Archive
passwortgeschützt sind.
Den Test habe ich mit normalen rar-Archiven gemacht, nicht mit paßwortgeschützten. Bei paßwortgeschützten bekomme ich überhaupt keine Nachfrage nach dem Paßwort, offenbar hängt es da noch woanders.

Zielverzeichnis weicht hier nicht ab, habe es mit normalen und paßwortgeschützten probiert.

Icfu
This account is for sale
Murphy
Member
Member
Posts: 124
Joined: 2005-02-20, 10:26 UTC

Post by *Murphy »

Komisch, bei mir funzt sonst alles perfekt ;-)

Dann werde ich es so lassen, für mich reicht's...

Vielen Dank :-)

Grüße,
Murphy

PS: Könnte sein, dass ich die ein oder andere Codestelle nach dem hier
Einfügen noch leicht abgeändert hatte und daher die Differenzen...
Post Reply