Charter III: LOCALIZANDO AL ISP
Continuando con la saga trabajaremos para localizar IPS: ciudad, país, coordenadas, región y sobre todo el ISP. Para ello necesitaremos manejar json para ello usaremos esta web link para mejorar la perspectiva que se tiene de dicho archivo:
Continuando con la saga trabajaremos para localizar IPS: ciudad, país, coordenadas, región y sobre todo el ISP. Para ello necesitaremos manejar json para ello usaremos esta web link para mejorar la perspectiva que se tiene de dicho archivo:
{"as":"AS6147 Telefonica del Peru S.A.A.","city":"Lima","country":"Peru","countryCode":"PE","isp":"Telefonica del Peru","lat":-12.05,"lon":-77.05,"org":"Telefonica del Peru","query":"190.40.128.190","region":"LMA","regionName":"Provincia de Lima","status":"success","timezone":"America/Lima","zip":""}
Esta información será útil recogeremos los siguiente:
print (IP, Country, City, regionName, IPS,Latitud, Longitud)
El resultado sera el siguiente, no olvidaras el archivo logGeo.txt para almacenar errores:
#!/usr/bin/python3.4 from bs4 import BeautifulSoup import socket, urllib, sys, os, time, json, nmap, os, optparse, MySQLdb, socket, sys from json import loads from urllib.request import urlopen import urllib.request #Importamos MYSQL import http.client from datetime import datetime from concurrent.futures import ThreadPoolExecutor from datetime import datetime THREADS = 512 CONNECTION_TIMEOUT = 1 t1 = datetime.now() repet = 50000 dormir=int(2) myhost="localhost" usuario="root" password="" database="dbdata" print("-"*80) print("---------GEOLICALIZANDO LA DIRECCIONES IP------------------") print("-"*80) t1 = datetime.now() print("TIEMPO INICIO:" +time.strftime('%Y/%m/%d %H:%M:%S')) def escritura(texto): try: outfile = open('logGeo.txt', 'a') outfile.write(str(texto)) outfile.close() print ("[DETEC] "+time.strftime('%Y/%m/%d %H:%M:%S') +" [!] REGISTRADO EN EL LOG INSERT_LOG: ") except ValueError: print ("[ERROR] " +time.strftime('%Y/%m/%d %H:%M:%S') +" [!] ERROR ERROR AL MOMENTO DE SER EVALUADO def ESCRITURA()") except: print ("[ERROR] " +time.strftime('%Y/%m/%d %H:%M:%S') +" [!] ERROR ESCRITURA: ", sys.exc_info()[0]) def geoIp(IP): try: return urlopen("http://ip-api.com/json/" + str(IP)).read().decode('utf-8') except ValueError: print ("[ERROR] " +time.strftime('%Y/%m/%d %H:%M:%S') +" [!] ERROR AL MOMENTO CONSULTAR IP") escritura(time.strftime('\n%Y/%m/%d %H:%M:%S') +" [!] ERROR EVALUAR geoIp " + str(IP)) except: print ("[ERROR] " +time.strftime('%Y/%m/%d %H:%M:%S') +" [!] ERROR INSERT_GEOIP: ", sys.exc_info()[0]) escritura(time.strftime('\n%Y/%m/%d %H:%M:%S') +" [!] ERROR AL MOMENTO DE SER EJECUTADO [--->] def geoIp(): " + str(IP)) def insert_datos_new(IP): try: ip_cut =IP.split('.') data_geoIP = geoIp(IP) data_geoIP = json.loads(data_geoIP) Country = data_geoIP["country"] City = data_geoIP["city"] regionName = data_geoIP["regionName"] countryCode = data_geoIP["countryCode"] ISP = data_geoIP["isp"] Latitud = data_geoIP["lat"] Longitud = data_geoIP["lon"] conn = MySQLdb.connect(host= myhost, user=usuario, passwd=password, db=database) cursor1 = conn.cursor() cursor1.execute("""UPDATE python SET Country=%s ,City=%s, regionName=%s, ISP=%s, Latitud=%s, Longitud=%s WHERE Country='' AND id=%s""",[Country, City, regionName,ISP,Latitud,Longitud,IP]) conn.commit() conn.close() print ("[INFO] "+time.strftime('%Y/%m/%d %H:%M:%S') +" [RANGO IP:] " +'\x1b[6;30;44m'+ str((ip_cut[0]+"."+ip_cut[1]+"."+ip_cut[2]+"."+'%')) +" - INSERT GEO NEW"+'\x1b[0m') except ValueError: print ("[ERROR] " +time.strftime('%Y/%m/%d %H:%M:%S') +" [!] ERROR AL MOMENTO DE SER EVALUADO def insert_datos_new") escritura(time.strftime('\n%Y/%m/%d %H:%M:%S') +" [!] ERROR EVALUAR insert_datos_new"+ str(IP)) except: print ("[ERROR] " +time.strftime('%Y/%m/%d %H:%M:%S') +" [!] ERROR insert_datos_new: ", sys.exc_info()[0]) escritura(time.strftime('\n%Y/%m/%d %H:%M:%S') +" [!] ERROR AL MOMENTO DE SER EJECUTADO [--->] def insert_datos_new(IP):"+ str(IP)) def insertar_datos_find(Country, City, regionName,ISP,Latitud,Longitud,IP): try: ip_cut =IP.split('.') conn = MySQLdb.connect(host= myhost, user=usuario, passwd=password, db=database) cursor1 = conn.cursor() cursor1.execute("""UPDATE python SET Country=%s ,City=%s, regionName=%s, ISP=%s, Latitud=%s, Longitud=%s WHERE Country='' AND id LIKE %s """,[Country, City, regionName,ISP,Latitud,Longitud,(ip_cut[0]+"."+ip_cut[1]+"."+ip_cut[2]+"."+'%')]) conn.commit() conn.close() print ("[INFO] "+time.strftime('%Y/%m/%d %H:%M:%S') +" [RANGO IP:] " +'\x1b[6;30;43m'+ str((ip_cut[0]+"."+ip_cut[1]+"."+ip_cut[2]+"."+'%')) +" - UPDATE GEO OLD"+'\x1b[0m') except ValueError: print ("[ERROR] " +time.strftime('%Y/%m/%d %H:%M:%S') +" [!] ERROR AL MOMENTO DE SER EVALUADO def insertar_datos_find") escritura(time.strftime('\n%Y/%m/%d %H:%M:%S') +" [!] ERROR EVALUAR def insertar_datos_find"+ str(IP)) except: print ("[ERROR] " +time.strftime('%Y/%m/%d %H:%M:%S') +" [!] ERROR def insertar_datos_find ", sys.exc_info()[0]) escritura(time.strftime('\n%Y/%m/%d %H:%M:%S') +" [!] ERROR AL MOMENTO DE SER EJECUTADO [--->] def insertar_datos_find(ip_address,port)"+ str(IP)) def buscar_geop_insert(IP): try: ip_cut =IP.split('.') conn = MySQLdb.connect(host= myhost, user=usuario, passwd=password, db=database) cursor1 = conn.cursor() cursor1.execute("""SELECT Country, City, regionName,ISP,Latitud,Longitud FROM python WHERE id LIKE %s AND Country!=''""",[ip_cut[0]+"."+ip_cut[1]+"."+ip_cut[2]+"."+'%']) result = cursor1.fetchone() if result is not None: insertar_datos_find(result[0],result[1],result[2],result[3],result[4],result[5],IP) else: insert_datos_new(str(IP)) conn.commit() conn.close() except ValueError: print ("[ERROR] " +time.strftime('%Y/%m/%d %H:%M:%S') +" [!] ERROR AL MOMENTO DE SER EVALUADO def buscar_geop_insert") escritura(time.strftime('\n%Y/%m/%d %H:%M:%S') +" [!] ERROR EVALUAR def buscar_geop_insert"+ str(IP)) except: print ("[ERROR] " +time.strftime('%Y/%m/%d %H:%M:%S') +" [!] ERROR def buscar_geop_insert ", sys.exc_info()[0]) escritura(time.strftime('\n%Y/%m/%d %H:%M:%S') +" [!] ERROR AL MOMENTO DE SER EJECUTADO [--->] def buscar_geop_insert(ip_address,port)"+ str(IP)) #result = cur.fetchone() def main(): try: for i in range(repet): print("ESTA ES LA REPETICION N: "+ str(i) +" de "+str(repet)) conn = MySQLdb.connect(host= myhost, user=usuario, passwd=password, db=database) cursor1 = conn.cursor() cursor1.execute("""SELECT nreg,id FROM python WHERE Country="" GROUP BY(id) ORDER BY nreg ASC LIMIT 1""") result = cursor1.fetchall() for row in result: buscar_geop_insert(row[1]) conn.close() time.sleep(dormir) t2 = datetime.now() total = t2 - t1 print("-------------------------------------------------------") print("TIEMPO FINALIZADO: "+time.strftime('%Y/%m/%d %H:%M:%S')) print("TIEMPO TOTAL:" + str(total)) except ValueError: print ("[ERROR] " +time.strftime('%Y/%m/%d %H:%M:%S') +" [!] ERROR AL MOMENTO DE SER EVALUADO def MAIN_STATUS") escritura(time.strftime('\n%Y/%m/%d %H:%M:%S') +" [!] ERROR EVALUAR def MAIN_STATUS") except: print ("[ERROR] " +time.strftime('%Y/%m/%d %H:%M:%S') +" [!] ERROR def MAIN_STATUS ", sys.exc_info()[0]) escritura(time.strftime('\n%Y/%m/%d %H:%M:%S') +" [!] ERROR AL MOMENTO DE SER EJECUTADO [--->] def MAIN_STATUS(ip_address,port)") if __name__ == "__main__": main()Continuará......
No hay comentarios. :
Publicar un comentario