我正在尝试创建一种适用于特定文件密码的蛮力。
我不确定如何使此代码正常工作。到目前为止,这就是我所拥有的。该代码会为密码生成正确的可能组合,但是我不确定如何将其实施为暴力攻击。
my @alpha = qw(a b c d e f g h i j k l m n o p q r s t u v w x y z);
my $password = @alpha[1];
my @combo = ();
for my $one(@alpha){
for my $two(@alpha){
for my $three(@alpha){
for my $four(@alpha){ push @combo, "$one$two$three$four\n"} }}
我认为我需要在某处使用此命令,这secret_file_brute.zip
是我用来测试的文件。
我不确定如何声明$password
变量以及如何从$password
命令所在的位置开始逐一输入生成的组合,直到密码匹配为止。
$returnVal = system("unzip -qq -o -P $password
secret_file_brute.zip > /dev/null 2>&1");
蛮力密码破解非常低效,因此除了作为概念证明之外,它并没有真正的用处。您有一个4个字符的字母密码,这是一个非常简单的情况。
首先-您可以编写:
my @alpha =( "a".."z" );
在执行操作时生成单词会起作用,但是您将插入换行符,这意味着system
您正在运行的任何命令均行不通。
您也可能会发现尝试尝试会提高速度,这尤其重要,因为您可以轻松地将多重处理用于此类操作。
另外-您可以捕获返回代码system
以查看成功的时间。捕获系统的文本输出无济于事-您需要检查$?
-请参阅:http : //perldoc.perl.org/functions/system.html
像这样的东西?
#!/usr/bin/perl
use strict;
use warnings;
use Parallel::ForkManager;
my $parallel = 8;
my @alpha = ( "a" .. "z" );
my $manager = Parallel::ForkManager->new($parallel);
my $parent_pid = $$;
for my $one (@alpha) {
for my $two (@alpha) {
for my $three (@alpha) {
for my $four (@alpha) {
$manager->start and next;
system(
"unzip -qq -o -P $one$two$three$four secret_file_brute.zip > /dev/null 2>&1"
);
if ( not $? ) {
print "Password was $one$two$three$four\n";
kill $parent_pid;
}
$manager->finish;
}
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句