Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- # Easy port scanner
- # ./scanner.pl
- use Socket;
- $| = 1; # so \r works right
- my ($ip, $protocol, $port, $myhouse, $yourhouse, $log);
- $protocol = getprotobyname('tcp');
- ($ip, $port, $port_stop, $log) = @ARGV;
- if ($ip eq "-h") {
- &usage();
- }
- $ip = "localhost" if not $ip;
- $port = 1 if not $port;
- $port_stop = 1024 if not $port_stop;
- $log = "qsopenports.txt" if not $log;
- unless (open(LOG_FILE, ">>$log")) {
- die "Can't open log file $log for writing: $!\n"
- }
- # Make file handle hot so the buffer is flushed after every write
- select((select(LOG_FILE), $| = 1)[0]);
- print LOG_FILE "The following ports are open on $ip between port $port and $port_stop\n\n";
- print "Checking $ip for open ports..\n";
- for (; $port < $port_stop; $port += 1) {
- socket(SOCKET, PF_INET, SOCK_STREAM, $protocol);
- $yourhouse = inet_aton($ip);
- $myhouse = sockaddr_in($port, $yourhouse);
- if (!connect(SOCKET, $myhouse)) {
- printf "%d\r", $port;
- } else {
- printf "%d <- open\n", $port;
- print LOG_FILE "$port\n";
- close SOCKET || die "close: $!";
- }
- }
- close LOG_FILE || die "close: $!";
- printf "QuickScan complete.\n";
- printf "Those are the open ports for: $ip\n";
- sub usage() {
- print "Usage: ./quickscan [host] [start port] [stop port] [logfile]\n";
- print "Defaults to localhost and port 1 and port 1024 qsopenports.txt\n";
- exit 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement