Autor
|
Tema: Help Ejercicio 122 en C (Leído 5,188 veces)
|
ANELKAOS
|
Acceso a ficheros
Ejercicio 122 Escribir un programa que solicite palabras y las agrege a un fichero llamado c:\diccionario de forma que luego se puedan consultar las palabras una a una Vale, lo q yo he hecho es un programa que pide al usuario la longitud mínima y maxima de la contraseña y crea todas las palabras posibles. Ejemplo: min=1, max=2 pues crea un archivo en el que guarda en cada linea todas las palabras posibles desde la cadena a hasta la zz de la forma: a b c ... ab ac ad ... y así hasta zz El código que no consigo hacer funcionar es este: /* * Ejercicio 122 by ANELKAOS * Creación de diccionarios de contraseñas para fuerza bruta */
#include <stdio.h> #include <string.h> #include <stdlib.h>
int max, min, i, j; char cadena[100]; char abcd[38]= "abcdefghijklmnñopqrstuvwxyz0123456789";
int main() { printf("\n\n\t******************************************************************\n"); printf("\t*Diccionario de palabras V 0.1*\n"); printf("\t******************************************************************\n"); printf("\n\n\t Introduzca la longitud m%cnima de la contrase%ca: ",161,164); scanf("%d",&min); printf("\n\n\t Introduzca la longitud m%cxima (menor que 100) de la contrase%ca: ",160,164); scanf("%d",&max);
printf("\n\n\t Generando archivo de contrase%cas en C:\\pass.txt...",164);
FILE *pfich; pfich = fopen("pass.txt", "w"); if(pfich == NULL){ printf("\nERROR al abrir el fichero."); exit(1); } //escibimos en el archivo for(i=min;i<=max;i++) { for(j=0;j<37;j++) { cadena[i]=abcd[j];
strcat(&cadena[i],&abcd[j]); fprintf(pfich, "%s\n", cadena); } }
/*terminamos de usar el archivo*/ if(fclose(pfich)!=0){ printf("\nERROR al cerrar el archivo."); exit(1); }
printf("\n\n\t Pulse cualquier tecla para SALIR"); getchar(); }
Tengo algo oxidado el tema de cadenas y los archivos...pq le he pegado un repaso en Inet que si no lo mismo. Si alguien que lo tenga fresco me puede echar un cable para hacer funcionar esto se lo agradeceria mucho 1saludo
|
|
« Última modificación: 9 Septiembre 2005, 04:13 am por ANELKAOS »
|
En línea
|
|
|
|
redHat
Desconectado
Mensajes: 427
Don't fear the Penguin
|
A mi me corrió si declaro a la variable pfich como variable global, creo que después de un printf o scanf no puedes declarar variables, creo, no estoy seguro.... pero ese error yo lo tenía antes /* * Ejercicio 122 by ANELKAOS * Creación de diccionarios de contraseñas para fuerza bruta */
#include <stdio.h> #include <string.h> #include <stdlib.h>
int max, min, i, j; char cadena[100]; char abcd[38]= "abcdefghijklmnñopqrstuvwxyz0123456789"; FILE *pfich;
int main() { printf("\n\n\t******************************************************************\n"); printf("\t*Diccionario de palabras V 0.1*\n"); printf("\t******************************************************************\n"); printf("\n\n\t Introduzca la longitud m%cnima de la contrase%ca: ",161,164); scanf("%d",&min); printf("\n\n\t Introduzca la longitud m%cxima (menor que 100) de la contrase%ca: ",160,164); scanf("%d",&max);
printf("\n\n\t Generando archivo de contrase%cas en C:\\pass.txt...",164); pfich = fopen("pass.txt", "w"); if(pfich == NULL){ printf("\nERROR al abrir el fichero."); exit(1); } //escibimos en el archivo for(i=min;i<=max;i++) { for(j=0;j<37;j++) { cadena[i]=abcd[j];
strcat(&cadena[i],&abcd[j]); fprintf(pfich, "%s\n", cadena); } }
/*terminamos de usar el archivo*/ if(fclose(pfich)!=0){ printf("\nERROR al cerrar el archivo."); exit(1); }
printf("\n\n\t Pulse cualquier tecla para SALIR"); getchar(); }
|
|
« Última modificación: 9 Septiembre 2005, 07:16 am por redHat »
|
En línea
|
Calaberas traseras transparentes $80.00, defensa de Honda Civic 2000, $1000.00, cambiarte 4 carriles con menos de 5 metros de espacio, no tiene precio.....
|
|
|
soplo
Ex-Staff
Desconectado
Mensajes: 3.592
Debian rool'z
|
De todas formas parece que hay una confusión de conceptos. En un brute force se puede utilizar bien un dicionario bien permutaciones. lo que no tiene sentido es ambas cosas.
Quieo decir que en un dicionario no se meten permutaciones. se meten palabras posibles y lo que hace el bruteforce es probarlas a ver si funcionan. Suelen ser palabras comunes que se usan en claves. Se prueba la palabra en sí misma y posibles variaciones (mayúsculas, minúsculas, parte de la plabra). P.ej. Administrador, administrador, admin, Admin, ..., etc.
Si ninguna palabra es válida entonces se emplea el método de las permutaciones que es ponerse a realizar combinaciones e ir probando una a una hasta dar con la clave. Esas combinaciones se realizan en memoria y se prueban. Si cada combinación fuera leída de un fichero el proceso sería larguísimo.
lUn saludo
|
|
|
En línea
|
Callar es asentir ¡No te dejes llevar!
|
|
|
ANELKAOS
|
Buenas soplo supongo q t refieres a la respuesta q dí al del SSH. Simplemente es q coincidió q habia hexo esto recientemente y podia utilizarlo x medio de pipes y NO DE ARCHIVOS como le recomendé en el otro post. 1saludo y gracias redHat que tenias razon y no te dí ni las gracias jeje
|
|
|
En línea
|
|
|
|
Arcangel_RZ
|
creo que después de un printf o scanf eso no es cierto.... cuando trabajas en C, tienes que definir las variables globales y las locales antes de cualquier codigo ok. sin embargo, en C++ las coasas cambien puedes definirlas en cualquier parte del programa con relación a ambitos (generalmente asociado con los espacios entre corchetes)
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ejercicio en c++
Ejercicios
|
civans89
|
4
|
9,753
|
19 Julio 2011, 20:16 pm
por madpitbull_99
|
|
|
Ejercicio en C...
Programación C/C++
|
SonaArtica
|
6
|
3,618
|
4 Agosto 2012, 14:20 pm
por avesudra
|
|
|
ejercicio en C
Programación C/C++
|
howaboutno
|
8
|
3,128
|
30 Octubre 2012, 13:34 pm
por howaboutno
|
|
|
ejercicio en C
« 1 2 »
Programación C/C++
|
howaboutno
|
14
|
7,662
|
2 Noviembre 2012, 15:02 pm
por xiruko
|
|
|
ejercicio
Programación C/C++
|
flony
|
1
|
2,013
|
8 Enero 2013, 16:12 pm
por leosansan
|
|