domingo, 16 de junio de 2013

Script de geolocalizacion de multiples IP's

En ocasiones necesitamos analizar la localizacion de multiples IP's, por ejemplo en la revisión de los logs de un evento de seguridad, para ello existen muchos recursos excelentes como http://ip-adress.com/ el cual utilizo a menudo, sin embargo estos servicios son de pago para la identificacion de multiples IP's, existe un servicio gratuito en freegeoip.net para obtener datos de una IP en particular, en esta ocasion adjunto un script que permite obtener la localizacion y otros datos de freegeoip para multiples direcciones escrito en python:

 # -*- coding: utf-8 -*-  
 # Python  
 # Script para localización geográfica de IP - Boris Murillo  
 import sys  
 import re  
 import string  
 import httplib  
 import urllib2  
 import re  
 # Contruccion de la conexion a través de proxy  
 proxy_info = {  
 'user' : '',  
 'pass' : '',  
 'host' : "localhost",  
 'port' : 8080  
 }  
 proxy_support = urllib2.ProxyHandler({"http" : "http://%(user)s:%(pass)s@%(host)s:%(port)d" % proxy_info})  
 # Funcion para verificar si no es una IP interna  
 def ip_interno(ip):  
      if ip[0] == "10" and ip[2] == ".":  
           return True  
      else: return False  
 # Funcion de consulta de IP  
 def buscar_ip(dir_ip):  
      try:  
           results = 'http://freegeoip.net/csv/'+str(dir_ip)  
           request = urllib2.Request(results)  
           request.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0')  
           opener = urllib2.build_opener(proxy_support, urllib2.HTTPHandler)  
           urllib2.install_opener(opener)  
           text = opener.open(request).read()  
           return text  
      except IOError:  
           print "No es posible conectarse con el proveedor"+""  
 # Uso de la herramienta  
 if len(sys.argv) != 2:  
     print "\nObtiene la Localizacion Geografica de una Direccion IP.\n"  
     print "\nUso : ./localizar.py <ARCHIVO_CON_IP's>\n"  
     sys.exit(1)  
 archivo=sys.argv[1]  
 # Lanzamiento de programa            
 ins = open( archivo, "r" )   
 for ip in ins:   
      if ip_interno(ip) == False:  
           print buscar_ip(ip)  

Para lanzar la herramienta basta con ejecutar el archivo localizar.py seguido del nombre del archivo con las direcciones IP

Saludos

No hay comentarios:

Publicar un comentario