This is what I did. 1. Went with using the native zip and unzip commands. 2. Used the perl Expect module to deal with the password prompts. ( I know that zip passwords are weak, but this is what the client specified)
Here's a snippet if any one is interested. (very watered down to just show how it's done ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ use Expect; my $exp = new Expect or die "Error - Cannot create an expect object, because of <$!>\n"; #----------------------------------- #$opt_unzip is set on command line if user wishes to # unzip a file #----------------------------------- if ( $opt_unzip ) { #----------------------------------- #$opt_file is the input zip file name #----------------------------------- $exp->spawn("/bin/unzip -oj $opt_file ") or die "Error - Cannot spawn command, because of <$!>\n"; } else { #----------------------------------- #$opt_file is the filename #$opt_output is the output zip file name #----------------------------------- $exp->spawn("/bin/zip -e $opt_output $opt_file") or die "Error - Cannot spawn command, because of <$!>\n"; } #--------------------------------------------------------------------- # for zip, the password option generates the following sequence. # #Enter password: #Verify password: # #--------------------------------------------------------------------- # for unzip, the password option generates the following sequence. # using file o.zip as an example. # #Archive: o.zip #[o.zip] o.txt password: # #--------------------------------------------------------------------- $opt_pass = "GET_PASSWORD_FROM_SECRET_PLACE"; my $pattern = "password:"; #----------------------------------- #both commands zip and unzip contain the #word "password:" in the challange #----------------------------------- my $patidx = $exp->expect(15, $pattern); if ($patidx) { $Expect::Log_Stdout = 0; sleep 1; $exp->send("$opt_pass\r"); #----------------------------------- #if it's to be zipped, it will #issue the verify password challenge #----------------------------------- if (!$opt_unzip) { sleep 1; $patidx = $exp->expect(15, "Verify password:"); if ($patidx) { sleep 1; $exp->send("$opt_pass\r"); } else { warn "Error - Pattern not found\n"; exit 8; } } $Expect::Log_Stdout = 1; } else { warn "Error - Pattern not found\n"; exit 8; } $exp->soft_close(); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Burak Gursoy Sent: Friday, July 30, 2004 7:26 AM To: [EMAIL PROTECTED] Subject: RE: Any way to process passwords in Archive::Zip ???? nope. I'm currently not interested in zip cracking or winzip thingies. Thanks for the infozip link. -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Willem Hengeveld Sent: Thursday, July 29, 2004 10:33 PM To: Burak Gursoy Cc: [EMAIL PROTECTED] Subject: Re: Any way to process passwords in Archive::Zip ???? On Thu, Jul 29, 2004 at 08:33:14PM +0300, Burak Gursoy wrote: > > don't know how to do that with perl. > > and... do you know how to do in another language? :) I'm also interested in > this subject but digging google didn't return me any info :( http://www.info-zip.org/pub/infozip/ download from ftp://ftp.icce.rug.nl/infozip/src/ if you are looking for zip password cracking software: http://www.elcomsoft.com/azpr.html or a paper on problems with the new winzip encryption: http://www.cs.ucsd.edu/users/tkohno/papers/WinZip/winzip.pdf willem _______________________________________________ Perl-Win32-Users mailing list [EMAIL PROTECTED] To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs _______________________________________________ Perl-Win32-Users mailing list [EMAIL PROTECTED] To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs _______________________________________________ Perl-Unix-Users mailing list [EMAIL PROTECTED] To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs