点击(此处)折叠或打开
- #!/usr/bin/perl -w
- # name:Ping.pl
- # 以syn协议检测目标,
- # 来源: Lover的工具小屋
- # author: Lover
- use strict;
- use Net::Ping;
- my @hosts = qw(xx100.my4399.com xx10.my4399.com);
- =pod
- my ($host,$rtt,$ip);
- my $p = Net::Ping->new('syn');
- $p->port_number(80);
- # 这里演示syn的用法
- foreach $host (@hosts){
- # 对方收到俺的syn之后进入syn_recv状态,在等待俺给回一个ack
- $p->ping($host);
- }
- # 这里给对方发送了一个ack包,以结束对方的syn_recv的状态,防止将没有对syn攻击进行防范的主机拖进很难堪的境地
- while (($host,$rtt,$ip) = $p->ack) {
- print("HOST: $host [$ip] ACKed in $rtt seconds.\n");
- }
- $p->close();
- =cut
- # 用icmp协议来检测主机
- my $p = Net::Ping->new('icmp');
- my ($host,$ret,$duration,$ip);
- # 显示开启响应时间处理函数,以微秒为单位
- $p->hires(1);
- foreach $host (@hosts){
- ($ret,$duration,$ip) = $p->ping($host,1);
- if ($ret){
- printf("$host [$ip] is alive (packet return time: %0.2f ms)\n",1000*$duration);
- }else{
- printf("$host [$ip] is down\n");
- }
- }
- $p->close();