Autor
|
Tema: Diccionario de Fuerza Bruta Tipo v2 (Leído 35,154 veces)
|
RJuegos
Desconectado
Mensajes: 32
|
Yo por desgracia, no lo he probado mi propio diccionario porque mi pc de escritorio no tiene tarjeta de red, no tiene para detectar wifis, pero estoy seguro de su eficaz por el motivo que lo acabo de explicar arriba a El_Andaluz. Podría probarlo por mi tablet pero se que no es potente como una pc, me lee las claves como 1 clave por 4 o 5 seg. si no recuerdo mal. La aplicación se llama WIBR+ y es para android si les interesa saber.
|
|
|
En línea
|
|
|
|
RJuegos
Desconectado
Mensajes: 32
|
Diccionario Fuerza Bruta v2 Actualizado
*Se borran sílabas innecesarias lo que hara mas rapido formar palabras. +Se agregan nuevas sílabas, para mas posibilidades de palabras.
(Resumido)
|
|
|
En línea
|
|
|
|
RJuegos
Desconectado
Mensajes: 32
|
Un problema tenia con mi pc que es vieja y mi diccionario se perdio, asi que deje de hacerlo un tiempo y luego empiezo de vuelta, asi que esta ves les traigo el Diccionario Incompleto Liviano un total de Claves 12.142.685Por Mega Link... https://mega.nz/file/rAo2mRaC#sZyn3nhqSQKCSSjF20zORsbdBBfhLE3gaRxO5HKrH0wTamaño Real: 116 MB Comprimido: 13,1 MB Claves Total: 12.142.685 *Se borran las siguientes combinacion en la ultima silaba eñ, iñ, oñ, uñ porque no hay palabras que terminen con esas combinaciones. +Se agrega una combinacion en la ultima silaba au Para mas posibilidades de palabras claves ejemplo: gatomi au, gatogu au, marich au, etc
|
|
« Última modificación: 21 Julio 2021, 05:57 am por RJuegos »
|
En línea
|
|
|
|
RJuegos
Desconectado
Mensajes: 32
|
Volvi de vuelta lo siento mi pc es vieja deja de funcionar por un tiempo y luego anda, es un problema con el disco rigido. Dejando eso al lado, traje un diccionario un poco mas completo que el anterior y añadido mas silabas y numeros para mas posibilidades de formar nuevas palabras. Diccionario FB V2 (Incompleto Mediano) Claves total: 19.011.126 Link: https://mega.nz/file/XRJCBJTQ#Qal9vC16SSKDje-1bbOQLYWAlR-e_Eufgq-xHueNpRsTamaño Real: 183MB Tamaño Comprimido: 20,9MB Total de Claves: 19.011.126 Claves que empiecen con ba****** y de 8 letras lo desifra. Claves que empiecen con beba**** bebe**** y de 8 letras lo desifra. Claves que empiecen con bebia*** bebib*** bebic*** bebid*** y de 8 letras lo desifra.
|
|
|
En línea
|
|
|
|
RJuegos
Desconectado
Mensajes: 32
|
Diccionario FB V2 (Incompleto Mediano) INFO de Actualizacion...
+Las siguientes combinaciones apareceran en cualquier posicion
au ck dy
Claves au de ejemplo: autoauto, auxilio8, etc. Claves dy de ejemplo: freddy99, miodaddy, wifiandy, wifidady, etc. Claves ck de ejemplo: backback, hackhack, hackers9, rockrock etc.
+Las siguientes combinacion no aparecera al final de la silaba pero si antes del final
ct nd
Claves ct de ejemplo: victoria, bacteria, conectar, victima, etc. Claves nd de ejemplo: mundos99, mirando5, fondomar, wendifea, etc.
*Se borro la combinacion al final de la silaba
aq eq iq oq uq
porque no hay palabras que terminen con esas combinaciones.
+Se añadio las siguiente combinacion
z + Numeros ej: z5
Claves de ejemplo: lapizzz6, pezzzzz9, etc.
+Numeros al final de las palabras
34 56 78
claves de ejemplo: unodos34, cuatro56, sietey78, etc.
|
|
|
En línea
|
|
|
|
Serapis
|
No termino de entender tu idea de 'diccionario'.
Básicamente tu me estás diciendo, que si no hay una palabra que termine en iñ, no puede existir una contraseña que acabe en 'iñ'... puedes explicar por qué???.
Te recuerdo que el diccionario de la RAE, no recoge palabras como 123456, ni siquiera 1234... y qué?. Quién o dónde se exige que una contraseña tenga que ser una palabra que exista en la RAE?.
Al margen de ello, es bastante estéril crear diccionarios y tener que almacenarlos. La idea es que en vez de crear un programa que cree un diciconario, se cree en todo caso, una librería (instanciable o tipo API) con al menos dos funciones, una para inicializar, donde se pasan los parámetros que determinen las salidas que podrá proveer y otra función para iterar sobre ellas, partiendo de la previa. La función de inicialización debería admitir también como parámetro la entrada vigente y si se pasa nulo, se genera la primera, así se puede parar en cualquier momento y reanudar en otro instante justo desde donde se dejó.
|
|
|
En línea
|
|
|
|
RJuegos
Desconectado
Mensajes: 32
|
No termino de entender tu idea de 'diccionario'.
Básicamente tu me estás diciendo, que si no hay una palabra que termine en iñ, no puede existir una contraseña que acabe en 'iñ'... puedes explicar por qué???.
Te recuerdo que el diccionario de la RAE, no recoge palabras como 123456, ni siquiera 1234... y qué?. Quién o dónde se exige que una contraseña tenga que ser una palabra que exista en la RAE?.
Al margen de ello, es bastante estéril crear diccionarios y tener que almacenarlos. La idea es que en vez de crear un programa que cree un diciconario, se cree en todo caso, una librería (instanciable o tipo API) con al menos dos funciones, una para inicializar, donde se pasan los parámetros que determinen las salidas que podrá proveer y otra función para iterar sobre ellas, partiendo de la previa. La función de inicialización debería admitir también como parámetro la entrada vigente y si se pasa nulo, se genera la primera, así se puede parar en cualquier momento y reanudar en otro instante justo desde donde se dejó.
Si estoy haciendo un programa consola y una con interfaz gráfica que genere este patrón, mientras estoy haciendo un diccionario con el patron con nuevos añadidos y mostrarlos aqui para que vallan viendo y probando, luego de añadir tantas silabas o combinaciones posibles para que no se me escapen palabras muy posible que esten como claves, crear ese patrón a un programa que las genere, por ahora no está escrito en un lenguaje de programación como para convertirlo en un programa, pero me sirve para poder enterlo mejor y pasarlo mas fácilmente a un lenguaje de programación mas desarrollado. No dije que debe existir una palabra que termine en ñ para que exista una contraseña que acabe en ñ, sino que es muy poco probable que una contraseña puede terminar en ñ, no digo que no existe, pero es poco probable porque la mayoría de las contraseñas tienen un nombre, de su mascota, calle, hijo, pelis personajes cantantes favoritos, objetos, etc. Te he dicho esto antes, solo es probabilidad. Pero si tienes una mejor idea de añadir esta combinación me gustaría saberlo, para mejorar el diccionario y probar su eficaz.
|
|
|
En línea
|
|
|
|
Serapis
|
...Pero si tienes una mejor idea de añadir esta combinación me gustaría saberlo... Pués sí. Si tu consideras que la mayoría de contraseñas utiliza sílabas del alfabeto humano, entonces lo razonable es que primero crees un algoritmo para obtener las sílabas del alfabeto humano (tampoco sobra en ese supuesto, añadir dígitos, pares y tríos de dígitos, ya que esto comulga dentro de esa consideración). Este debería ser a lo sumo tu diccionario, que al ser de un tamaño 'aceptable', incluso puede residir en memoria (se carga al iniciar el programa). En vez de andar disperso con !!!!teces!!!! que poco o nada aportan y que hacen tu 'programación' infinita en el tiempo. Tras tenerlas todas enumeradas, luego sería cuestión de combinarlas entre sí (ese array cargado en memoria) hasta formar el largo requerido (3-4-5-6 sílabas, con un simple bucle recursivo, te adjunto debajo el pseudocódigo para esto)... pero esto último ya 'en combate' ... para probar (debug) que enumera bien las combinaciones de sílabas sí es acertado pasarlo a fichero y comprobar el resultado. funcion Combinar(entero numSilabas, entero MaxSilabas) numsilabas +=1 Si (numsilabas = Maxsilabas) por cada silaba en arrayDiccionario stackClave.Append(silaba, stackClave.Size) // <--- el parámetor size, en realidad es innecesario, se añade exclusivamente para clarificar. #si debug=TRUE GuardarAfile(stackClave.toString) #sino probarClave(stackClave.toString) // <---- creada la contraseña se envía a donde haya que enviarla... // o devolver por evento, si la función que prueba la clave no está junto a esta. #fin si stackClave.Size -= silaba.size siguiente sino por cada silaba en arrayDiccionario stackClave.Append(silaba, stackClave.Size) llamada a combinar(numSilabas, MaxSilabas) // <--- aquí la llamada recursiva. stackClave.Size -= silaba.size siguiente fin si fin funcion
Como se puede ver es muy simple y es eficiente, luego generar la clave a medida que se necesita, hace innecesario guardar diccionarios enormes a fichero. la variable 'stackClave', puede ser un simple array de bytes-chars que actúa como un stack, con un largo máximo de modo que pueda alojar el número de sílabas 'maxSilabas' de la más larga (así no hay necesidad de generar con cada clave un nuevo array). O bien una clase... En cualquier caso se requieren unos métodos para manejar dicha variable de stack... Una 'Append' que añade una silaba al final del size actual y actualiza size, tras usarla, no hace falta borrar nada, solo restar el 'size' de la última sílaba 'append'... En fin, a buen entendedor pocas palabras bastan. ....y con esto ya tienes la mitad de tu problema, lo otra mitad es generar las sílabas del alfabeto español (o inglés o de otro idioma del que conozcas lo suficiente de su gramática).
|
|
« Última modificación: 13 Noviembre 2021, 16:19 pm por Serapis »
|
En línea
|
|
|
|
RJuegos
Desconectado
Mensajes: 32
|
Pués sí. Si tu consideras que la mayoría de contraseñas utiliza sílabas del alfabeto humano, entonces lo razonable es que primero crees un algoritmo para obtener las sílabas del alfabeto humano (tampoco sobra en ese supuesto, añadir dígitos, pares y tríos de dígitos, ya que esto comulga dentro de esa consideración). Este debería ser a lo sumo tu diccionario, que al ser de un tamaño 'aceptable', incluso puede residir en memoria (se carga al iniciar el programa). En vez de andar disperso con !!!!teces!!!! que poco o nada aportan y que hacen tu 'programación' infinita en el tiempo.
Tras tenerlas todas enumeradas, luego sería cuestión de combinarlas entre sí (ese array cargado en memoria) hasta formar el largo requerido (3-4-5-6 sílabas, con un simple bucle recursivo, te adjunto debajo el pseudocódigo para esto)... pero esto último ya 'en combate' ... para probar (debug) que enumera bien las combinaciones de sílabas sí es acertado pasarlo a fichero y comprobar el resultado.
...
Como se puede ver es muy simple y es eficiente, luego generar la clave a medida que se necesita, hace innecesario guardar diccionarios enormes a fichero. la variable 'stackClave', puede ser un simple array de bytes-chars que actúa como un stack, con un largo máximo de modo que pueda alojar el número de sílabas 'maxSilabas' de la más larga (así no hay necesidad de generar con cada clave un nuevo array). O bien una clase... En cualquier caso se requieren unos métodos para manejar dicha variable de stack... Una 'Append' que añade una silaba al final del size actual y actualiza size, tras usarla, no hace falta borrar nada, solo restar el 'size' de la última sílaba 'append'... En fin, a buen entendedor pocas palabras bastan.
....y con esto ya tienes la mitad de tu problema, lo otra mitad es generar las sílabas del alfabeto español (o inglés o de otro idioma del que conozcas lo suficiente de su gramática).
El algoritmo para generar las sílabas directas e indirectas ya lo he hecho, pero como algunas silabas son menos probable que pueden estar al final de las claves, las he sacado algunas y he añadido unas nuevas manualmente, este algoritmo seria el no actualizado. program Silabas_Directas_e_Inversa; uses crt; var seleccion1, seleccion2, i, i2:Integer; Alfabeto: array of String; FormarSilaba:String; const AbcdarioSinVocales:String ='bcdfghjklmnñpqrstvwxyz'; //aqui la enie no aparece pero esta Vocales:String ='aeiou'; begin clrscr(); seleccion1:=1; //Parte Generar Silabas Directas... for i:=1 to Length(AbcdarioSinVocales) do begin seleccion2:=1; for i2:=1 to Length(Vocales) do begin FormarSilaba:=Concat(AbcdarioSinVocales[seleccion1], Vocales[seleccion2]); //unir letra de AbcdarioSinVocales a una letra de Vocales WriteLn(FormarSilaba); //Mostrando resultado seleccion2:=seleccion2+1; //Siguiente letra de Vocales end; seleccion1:=seleccion1+1; //Siguiente letra de AbcdarioSinVocales end; seleccion1:=1;//Parte Generar Silabas Inversa o indirectas... for i:=1 to Length(AbcdarioSinVocales) do begin seleccion2:=1; for i2:=1 to Length(Vocales) do begin FormarSilaba:=Concat(Vocales[seleccion2], AbcdarioSinVocales[seleccion1]);//unir letra de Vocales a una letra de AbcdarioSinVocales WriteLn(FormarSilaba); //Mostrando resultado seleccion2:=seleccion2+1; end; seleccion1:=seleccion1+1; end; readln; end.
Esta parte del programa consola la tengo lista, aunque sigo actualizando y añadiendo cosas nuevas y necesarias para que funcione el programa. Gracias por tu tiempo por ayudar aunque no soy un gran experto algo pude entenderlo, se que hace algunos código mas tu explicación mas o menos pude entenderlo mejor que quieres decir.
|
|
|
En línea
|
|
|
|
Serapis
|
Lo que estás haciendo no es generar sílabas en todo caso serían dígrafos. En realidad, lo de menos es el nombre, sino la funcionalidad, y desde luegro, de ese modo no podrás inscribir sílabas muy específicas pero también muy presentes como por ejemplo las que aparecen en la palabra 'constructor', sus sílabas son 'cons-truc-tor', pero t código no generaría los digrafos 'ns' y 'tr' porque solo une silabas con consonantes y viceversa, además eso tolera ciertas construcciones que muy probablemente no se den en palabras (ciñéndonos al caso tu premisa del uso de palabras), o aunque se den su frecuencia sea realmente escasa.
En realidad tu algoritmo de sílabas debiera generar las sílabas que toleran las reglas de silabeo de la gramática española, es decir tu algoritmo debiera considerar dichas reglas e implementarlas en un algoritmo, para poder reconocerlas. Luego generalas todas supone elegir una entre (al menos) dos estrategias... - Alimentar el algortimo con pseudosílabas generadas a partir de un algoritmo de bucles (el anterior que te dí vale a condición de que el array contenga los caracteres a-z, y el largo vaya pasando por 1, 2, 3 ,4, 5 y 6 (en español es imposible generar sílabas más largas de 6 y cuesta encontrar ejemplos de estas, incluso de 5)). Cada pseudosílaba es una proposición que el algoritmo de silabeo demuestra si pertenece o no a la gramática española, si el resultado es favorable se añade a la lista. En este caso, el algoritmo recibe pues un string que es una posible sílaba y el algoritmo debe demostrar si lo es o no.
- Alimentar el algoritmo con textos procedentes de obras en español. En este caso el algoritmo lo que recibe es un texto que se compone de palabras y el algoritmo, lo que hace es la partición silábica. Luego con cada sílaba hallada se localiza si ya se tiene almacenada, en caso negativo se añade a la lista.
Ambos algoritmos difieren muy poco. En el primero recibe un string y verifica si al completo es o no una silaba, en el segundo se recibe una palabra y va tomando caracteres formando así sílabas (saltando espacios y caracteres de puntuación cuando aparezcan), con cada una encontrada devuelve la posición alcanzada en la palabra (o devuelve la sílaba), para seguir en una nueva llamada a continuación del punto previo. La mayor diferencia no reside en el algoritmo de silabeo (que es el mismo en ambos casos), si no en el que alimenta a dicho algoritmo.
Desde luego el algoritmo de silabeo tiene su trabajillo (no es complicado peor lleva su tiempo), primero hay que empaparse (ponerse al día y refrescar lo olvidado) de las reglas de silabeo de la gramática española (desde mis tiempos de estudiante, ignoro si alguna de estas reglas ha cambiado, como sí han ido cambiando las reglas de ortografía (las 'reglas' de cualquier índole, tienen un carácter de 'constante, en el tiempo', pero con tantos y tan frecuentes cambios, más bien dichas reglas ya, parecen 'variables, cada pocos años'))... y luego para hacerlo eficiente en velocidad lo adecuado sería diseñar el automáta para reconocer las sílabas en base a dichas reglas. Esto también puede resultar complicado si las capacidades como programador son limitadas...
...en el pseudocódigo anterior te había dejado una 'tarea' a tu esfuerzo, cuando lo vieras. Debe haber dos condiciones de salida, una cuando acaba el análisis y no se encontró nada (esa salida está), y la otra cuando la contraseña coincide que también debe acabar, que es la que omití... pero viendo tu código y leyendo tus explicaciones, entiendo que tu nivel de programación es el que es, luego ve a tu ritmo, a tu manera si no logras entender más allá.
|
|
« Última modificación: 16 Noviembre 2021, 15:31 pm por Serapis »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Diccionario fuerza bruta
Ingeniería Inversa
|
aylenrockatasein
|
1
|
3,022
|
24 Febrero 2012, 20:20 pm
por P4nd3m0n1um
|
|
|
Diccionario Fuerza Bruta
Seguridad
|
jormorga
|
3
|
3,237
|
13 Enero 2014, 16:24 pm
por Platanito Mx
|
|
|
Diccionario fuerza bruta
Hacking
|
condordkl
|
1
|
2,516
|
6 Septiembre 2014, 05:31 am
por XresH
|
|
|
Ataque por Fuerza Bruta o por Diccionario con mas de 1 ordenador
Hacking
|
Raikeen
|
6
|
5,739
|
5 Noviembre 2014, 11:24 am
por Raikeen
|
|
|
Fuerza bruta diccionario
Hacking
|
Rnovatis
|
3
|
5,515
|
13 Septiembre 2016, 01:47 am
por leostigma
|
|