hizel писал(а):поражаюсь когда в рассылке кто-то отвечает ^_^
а ты же эти сиськи писал...
через perl, python оно будет быстрее
http://ss.lg.ua/node/591
Код: Выделить всё
#!/usr/local/bin/perl
use Socket;
use constant IPPROTO_RAW => 255;
$iaddr = inet_aton ('192.168.139.1');
$paddr = sockaddr_in (80, $iaddr); #80 - порт назначения
socket(SOCKET, PF_INET, SOCK_RAW, IPPROTO_RAW) or die "Can't open raw socket: $!\n";
$packet = undef;
$packet .= pack("C", 69);
$packet .= pack ("H2", '00');
$packet .= pack ("n", 28);
$packet .= pack ("n", 0);
$packet .= pack ("H4", '4000');
$packet .= pack ("C", 64);
$packet .= pack ("C", getprotobyname('udp'));
$packet .= pack ("n", 0);
$source_ip = '207.46.197.32';
$result_source_ip = undef;
for (split('\.', $source_ip)){ #разбиваем по точкам
$result_source_ip .= pack ("C", $_)
}
$packet .= $result_source_ip;
$destination_ip = '192.168.139.1';
$result_destination_ip = undef;
for (split('\.', $destination_ip)){ #разбиваем по точкам
$result_destination_ip .= pack ("C", $_)
}
$packet .= $result_destination_ip;
$packet .= pack ("n", 25); #порт источника
$packet .= pack ("n", 80); #порт назначения
$packet .= pack ("n", 8);
$packet .= pack ("H4", '0000');
while(){
send(SOCKET, $packet, 0, $paddr) or die "Can't send packet: $!\n";
sleep 1; #поспим некоторое время, чтобы не сильно DoS'ить сеть.
}
тут нужно как-то поменять и отправить таблицу и ip
Код: Выделить всё
s=socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
47
if(s<0){
48
PyErr_SetString(IPFWError, "socket fail");
49
return NULL;
50
}
51
i = setsockopt(s, IPPROTO_IP, IP_FW_TABLE_ADD, &ent, sizeof(ent));
52
if(i && errno != EEXIST){ // Allow add existent entry
53
PyErr_SetString(IPFWError, "setsocket fail");
54
close(s);
55
return NULL;
56
}
57
close(s);