DDOS Perl скрипт - PullRequest
       5

DDOS Perl скрипт

0 голосов
/ 27 февраля 2012

Я пытаюсь написать скрипт, который использует tcpdump под openbsd, чем монитор журналов брандмауэра. Моя цель - сгенерировать оповещение, если исходный IP-адрес равен evry line [line duplicate] из вывода tcpdump, пример:

rule 30/0(match): block in on pppoe0: SRCIP:(88.198.46.51) -> DESTIP:(109.226.27.19): ICMP echo request, id 1070, seq 1, length 64
rule 30/0(match): block in on pppoe0: SRCIP:(88.198.46.51) -> DESTIP:(109.226.27.19): ICMP echo request, id 1070, seq 2, length 64
rule 30/0(match): block in on pppoe0: SRCIP:(88.198.46.51) -> DESTIP:(109.226.27.19): ICMP echo request, id 1070, seq 3, length 64
rule 30/0(match): block in on pppoe0: SRCIP:(88.198.46.51) -> DESTIP:(109.226.27.19): ICMP echo request, id 1070, seq 4, length 64
rule 30/0(match): block in on pppoe0: SRCIP:(88.198.46.51) -> DESTIP:(109.226.27.19): ICMP echo request, id 1070, seq 5, length 64
rule 30/0(match): block in on pppoe0: SRCIP:(88.198.46.51) -> DESTIP:(109.226.27.19): ICMP echo request, id 1070, seq 6, length 64
rule 30/0(match): block in on pppoe0: SRCIP:(88.198.46.51) -> DESTIP:(109.226.27.19): ICMP echo request, id 1070, seq 7, length 64
rule 30/0(match): block in on pppoe0: SRCIP:(88.198.46.51) -> DESTIP:(109.226.27.19): ICMP echo request, id 1070, seq 8, length 64

ip 88.198.46.51 - попытка досрочной атаки. мой код пока:

open(SNIFF, "/usr/sbin/tcpdump -s 1024 -enlti pflog0 |");
 while(<SNIFF>){
       $|++;
       $_ =~ /(\d+.\d+.\d+.\d+)(.)(\d{2,5}) (>) (\d+\.\d+\.\d+\.\d+)(.)(\d{2,5})/;
       my ($sip, $port) = ($1, $7);
       my $bad_ip = $sip;
        if($bad_ip eq $p_ip){
            $count++;
            if($count >= 8 && $print){
              print "Attack Detected: $sip\n";
                          system("echo $sip");
                          #system("/sbin/pfctl -f /etc/pf.conf");
                          $print = 0;
            }

1 Ответ

2 голосов
/ 27 февраля 2012

В вашем примере ввода я не вижу ни одной строки, которая соответствует первой части вашего регулярного выражения:

/(\d+\.\d+\.\d+\.\d+)(\.)(\d{2,5})/

(Обратите внимание, что я ожидал, что если вы ищете десятичную точку с точками, что вы действительно хотите \d+\., а не только \d+..)

Вы можете сопоставить (\d+\.\d+\.\d+\.\d+) с вашим вводом, но остальные не будут совпадать.Это твоя проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...