#!/usr/bin/python ## ip-region : v0.2 ## http://devsec.org/software/misc/ip-region ## ip-region is a simple command to lookup an IPv4 address in the ## blackholes.us dns lists to determine the IP's country/region. ## ## I use it like this: ## ## ./ip-region 127.0.0.2 ## ## - Thor Kooda ## 2006-08-09 import sys import socket import struct import DNS def bail( str, err = 1 ): sys.stderr.write( str ) sys.exit( err ) def invert_ipv4( ipv4_str ): ip = struct.unpack( "BBBB", socket.inet_aton( ipv4_str ) ) return "%d.%d.%d.%d" % ( ip[3], ip[2], ip[1], ip[0] ) if len( sys.argv ) != 2: bail( "Usage: %s \n" % sys.argv[ 0 ] ) ipv4_str = sys.argv[ 1 ] try: socket.inet_aton( ipv4_str ) except: bail( "error: invalid ip: ", ipv4_str ) ipv4_istr = invert_ipv4( ipv4_str ) DNS.ParseResolvConf() r = DNS.DnsRequest( name = ipv4_istr + ".countries.blackholes.us." , qtype = "TXT" ) a = r.req() for i in a.answers: if i['typename'] == "TXT": print ipv4_str, ":", ' '.join( i['data'] )