我只有几天了,并且只从我经历的那本书中做了几件事,所以就这么简单:P。我尝试过在线搜索并尝试了不同的方法,但我似乎无法将MAC正确地传递给system()。 我想要实现的是让perl打开一个MAC的.txt文件,每个MAC都在它自己独立的行上。然后用它读取每一行,一次取一个MAC并将系统()作为arg传递给所以aircrack可以通过MAC arg。我有它显示MAC正确读取每一行但我无法弄清楚为什么aircrack抱怨MAC给出的不是有效的MAC。这是因为我没有咀嚼线读?
由于这种复杂情况,我还没有尝试过,如果aircrack说它找到了一个,或者如果没有找到一个移动到下一个BSSID,我最终希望它将一个找到的密钥打印到文件中,继续,直到文件中没有更多的MAC来尝试。
MAC在txt文件中如此
00:00:00:00:00:00
00:00:00:00:00:00
00:00:00:00:00:00
等等
#!/usr/bin/perl
use strict;
use warnings;
my $file = '/kismetLOGS/PcapDumpKismet/WEPMACS.txt';
open my $info, $file or die "Could not open $file: $!";
while( my $line = <$info>)
{
print $line;
system("/usr/local/bin/aircrack-ng", "-b $line", "*.pcap *.pcapdump");
last if $. == 0;
}
close $info;
exit;
感谢您提供任何帮助,提示和指示。不寻找勺子饲料:)并希望我适当地发布给每个人,如果我离开我如何尝试这个为我的最终目标,请随意说,任何有关正确的尝试路线的提示将不胜感激
答案 0 :(得分:2)
您可以将所有参数组合在一起,例如
system("/usr/local/bin/aircrack-ng -b $line *.pcap *.pcapdump");
或将它们全部分开,例如
system("/usr/local/bin/aircrack-ng", "-b","$line", "*.pcap","*.pcapdump");
后者通常更安全,因为物品中的空间不需要逃脱。然后globbing不起作用,因为参数直接传递给系统执行。
如果你想要* .pcap工作,你需要使用第一个版本。
答案 1 :(得分:1)
$ line以换行符结尾。您应该删除换行符。
chomp $line;
答案 2 :(得分:0)
关于last if $. == 0;
,将其更改为last if $. ~~ 0
,这会在进行比较时推断出变量的类型。如果要迭代所有MAC地址,请将其删除,因为它只会在第一行(第0行)上运行。