该脚本我总觉得有问题,但是一直都没想到好的办法解决。
例如扫描结束以后,端口链接还在。
#!/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;