2016-05-04 4 views
0

Я занимался поиском в Github и наткнулся на этот конкретный сценарий, и мне было интересно, может ли кто-нибудь объяснить, что этот скрипт технически делает? Я проводил много исследований по фильтрации DNS и пытаюсь лучше понять, что такое DNS-фильтрация на самом деле, и как люди могут злоупотреблять ею. Вот сценарий в вопросе:Нужна помощь в понимании скрипта DNSfilter


use strict; 
use warnings; 
use Net::Pcap; 
use Net::Pcap::Easy; 

if ($#ARGV != 2) { 
    print "Usage: perl filter.pl <outputfile> <minbytereply> <domain>\n"; 
    print " Example: perl filter.pl output.txt 3000 1x1.cz\n"; 
    print " Coded by Vypor, https://github.com/Vypor\n"; 
    exit(1); 
} 

my $err; 
my $minbytes = $ARGV[1]; 
my $domain = $ARGV[2]; 

my $interface = pcap_lookupdev(\$err); 
my $ethip = `/sbin/ifconfig $interface | grep "inet addr" | awk -F: '{print \$2}' | awk '{print \$1}'`; 
$ethip = substr($ethip, 0, -1); 

# all arguments to new are optoinal 
my $npe = Net::Pcap::Easy->new(
    dev    => $interface, 
    filter   => "not src host $ethip and port 53 and greater $minbytes", 
    packets_per_loop => 10, 
    bytes_to_capture => 1024, 
    timeout_in_ms => 0, # 0ms means forever 
    promiscuous  => 0, # true or false 

     udp_callback => sub { 
     my ($npe, $ether, $ip, $udp, $header) = @_; 
     my $xmit = `date +"%H:%M:%S"`; 
     chomp($xmit); 
     print "$xmit $ip->{src_ip} -> $ip->{dest_ip} $udp->{len}\n"; 

     open (FFILE, ">>$ARGV[0]"); 
     print FFILE "$ip->{src_ip} $domain $udp->{len}\n"; 
     close FFILE; 
}, 
); 

1 while $npe->loop; 

ответ

0

Это плохо написанный Perl скрипт, который, кажется, предназначен для Snoop сетевого трафика и записи журнала всех входящих пакетов DNS. Почему он называется «фильтр», вам нужно спросить, кто его написал.

Пожалуйста, не используйте этот скрипт в качестве примера того, как писать Perl. Строки были автором, вызывающим внешние программы для фильтрации текста, а формат - это огромные красные флаги, которые он мало знал о Perl, а строка с одним grep и двумя awk на нем показывает, что он мало что знал о awk или программирование оболочки. И кроме того, большая часть сценария вырезана из n-вставки из документации для модуля Net::Pcap::Easy (включая один комментарий).

Смежные вопросы