Linux 使用Perl解压文件时,如何找出错误代码的含义?
我正在尝试在linux上使用perl解压一个文件。该文件受密码保护,我在暴力攻击中循环使用可能的密码(是的,这是一个家庭作业) 我已经隔离并删除了错误代码20992(坏密码),但是我仍然得到了另一个错误代码,它没有在列表中的任何地方列出,并且使用谷歌也找不到任何相关的错误代码 错误是:Linux 使用Perl解压文件时,如何找出错误代码的含义?,linux,perl,unzip,Linux,Perl,Unzip,我正在尝试在linux上使用perl解压一个文件。该文件受密码保护,我在暴力攻击中循环使用可能的密码(是的,这是一个家庭作业) 我已经隔离并删除了错误代码20992(坏密码),但是我仍然得到了另一个错误代码,它没有在列表中的任何地方列出,并且使用谷歌也找不到任何相关的错误代码 错误是: 512 error: invalid compressed data to inflate secret_brute.txt 有人看到这个错误消息吗?如果是,这意味着什么 #!/usr/bin/perl
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";
}
}
#/usr/bin/perl
@aaaa_zzzz=(“aaaa”。“zzzz”);
foreach(@aaaa_zzzz){
$output=system(“unzip-P$q-o secret\u brute.zip”);
如果($output!~m/20992/){#这里是一个列表
如前所述,解释了如何获取解压的退出值:
如果要手动检查系统的故障,可以
通过如下检查检查所有可能的故障模式:
在这种情况下,512
的值将映射到:
2
:检测到zipfile格式中的一般错误。无论如何,处理可能已成功完成;由其他归档员创建的一些损坏的zipfile具有简单的解决方法
另一方面,20992
将映射到:
82
:由于解密密码不正确,未找到任何文件。(但是,如果成功处理了一个文件,退出状态为1
)
这是一份清单
如前所述,解释了如何获取解压的退出值:
如果要手动检查系统的故障,可以
通过如下检查检查所有可能的故障模式:
在这种情况下,512
的值将映射到:
2
:检测到zipfile格式中的一般错误。无论如何,处理可能已成功完成;由其他归档员创建的一些损坏的zipfile具有简单的解决方法
另一方面,20992
将映射到:
82
:由于解密密码不正确,未找到任何文件。(但是,如果成功处理了一个文件,退出状态为1
)
执行perldoc-f system
并查看它对system
的返回值的说明。好主意-可能错误代码根本不是来自unzip
,而是来自system
…这个秘密有多大?你能把它放在web上的某个地方吗?$output
这个名称有误导性,因为变量没有按住解压
命令的输出,但按住系统
的返回值。你真的应该使用strict;使用warnings;
。这是学习perl的最好方法,一旦你开始使用它,你将永远不想没有它。执行perldoc-f system
并查看它对系统返回值的说明e> .好主意-可能错误代码根本不是来自unzip
,而是来自system
…这个秘密有多大?你能把它放到web上的某个地方吗?$output
这个名称会误导人,因为变量不包含unzip
命令的输出,而是系统的返回值。你可以确实应该使用strict;使用warnings;
。这是学习perl的最好方法,一旦你开始使用它,你将永远不想没有它。事实上,使用perl编程又是一件有趣的事情。+1极好的答案。映射消息让我解决了我自己的问题。事实证明,在执行解压缩时,可能会出现误报密码——这导致尝试解压归档文件失败:512个错误。密码在w***范围内,因此我最终在系统命令中使用2>/dev/null
来抑制任何错误消息,并给它45分钟的运行时间!事实上,使用Perl编程很有趣。+1非常好的答案。映射这些消息让我解决了我的问题自己的问题。事实证明,在执行解压时,密码可能会出现误报——这导致尝试解压存档失败:512错误。密码在w***范围内,因此我在系统命令中使用2>/dev/null
来抑制任何错误消息,并给它45分钟的运行时间!
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;
}