[Perl] Port Scanner

五月 2nd, 2006

這是課堂上練習的程式,可以掃瞄某主機哪些 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;
}

Other, 程式筆記

  1. No comments yet.
  1. No trackbacks yet.