首页 > 学技术 > 技术网文 > Perl > 正文

[精华] perl script for scan TCP ports .


来源 chinaunix.net kuqin整理

A simple perl script that scans a machine for reachable TCP ports.


#!/usr/bin/perl

$|=1;
$tghost = shift || $ENV{"HOSTNAME"};
$maxprt = shift || 1024;

$AF_INET=2;
$SOCK_STREAM=1;
$sockaddr='S n a4 x8';

($name,$aliases,$proto)=getprotobyname('tcp');
foreach $port (1 .. $maxprt)
{
($name,$aliases,$type,$len,$thataddr)=gethostbyname($tghost);
$this=pack($sockaddr,$AF_INET,0,$thisaddr);
$that=pack($sockaddr,$AF_INET,$port,$thataddr);

die "unknown host $tghost\n" if($thataddr eq "");

socket(S,$AF_INET,$SOCK_STREAM,$proto) or die $!;
bind(S,$this) or die $!;

if(connect(S,$that))
{
($srv_name, $srv_aliases, undef, undef)=getservbyport($port,'tcp');

printf("%5d %s\n", $port, $srv_name || "unknown serv");

close(S);
}

}

exit 0;




 雨中漫步 回复于:2003-09-01 15:03:02

perl socket编程,俺用的很少,学习一下!
这里真是高手如云呀!除了俺:)


 juey 回复于:2006-04-23 17:52:20

if(connect(S,$that))   这里  目标机器如果连不上  要等待好久 好久   甚至根本就不返回连接失败了    能设置TIMEOUT吗




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=152203
转载请注明作者名及原文出处



收藏本页到: