F-SEC | F*ck Security Blog

Hacking, programacion y otras cosas Random.

View on GitHub
23 August 2021

Python Hacking: Programando nuestro geolocalizador de IP

by

Que tal este es el primer Topic de una serie de Topic ligado al Hacking usando Python, en estas series compartire pequeños Topics con codigos para desarrollar tus Scripts y usarlo en tu dia a dia.

En esta ocasion vamos a programar nuestro pequeño Script el cual nos sera util para obtener la ubicacion del servidor de la url o ip que le pasemos como parametro a nuestro Script.

Todos los Scripts que programemos en estas series se lo hara usando Python3 por lo tanto toma encuenta usar Python3.

Herramientas necesarias:

Comencemos

Para este Script vamos a usar el modulo Requests el cual si no lo tienes instalado en tu sistema puedes instalarlo con el siguiente comando pip3 install requests esta libreria nos sera util para interactuar con servidores Web, en este caso para interactuar con el servidor ipinfo.io esta pagina nos permite hacer consultas sobre alguna ip y nos lanza los resultados en formato json (es un formato de texto sencillo para el intercambio de datos) y otras de las ventajas de este formato es que se puede parsear y analizar de forma facil los datos.

Para parsear los datos devuelto por el servidor nosotros vamos a usar el modulo de Python3 llamado json no necesitas instalarlo, este ya viene por default en Python3, y por ultimo vamos a importar el modulo sys y socket para que nuestro Script reciba parametros en este caso la Ip que le indiquemos y el modulo socket convertir las urls en ips.

por lo tanto empezemos importando los modulos necesarios…


import sys
import json
import socket
import requests

UA = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.9 Safari/537.36"

Luego creamos una variable con un diccionario dentro, el cual va hacer el User-Agent que vamos a usar para hacer las consultas al servidor de infoip, tu puedes obtener el User-agent de cualquier otro navegador, pero en mi caso voy a usar el user agent de Chrome sobre una maquina Windows (Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.9 Safari/537.36) este user agent lo obtuve gracias al complemento para firefox User-Agent Spoofer o puedes obtener otro buscando en internet.

Creamos la estructura basica de un Script en Python…

def main(host)
	#...
	
if __name__ == "__main__":
	#...

Vamos a escribir primero dentro del if, en esta parte vamos a obtener los parametros que le pasemos al Script como ser la URL o una IP, tambien vamos a verficar el parametro que le pasemos en caso de ser una URL eliminar el nombre del protocolo (http/https) y solo quedarnos con la direccion por ejemplo, ingresamos https://website.com y solo nos quedariamos con website.com, ya que mas adelante solo vamos a usar la direccion sin el http.

if __name__ == "__main__":
	if len(sys.argv) < 2:
		print ("\nGeoIp 0.1v - 2021")
		print ("\n{} <ip/url>\n".format(sys.argv[0]))
	else:
		target = sys.argv[1]

		if target.startswith("http"):
			target = target.split('/')[2]

		main(target)

Pasemos a la funcion principal la cual se encargara de realizar toda la operacion que nos interesa Esta funcion recibira la ip o url para luego realizar la consulta a ipinfo.io el servidor nos devolvera toda la informacion en formato Json la cual nos sera facil parsear gracias al modulo Json

def main(host):

	host = socket.gethostbyname(host)

	url = "https://ipinfo.io/"+host+"/json"
	r = requests.get(url, headers=UA)
	
	if r.status_code != 200:
			print ("\nError {}\n".format(r.status_code))
	else:
		j = json.loads(r.text)

		ip = j['ip']
		country = j['country']
		city = j['city']
		region = j['region']
		geo = j['loc']
		isp = j['org']
		timezone = j['timezone']
		
		print ("""
GEOIP Version 0.1v

IP: {}
Pais: {}
Ciudad: {}
Region: {}
Geolocalizacion: {}
ISP: {}
Zona Horaria: {}
		""".format(ip, country, city, region, geo, isp, timezone))

Demo:

Listo ya tienes tu pequeña herramienta de geoip lista y funcional, si deseas usarla desde cualquier parte desde tu terminal puedes copiar el Script a la ruta /sbin con el siguiente comando… cp script.py /sbin/ ahora ya tienes tu pequeña herramienta.

Script completo: https://github.com/Fsec-dev/Cursos_Python/blob/main/geoip.py

Bye and Happy Hacking

tags: Programacion, - Python