Alguien me ayuda en el siguiente codigo creado en python a eliminar salidas de 5 consonantes [bcdfghjklmnpqrstvwxyz] continuas, asi como cualquier otra optimizacion basica que consideren enfocado a fuerza bruta pero no tan bruta ya que se intenta excluir las combinaciones poco probables, de repeticiones tipo aaaaaaaa o 5 a mas consonantes continuas.
Saludos
Lo necesito para luego hacer algo como:
#python wordlist.py | aircrack-ng -a 2 -e AP AP-01.cap -w -
#Wordlist Alpha desarrollado en Python by AngelFire
#-----------------------Caracteristicas--------------------------------------------------
#Genera salida de 8 caracteres.
#Se ignoran las combinaciones:
# -que terminan en b,c,f,g,h,j,k,m,p,q,t,v,w,x.
# -de 2 caracteres repetidos continuos; exclusiones
# a considerar(rr, ll, 11, 22, 33, 44, 55, 66, 77, 88, 99, 00)
#Considerar sustituciones de tipos:
#a=@ or A=4
#e=3
#i=1
#o=0
#s=5
#a la hora de crear el char.
#Sustituir en char los caracteres a combinar.
char = 'abcdefghijklmnopqrstuvwxyz'
a = 0
b = 0
c = 0
d = 0
e = 0
f = 0
g = 0
h = 0
#abcdefgh ---> 8 CARACTERES
for a in range(len(char)):
#bcdefgh ---> 7 CARACTERES
for b in range(len(char)):
if char[a]!=char[b]:
#cdefgh ---> 6 CARACTERES
for c in range(len(char)):
if char[b]!=char[c]:
#defgh ---> 5 CARACTERES
for d in range(len(char)):
if char[c]!=char[d]:
#efgh ---> 4 CARACTERES
for e in range(len(char)):
if char[d]!=char[e]:
#fgh ---> 3 CARACTERES
for f in range(len(char)):
if char[e]!=char[f]:
#gh ---> 2 CARACTERES
for g in range(len(char)):
if char[f]!=char[g]:
#h ---> 1 CARACTERES
for h in range(len(char)):
low = char[a]+char[b]+char[c]+char[d]+char[e]+char[f]+char[g]+char[h]
if char[g]!=char[h]:
if char[h]!= 'b':
if char[h]!= 'c':
if char[h]!= 'f':
if char[h]!= 'g':
if char[h]!= 'h':
if char[h]!= 'j':
if char[h]!= 'k':
if char[h]!= 'm':
if char[h]!= 'p':
if char[h]!= 'q':
if char[h]!= 't':
if char[h]!= 'v':
if char[h]!= 'w':
if char[h]!= 'x':
print (low)
import re
patron = ".*[bcdfghjklmnpqrstvwxyz]{5,}.*"
if re.match(texto, patron):
print("hay 5 o más consonantes seguidas")
Creo que eso debería lograrlo, sin mayor conflicto
Como bien te dice :
Cita de: engel lex en 8 Octubre 2017, 08:08 AM
import re
patron = ".*[bcdfghjklmnpqrstvwxyz]{5,}.*"
if re.match(texto, patron):
print("hay 5 o más consonantes seguidas")
Creo que eso debería lograrlo, sin mayor conflicto
Solo, una pequeña puntualización...
if re.match(patron, texto):
print("hay 5 o más consonantes seguidas")
Primero tienes que poner el patron y luego el texto
Cita de: PUAROT en 8 Octubre 2017, 10:22 AM
Como bien te dice :
Solo, una pequeña puntualización...
if re.match(patron, texto):
print("hay 5 o más consonantes seguidas")
Primero tienes que poner el patron y luego el texto
jejeje cierto! lo hice de mente y se me pasó eso
Listo, me dejan sin palabras, muchas gracias quedo asi. Cualquier otra optimizacion pensada en la salida y en condiciones poco probables es bienvenida.
#Wordlist Alpha desarrollado en Python by AngelFire
#-----------------------Caracteristicas--------------------------------------------------
#Genera salida de 8 caracteres.
#Se ignoran las combinaciones:
# -que terminan en b,c,f,g,h,j,k,m,p,q,t,v,w,x.
# -de 2 caracteres repetidos continuos; exclusiones
# a considerar(rr, ll, 11, 22, 33, 44, 55, 66, 77, 88, 99, 00)
# -de 4 caracteres consonantes continuos; exclusiones
# a considerar en 3 caracteres(palabras que terminan en consonante
# y su adyacente comienza por 2 consonantes)
import re
#Cantidad de constantes que no se desean continuas. En este caso 4.
patron = ".*[bcdfghjklmnpqrstvwxyz]{4,}.*"
#Considerar sustituciones de tipos:
#a=@ or A=4, e=3, i=1, o=0, s=5, a la hora de crear el char.
#Sustituir en char los caracteres a combinar.
char = 'abcdefghijklmnopqrstuvwxyz'
a = 0
b = 0
c = 0
d = 0
e = 0
f = 0
g = 0
h = 0
i = 0
#abcdefgh ---> 8 CARACTERES
for a in range(len(char)):
#bcdefgh ---> 7 CARACTERES
for b in range(len(char)):
if char[a]!=char[b]:
#cdefgh ---> 6 CARACTERES
for c in range(len(char)):
if char[b]!=char[c]:
#defgh ---> 5 CARACTERES
for d in range(len(char)):
if char[c]!=char[d]:
#efgh ---> 4 CARACTERES
for e in range(len(char)):
if char[d]!=char[e]:
#fgh ---> 3 CARACTERES
for f in range(len(char)):
if char[e]!=char[f]:
#gh ---> 2 CARACTERES
for g in range(len(char)):
if char[f]!=char[g]:
#h ---> 1 CARACTERES
for h in range(len(char)):
low = char[a]+char[b]+char[c]+char[d]+char[e]+char[f]+char[g]+char[h]
if char[g]!=char[h]:
if char[h]!= 'b':
if char[h]!= 'c':
if char[h]!= 'f':
if char[h]!= 'g':
if char[h]!= 'h':
if char[h]!= 'j':
if char[h]!= 'k':
if char[h]!= 'm':
if char[h]!= 'p':
if char[h]!= 'q':
if char[h]!= 't':
if char[h]!= 'v':
if char[h]!= 'w':
if char[h]!= 'x':
if re.match(patron, low):
i=i+1
else:
print (low)
Tener tantos for anidados no es eficiente par que el primer for llegué a b la línea Donde se asigna low habrá sido ejecutada 282.429.536.481 veces por eso para ese tipo de cosa no se usan tanto ciclos, sino fórmulas matemáticas tal que los ciclos se hagan en casos excepcionales