使用Perl解压缩文件时,如何找出错误代码的含义?

时间:2011-10-13 00:15:45

标签: linux perl unzip

我正在尝试在linux上使用perl解压缩文件。该文件受密码保护,并在暴力攻击中循环使用可能的密码(是的,这是一项家庭作业)

我已经隔离并删除了错误代码20992(密码错误),但仍然会收到docs中未列出的其他错误代码,并且无法使用Google搜索找到任何相关内容。< / p>

错误是:

512  error:  invalid compressed data to inflate secret_brute.txt

是否有人看过此错误消息?如果是这样,那是什么意思?

#!/usr/bin/perl

@aaaa_zzzz = ("aaaa" .. "zzzz");

foreach(@aaaa_zzzz){
        $output = system("unzip -P $_ -q -o secret_brute.zip");
        if($output  !~ m/20992/){ #  <-- filtering out other error message
                chomp($output);
                print "$_ : $output\n";
        }
}

修改

按要求:Secret_brute.zip

1 个答案:

答案 0 :(得分:4)

以下是exit codes from unzip的列表。

如上所述,perldoc -f system解释了如何获取unzip的退出值:

  

如果你想手动检查system的失败,你可以   通过检查$?,检查所有可能的故障模式:

if ($? == -1) {
    print "failed to execute: $!\n";
}
elsif ($? & 127) {
    printf "child died with signal %d, %s coredump\n",
        ($? & 127),  ($? & 128) ? 'with' : 'without';
}
else {
    printf "child exited with value %d\n", $? >> 8;
}

在这种情况下,512的值将映射到:

  

2:检测到zipfile格式的一般错误。处理可能已成功完成;其他归档程序创建的一些破解的zipfiles具有简单的解决方法。

另一方面,20992将映射到:

  

82:由于密码密码错误,未找到任何文件。 (如果成功处理了一个文件,则退出状态为1。)