Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用Perl解压文件时,如何找出错误代码的含义?_Linux_Perl_Unzip - Fatal编程技术网

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

Linux 使用Perl解压文件时,如何找出错误代码的含义?,linux,perl,unzip,Linux,Perl,Unzip,我正在尝试在linux上使用perl解压一个文件。该文件受密码保护,我在暴力攻击中循环使用可能的密码(是的,这是一个家庭作业) 我已经隔离并删除了错误代码20992(坏密码),但是我仍然得到了另一个错误代码,它没有在列表中的任何地方列出,并且使用谷歌也找不到任何相关的错误代码 错误是: 512 error: invalid compressed data to inflate secret_brute.txt 有人看到这个错误消息吗?如果是,这意味着什么 #!/usr/bin/perl

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

我已经隔离并删除了错误代码20992(坏密码),但是我仍然得到了另一个错误代码,它没有在列表中的任何地方列出,并且使用谷歌也找不到任何相关的错误代码

错误是:

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;
}