#!/usr/bin/perl

package FtpScanner;

use strict;
use lib 'lib';
use Nmap::Scanner;
use Nmap::Scanner::Util::BannerScanner;
use vars qw(@ISA);

@ISA = qw(Nmap::Scanner::Util::BannerScanner);

sub new {

    my $class = shift;
    my $self  = $class->SUPER::new();

    $self->regex('^\d+ (.*)$');
    $self->add_scan_port(21);
    $self->add_target($_[0] || die "Need target in constructor!\n");

    return bless $self, $class;
}

1;

use lib 'lib';

my $ftp = FtpScanner->new($ARGV[0] || 'localhost');
$ftp->register_banner_found_event(
    sub { 
        shift; 
        my @addresses = $_[0]->addresses();
        print $_[0]->hostname()," ( ";
        for my $a (@addresses) {
            print $a->addr()," ";
        }
        print "): $_[1]\n";
    }
);

my $hosts = $ftp->scan()->get_host_list;

while ($hosts->get_next()) { print $_->name()."\n" if $_};