Perl端口扫描

该脚本我总觉得有问题,但是一直都没想到好的办法解决。

例如扫描结束以后,端口链接还在。

#!/usr/bin/perl
#data:2012/11/19
#port scan demo
use Socket;
system('clear');                                              
print "Enter IP: ";
my $x;
my $servip = <STDIN>;
chop $servip;
for($a=0;$a<=65000;$a++) {
    $ip_addr = sockaddr_in($a, inet_aton($servip));
    $protocol = getprotobyname("tcp");
socket(SOCK, PF_INET, SOCK_STREAM, $protocol);
if(connect(SOCK, $ip_addr))
    {
         print "[#] Port " . $a . " open\n";
         $x++;
         close(SOCK);
        }
         else {
         close(SOCK);
          }      
}

sub Services
{
    @open_ports = ($a);
      
    foreach $openports(@open_ports) {
	    $ipaddr = sockaddr_in($openports, inet_aton($servip));
  	    $prot2 = getprotobyname("tcp");
	    socket(SCK2, PF_INET, SOCK_STREAM, $prot2);
	    connect(SCK2, $ipaddr);
	    recv(SCK2, $buff, 750, 0); #recv information
	    print($buff);  
    }
}
    print "[+] Scan Finished!\n";
    print "\nResults:\n===================\n";
    print "Number of open ports: " . $x . "\n";
&Services;

 

posted @ 2013-02-26 22:00  墨迹哥's  阅读(382)  评论(0编辑  收藏  举报