« Apache 防止圖片外連(盜連) [Ajax] 實作 Gmail 的載入訊息 »

五月2

[Perl] Port Scanner

tags | 1,849 views


這是課堂上練習的程式,可以掃瞄某主機哪些 Port 有開放。
利用 Perl::Socket 建立 socket 後 connent() 主機,如果回應 true 表示連線正確 (Port 有開啟)。
使用方法:
portscan.pl <主機名稱>

#!/usr/bin/perl
use strict;
use Socket;
 
my $host = shift;
print "Enter scan port start:";
my $port = <>;
print "Enter scan port end:";
my $port_end = <>;
 
my $protocol = getprotobyname('tcp');
$host = inet_aton($host) or die "$host failed";
 
for (my $i = $port; $i <= $port_end; $i++) {
    
socket(SOCK , AF_INET , SOCK_STREAM , $protocol) or die "socket() failed: $!";
    
my $dest_addr = sockaddr_in($i , $host);
    
if (connect(SOCK , $dest_addr)) {
        
print "Port: $i is open\n";
    
}
    
close SOCK;
}
Trackback:

Leave a Reply