我正在尝试在 linux 上使用 perl 解压缩文件。该文件受密码保护,并在暴力攻击中遍历可能的密码(是的,这是一项家庭作业)
我已经隔离并删除了错误代码 20992(密码错误),但仍然收到另一个错误代码,该代码未在文档中的任何地方列出,并且使用 Google 也找不到任何相关内容。
错误是:
512 error: invalid compressed data to inflate secret_brute.txt
Run Code Online (Sandbox Code Playgroud)
有没有人看到这个错误信息?如果是,是什么意思?
#!/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";
}
}
Run Code Online (Sandbox Code Playgroud)
编辑
每个请求:Secret_brute.zip
如前所述,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;
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,值512将映射到:
2: 检测到 zipfile 格式的一般错误。无论如何,处理可能已经成功完成;其他存档器创建的一些损坏的 zipfile 具有简单的解决方法。
另一方面,20992将映射到:
82: 由于解密密码错误,没有找到文件。(但是,即使成功处理了一个文件,退出状态也是1。)