2016-05-04 18 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

これは、ネットワークトラフィックをスヌープし、すべての着信DNSパケットのログを書き込むことを意図しているようだひどく書かれたPerlスクリプトです。なぜそれが "フィルタ"と呼ばれているのかは誰でもそれを書いた人に尋ねなければならないでしょう。

Perlを書く方法の例として、このスクリプトを使用しないでください。行は著者がテキストをフィルタリングするための外部プログラムを呼び出す行であり、日付はPerlの知識がほとんどない巨大な赤旗で、grepと2行のawkという行は、 awkまたはシェルプログラミング。さらに、スクリプトのほとんどは、Net::Pcap::Easyモジュールのドキュメント(そこにあるコメントを含む)からカットアンドペーストされています。

関連する問題