Algoritmo para crear diccionario
Hola chic@s vengo rogando ayuda jajaja. Hace unas horas me encontraba haciendo una prueba de penetración a mi red WPA2-PSK utilizando la herramienta aircrack-ng. El método para realizar la penetración consiste en obtener un handshake mediante la des-autentificacion de alguna maquina cliente conectada al punto de acceso. Cuando se obtiene este dato se pueden utilizar varias formas para obtener la contraseña, entre ellas utilizar diccionarios.
Entonces para continuar con la prueba de penetración era necesario obtener un diccionario. Encontré unos pero eran bastantes pequeños. Y luego encontré uno enorme de 12.6 GB O.o y pues mi red no da para descargar algo de ese tamaño. Y se me ocurrió que al fin de cuentas son palabras y que podría hacer algún programa que generara de manera aleatoria palabras y se guardaran en un txt. Pero para generar un diccionario decente debe ser un buen algoritmo y yo estoy bien pollo en eso. Y pues a la mejor alguien me pueda dar la mano con esto porque ya me atore en la prueba XD
PD: Creo que aunque se trata de una prueba de penetración a una red, lo que ya me dejo inquieto es crear un diccionario.
Saludos.
- Inicie sesión o regístrese para enviar comentarios
que onda .. creo que lo que
que onda ..
creo que lo que necesitas es un algoritmo de combinación para que te genere todas las posibles combinaciones que se forman con un alfabeto y con una determinada cantidad de caracteres y de ahí te saldrán algunas palabras. en Internet hay muchos algoritmos para eso.
por ejemplo 2 caracteres puras letras minúsculas..
aa
ab
ac
..
az
ba
..
zz
etc
creo que te saldrá mas factible bajarte un diccionario en lugar de esperar a que terminen el algoritmo de generar palabras que en la mayoría no serian palabras si no letras al azar. y suponiendo que la contraseña tenga números, letras minúsculas o mayúsculas el calculo sera mas grande.
solo haz números:
26 letras (sin la ñ)x2 (mayúsculas y minúsculas) + 10 números (0-9) = 62 caracteres de tu alfabeto
ahora hacer que el algoritmo saque las combinaciones posibles con 5 letras de esos 62 caracteres
62^5 = 916132832 * 2bytes = 1.7 GB pesaría tu archivo. a menos que tengas una computadora de gama alta no te llevaría mas de 1 hora de lo contrario no seria factible y mira que solo con 5 letras imagínate con 10.
mi sugerencia bájate ese diccionario que dices o búscate uno menos pesado en todo caso te llevaría menos tiempo que generar uno por muy optimizado que este tu algoritmo.
ahora otra sugerencia, no estoy seguro pero Word tiene entre sus archivos de instalación el diccionario en español y en texto plano del cual hace uso para la revisión de ortografía, también el programa opera guarda un diccionario en texto plano del que hace uso al igual que word, OpenOffice tambien tiene uno, seria bueno que buscaras esos, mas que nada por que ahi son puras palabras que vienen aun que traen los acentos y eso, pero te puede servir.
Si pues es lo que estaba
Si pues es lo que estaba viendo, me toco recordar los temas sobre probabilidad y estadística.. Ya había hecho los cálculos de las permutaciones con repetición, me desanime cuando vi los resultados jajaja. Tu dices que 62 caracteres pero todavía faltan los caracteres especiales.Y creo, con temor a equivocarme que la encriptacion soporta cualquier caracter de la tabla ASCII, entonces, la longitud del conjunto es de 256 caracteres. Y la longitud máxima soportada por la encriptacion son 63 caracteres. Por lo tanto;
256 ^ 63 = 52374249726338269920211035149241586435466272736689036631732661889538140742474792878132321477214466514414186946040961136147476104734166288853256441430016 permutaciones con repetición.
Creo que en verdad lo mejor seria descargar el de las 12.6 GB
cierto se me paso los
cierto se me paso los caracteres especiales, pero es bastante raro que alguien los use aun que si es alguien paranoico pues ten por seguro que tendrá alguno.
creo que para este tipo de casos seria mejor usar la ingeniería social para tratar de averiguar una password xD
o como te dije busca los diccionarios de esos programas, podrías crearte un programa que busque las palabras con acento y las vaya descartando, seria mas factible aun, tratar de probar si entre las palabras que queden se encuentra la contraseña.
la verdad para este tipo de casos es mas factible crackear mediante ingeniería social
Thx :)
Bueno no se si sea mas factible obtener la contraseña por ingeniería social. El handshake lo obtuve en 1:30 min. Y pues la cosa es que aun mediante diccionario o por fuerza bruta con John The Ripper me tardaría bastante, mucho mas aun con john,
Pero deja ver que onda con lo que me dices, javamexico nuevo centro de seguridad informatica XD
Saludos ;)
guardarlas?
Para qué guardarlas? Podrías irlas probando mientras las generas... Y sí, siempre es más fácil por ingeniería social, la bronca de eso está en la parte social, jeje ya que muchos programadores somos altamente deficientes en ese aspecto.
Re: guardarlas?
Ah pues si cierto, si uso las tuberías no necesitaría guardarlas aunque nunca lo he hecho con uno de mis programas. La cosa esta en que ocupo primero hacer el algoritmo. Revise uno que encontré en la red, utiliza recursion y con mas de 12 caracteres se llena la memoria jaja.
Por eso dije que no estaba muy seguro de la ingeniería social, aunque a la mejor no es tan difícil hacerme pasar por un empleado de su ISP y hacerle unas cuantas preguntas de "rutina". Eso estaría bien para hacerlo a alguien mas pero, aquí estoy intentando penetrar mi propia red.
"aquí estoy intentando
"aquí estoy intentando penetrar mi propia red." jajaja jaja y no es burla pero me hizo reír enserio, bueno pues tu sabrás que tanta seguridad le pones y te darás una idea del tipo de fuerza bruta, para esos algoritmos la recursion no es muy buena ya que como dices desborda la memoria, lo mejor seria que te avientes un algoritmo anidando muchos for que es precisamente lo que evita la recursion, o en su defecto si haces un programa en C, hacerlo mediante punteros y accesos a memoria en lugar de for, que podría ser mucho mas rápido o ya puestos muy cabrones en assembler XD .
otras cosas que se me ocurren es si tienes alguna tarjeta gráfica potente programar en su api para aprovechar el paralelismo, también podrias contratar un servicio en la nube que te haga el calculo, azure, amazon no se jaja, esto ya es muy loco pero en fin.
tiene razón ezamudio generar y probar eso esta mejor, solo por curiosidad y si tienes tiempo, te dejo esta contraseña:
kYhn81R
prueba con fuerza bruta haber cuanto tarda en salir, seria bueno que alguien escribiera un algoritmo que ocupe caracteres alfanumericos mayúsculas y minúsculas y pruebas. tambien que nos dejes las características de tu equipo, haber que tal.
un saludo
Pues al menos mis desgracias
Pues al menos mis desgracias causan las gracia de otros XD, bueno, Fíjate que estaba leyendo sobre CUDA mi tarjeta Nvidia lo soporta y se puede hacer en java.
Mi equipo tiene las siguientes características:
MOTHERBOARD: ECS Modelo A790GXM-AD3
CPU: AMD Phenom II X4 955 3.2 Ghz
RAM: 8 GB DDR3
Video: NVIDIA GeForce GT 520 1GB DDR3 con GPU GF119 a 810 Mhz
Y pues esa es la de escritorio. Hasta hora solo he probado con la laptop y pues es de gama baja. Pero aprender a usar CUDA se me hace demasiado solo para andar probando la seguridad de mi red. Aunque no deja de ser interesante. Deja que consiga algo de tiempo y pruebo con Jack The Ripper la contraseña que dices.
tienes una muy buena maquina
tienes una muy buena maquina ¡ con el puro procesador y un muy buen algoritmo creo que tardas poco en hacer fuerza bruta siempre y cuando utilices todos tus micros.. he visto a algunos compañeros que programan en C# que dicen y bueno de echo utilizan unas librerias para C# para aprovechar la paralelizacion en hardware que tengas mas de 1 micro, personalmente no e indagado pero al parecer da bueno resultados. mas que eficiente que utilizar los hilos de toda la vida en java, no se alguien que sepa mas del tema en java que me desmienta..
podrías tratar de crear un algoritmo en C# en caso que uses windows para eso ..
ya había visto jcuda pero al no tener un tarjeta Nvidia si no una Ati desistió mi interés
ya me intereso tu tema seria bueno hacer unas pruebas ..
Si te vas a aventar el
Si te vas a aventar el programa considera manejar probabilidad, es decir, que palabras son mas probables que se usen, por ahi vi que hay algunas que se usan muy seguido, o ver que patrones siguen las fabricas de los modems para asignarle contraseña, tratando de adivinar, asi te ahorrarias mucho tiempo. Obviamente esas palabras las descartarias en posteriores "consultas" a la misma red.
Dicho de otro modo, debes averiguar que palabras se utilizan mas seguido y que patrones, para poder hacer tu diccionario, tambien debes de considerar hacer las consultas con palabras aleatorias.
Espero me haya dado a entender.
¡Hijole!
¡Hijole! Este trabajo requiere de un buen análisis y de volver a repasar el curso de probabilidad y estadística. Y después crear el algoritmo. Voy a ver si puedo. Porque a la mejor esto esta mas allá de mis habilidades.
beto.bateria tiene razon aun
beto.bateria tiene razon aun que ya no seria propiamente fuerza bruta si no algo mas inteligente en lugar de tratar a lo bruto xD
tienes razón todo esto requiere que se repasen temas de la univ, de repente cuando estudiamos esos temas te preguntaras "para que rayos me va a servir las permutaciones y combinaciones" XD .. muy bueno uso este..
si mi maestro hubiera llegado diciendo.. "haber chavos hoy vamos a ver permutaciones y combinatoria para ellos trataremos de adivinar mediante esta técnica la contraseña de una red wpa, para ello utilizaremos algoritmos recursivos y no recursivos que su profesor de programación les explicara, el que haga un algoritmo utilizando la estadistica y/o combinaciones tendra 10 D"
no pues si así fuera mi escuela, todos saldríamos hackers, crackers,analistas, ladrones, etc xD ..
pasando al tema lo que dice beto.bateria de las palabras mas comunes, tiene toda una teoría en este momento no recuerdo como se llama y buscando en google no me sale por la misma razón, pero esta onda estudia estadísticas de letras y palabras mas comunes en un idioma, y precisamente por esta razón se pueden hacer criptoanalisis en manuscritos de idioma desconocido por que se supone que si un lenguaje es lenguaje debe cumplir ciertos criterios estadisticos, seria muy bueno para empezar por ahi, aun que si recuerdo que cuando vi eso dije: "mis matematicas no dan pa tanto" jaja,
y por ultimo ya haciendo spam estoy montando un foro en el cual me intereso este tema podriamos armar temas de esto, ya que aqui en java mexico solo es java y pues estaria fuera de lugar..
un saludo
ufff ya me acorde xD te dejo
ufff ya me acorde xD te dejo un enlace
Ley de Zipf