Home page logo
/

nanog logo nanog mailing list archives

Re: Full Internet ASN <--> AS Name resolution
From: Mike Leber <mleber () he net>
Date: Fri, 6 Jun 2003 19:30:13 -0700 (PDT)



On Fri, 6 Jun 2003, Mourad BERKANE wrote:
Hi NANOGers,
 
Could someone forward me a .txt file including FULL INTERNET (ARIN + RIPE +
APNIC) ASN <--> AS Name resolution table?
 
I don't want to compile following regional dbase :-)
 
 <ftp://ftp.arin.net/netinfo/asn.txt> ftp://ftp.arin.net/netinfo/asn.txt
 <ftp://ftp.apnic.net/pub/apnic/dbase/data/rpsl>
ftp://ftp.apnic.net/pub/apnic/dbase/data/rpsl 
 <ftp://ftp.ripe.net/ripe/dbase/> ftp://ftp.ripe.net/ripe/dbase/ 

Here is something I wrote that generates the .txt file you are looking
for.  It's a hack.  No appologies or warranties provided.  ;)

It is based on the original script provided earlier by Hroi Sigurdsson
(thank you):

#!/usr/bin/perl
# extractasnames.pl
# By Mike Leber 06/06/2003
# Original By Hroi Sigurdsson
# as is, no warranty, use at your own risk.

use strict;

use Net::FTP;

my $gVerbose = $ARGV[0] eq "-v";

my @sources = qw(
ftp://ftp.ripe.net/ripe/dbase/split/ripe.db.aut-num.gz
ftp://ftp.apnic.net/public/apnic/whois-data/APNIC/split/apnic.db.aut-num.gz
ftp://ftp.radb.net/radb/dbase/arin.db.gz
ftp://ftp.radb.net/radb/dbase/radb.db.gz
ftp://ftp.arin.net/info/asn.txt
);

my %autnums;

for my $source ( @sources )
{
        read_file( $source );
}

map {printf "%d: %s\n" ,$_ ,$autnums{$_}} sort {$a <=> $b} keys %autnums;

exit(0);

sub read_file
{
        my( $source ) = @_;

        print "$source\n" if $gVerbose;

        my $host;
        my $file;
        my $remotefile;

        ($host,$remotefile) = ( $source =~ /^ftp:\/\/([^\/]+)\/(.*)$/ );

        system( "mkdir data" ) if ! -e "data";

        my $localfile;
        ($localfile) = ( $remotefile =~ /\/([a-z\.\-]+)$/ );
        $localfile = "data/$localfile";

        print "host: $host rfile: $remotefile lfile: $localfile\n"
                if $gVerbose;

        my ($dev,$ino,$mode,$nlink,$uid,$gid,
                $rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks)
                = stat( $localfile );

        # refresh atleast once a month.

        if ( (! -e $localfile) || time - $mtime > 30 * 24 * 3600 )
        {
                my $ftp = Net::FTP->new($host)
                        || die "Can't connect: $ () \n";
                $ftp->login("anonymous","me\ () me com")
                        || die "Couldn't login\n";
                $ftp->type("I")
                        || die "Couldn't change type to binary\n";
                $ftp->get($remotefile,$localfile)
                        || die "Couldn't get $remotefile\n";
                $ftp->quit();
                print "successfully FTP'd $remotefile\n"
                        if $gVerbose;
        }

        my $lines = 0;

        if  ( $localfile =~ /\.gz$/ )
        {
                open( FILE, "gzip -d -c $localfile |" )
                        || die "Unable to open $localfile";

                my $autnum = 0;
                my $descr  = '';

                while (<FILE>)
                {
                        if(/^aut-num:\s+AS(\d+)$/)
                        {
                                $autnum = $1;
                        }

                        if($autnum && /^descr:\s+(.*)$/)
                        {
                                $descr = $1;
                                $autnums{$autnum} = $descr;
                                $autnum = 0;
                        }

                        $lines++;
                }

                close FILE;
        }
        else
        {
                open( FILE,  "< $localfile" )
                || die "Unable to open $localfile";

                while (<FILE>)
                {
                        if(/^\s+(\d+)\s+(\S+)\s/)
                        {
                                my $autnum = $1;
                                my $descr = $2;
                                $autnums{$autnum} = $descr;
                        }

                        $lines++;
                }

                close FILE;
        }

        print "lines: $lines\n"
                if $gVerbose;
}


+----------------- H U R R I C A N E - E L E C T R I C -----------------+
| Mike Leber           Direct Internet Connections   Voice 510 580 4100 |
| Hurricane Electric     Web Hosting  Colocation       Fax 510 580 4151 |
| mleber () he net                                       http://www.he.net |
+-----------------------------------------------------------------------+





  By Date           By Thread  

Current thread:
[ Nmap | Sec Tools | Mailing Lists | Site News | About/Contact | Advertising | Privacy ]