需要帮助我的第一个perl程序

时间:2011-08-05 03:07:55

标签: perl

我只有几天了,并且只从我经历的那本书中做了几件事,所以就这么简单: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;

感谢您提供任何帮助,提示和指示。不寻找勺子饲料:)并希望我适当地发布给每个人,如果我离开我如何尝试这个为我的最终目标,请随意说,任何有关正确的尝试路线的提示将不胜感激

3 个答案:

答案 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行)上运行。