elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿ Tan dificil es hacer un generador de diccionario ?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: ¿ Tan dificil es hacer un generador de diccionario ?  (Leído 5,692 veces)
someRandomCode

Desconectado Desconectado

Mensajes: 250



Ver Perfil
Re: ¿ Tan dificil es hacer un generador de diccionario ?
« Respuesta #10 en: 5 Septiembre 2015, 22:59 pm »

La verdad que http://www.vitutor.com/pro/1/a_6.html es todo lo que necesite para entenderlo..
Pero al caso, << es para para correr el numero binario tantos como son necesarios hacia el lado que indica el simbolo, o sea, >> es su operacion contraria.
Si estuvieramos en C++ esto significaria el desplazamiento de flujo que funciona distinto dependiendo del tipo/clase

En cuanto al algoritmo de generacion, la parte mas complicada es la de seleccionar la posicion a la cual incrementar al siguiente elemento del grupo..

Fijate si con la lectura que te pase lo entendes sino te lo comento..


En línea

snake_linux

Desconectado Desconectado

Mensajes: 70


Ver Perfil
Re: ¿ Tan dificil es hacer un generador de diccionario ?
« Respuesta #11 en: 5 Septiembre 2015, 23:36 pm »

La verdad que http://www.vitutor.com/pro/1/a_6.html es todo lo que necesite para entenderlo..
Pero al caso, << es para para correr el numero binario tantos como son necesarios hacia el lado que indica el simbolo, o sea, >> es su operacion contraria.
Si estuvieramos en C++ esto significaria el desplazamiento de flujo que funciona distinto dependiendo del tipo/clase

En cuanto al algoritmo de generacion, la parte mas complicada es la de seleccionar la posicion a la cual incrementar al siguiente elemento del grupo..

Fijate si con la lectura que te pase lo entendes sino te lo comento..

Gracias por ayudarme :)

La lectura que me has pasado, pone una fórmula para calcular el número de posibilidades, pero aún no se como haces para "calcular" cada posibilidad, así que si puedes comentármelo mejor.

PD: ¿ Y para que sirve "&" en vez de "&&" ?.

Saludos.


En línea

RockPosts

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: ¿ Tan dificil es hacer un generador de diccionario ?
« Respuesta #12 en: 5 Septiembre 2015, 23:44 pm »

Citar
Para que sirven los operadores ">>" y el operador "&" (este último lo había visto pero solo como "&&")

*El operador >> sirve para lo que se denomina 'Desplazamiento de Bits' Esto sirve para lo que su nombre dice. Me explico con un ejemplo: tenemos una variable de tipo entero (int) cuyo valor es 12. Dicho numero en binario es 1100. Si hacemos la siguiente operación...
Código
  1. varialbe = variable >> 1
entonces estamos desplazando todos los bits un lugar, dando como resultado el numero en binario 0110. El 1 que estaba en cuarto lugar ha pasado al tercer lugar. El 1 que estaba en tercer lugar ha pasado al segundo lugar... y así sucesivamente. Si hubiéramos hecho esto...
Código
  1. variable = variable >> 2
entonces daría como resultado 0011 en binario

*El operador & es parecido al |. Lo que hace es multiplicar bit a bit dos valores. Por ejemplo, tenemos los valores 011010 y 110011 (en binario). Si hacemos 011010 & 110011 obtendremos 010010.
Empezamos de derecha a izquierda: El primer bit está determinado por la operación 1 * 0, por lo que vale 0. El segundo bit está determinado por la operación 1 * 1, por lo que vale 1 y así sucesivamente
En línea

snake_linux

Desconectado Desconectado

Mensajes: 70


Ver Perfil
Re: ¿ Tan dificil es hacer un generador de diccionario ?
« Respuesta #13 en: 6 Septiembre 2015, 11:45 am »

*El operador >> sirve para lo que se denomina 'Desplazamiento de Bits' Esto sirve para lo que su nombre dice. Me explico con un ejemplo: tenemos una variable de tipo entero (int) cuyo valor es 12. Dicho numero en binario es 1100. Si hacemos la siguiente operación...
Código
  1. varialbe = variable >> 1
entonces estamos desplazando todos los bits un lugar, dando como resultado el numero en binario 0110. El 1 que estaba en cuarto lugar ha pasado al tercer lugar. El 1 que estaba en tercer lugar ha pasado al segundo lugar... y así sucesivamente. Si hubiéramos hecho esto...
Código
  1. variable = variable >> 2
entonces daría como resultado 0011 en binario

*El operador & es parecido al |. Lo que hace es multiplicar bit a bit dos valores. Por ejemplo, tenemos los valores 011010 y 110011 (en binario). Si hacemos 011010 & 110011 obtendremos 010010.
Empezamos de derecha a izquierda: El primer bit está determinado por la operación 1 * 0, por lo que vale 0. El segundo bit está determinado por la operación 1 * 1, por lo que vale 1 y así sucesivamente

Gracias, me ha servido de ayuda.
En línea

someRandomCode

Desconectado Desconectado

Mensajes: 250



Ver Perfil
Re: ¿ Tan dificil es hacer un generador de diccionario ?
« Respuesta #14 en: 6 Septiembre 2015, 14:40 pm »

Bien, he regresado xD
Vengo a explicarte por que se usa asi el tema de la posicion:
Examinemos el codigo si?
Lo primero que hacemos es guardar el valor de i, que es el indicador del numero de combinacion general en la que estamos.
Luego entrmos en el for que hace las combinaciones.
El orden se determina por
Código
  1.            gp[gp_len -j -1] = list[n % list_len];
  2.            n /= list_len;
  3.  

gp -> grupo, gp_len -> largo del grupo, j-> posicion actual en el grupo, -1 porque el indice esta basado en ceros
list es la lista de elementos permutables en el grupo.
Entonces:
para cada elemento de gp le en la posicion donde estamos en el bucle (-1) se da el valor del elemento del grupo en relacion al largo del grupo de elementos intercambiables en el round actual (round = valor de i), luego se ajusta n con el largo del grupo deseado.

Esto es asi dado que cada permutacion tiene asociado un numero, si "0000" es 0, "0001" es 1, y "AAAA" es X

No se explicarme muy bien, tendria que agarrar latex y escribirte la formula algebraica de generacion de permutaciones.

Basicamente es que tenes un grupo vacio de universo hasta X elementos.
De tal manera que vas a seleccionar dependiendo del numero un elemento Y para meterlo y puede ser biyectiva(es decir tener dos valores iguales dentro del grupo X partiendo del mismo elemento en Y)
En línea

snake_linux

Desconectado Desconectado

Mensajes: 70


Ver Perfil
Re: ¿ Tan dificil es hacer un generador de diccionario ?
« Respuesta #15 en: 6 Septiembre 2015, 23:25 pm »

Vale, creo que ya lo he entendido, el problema para mi no es C, es más bien el algoritmo matemático ya que tampoco es que sepa yo muchas mates pero bueno lo que es el código lo entiendo.

Muhas gracias por tu tiempo :)
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Batch] Generador de Diccionario
Scripting
SmartGenius 8 6,677 Último mensaje 16 Diciembre 2008, 19:46 pm
por SmartGenius
Generador de diccionario StrinGenerator1.1 « 1 2 »
Hacking Wireless
|FluiD| 10 21,451 Último mensaje 17 Enero 2016, 02:30 am
por northsay
Generador de diccionario p/bruteforce
Hacking
taul 1 4,480 Último mensaje 8 Diciembre 2009, 01:20 am
por Constantinoplero
Generador de diccionario
Hacking Wireless
magp_90 6 5,986 Último mensaje 7 Septiembre 2012, 03:24 am
por El_Andaluz
Generador diccionario numérico
Programación C/C++
hossman92 1 3,932 Último mensaje 24 Noviembre 2014, 19:12 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines