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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ejercicios
| | | |-+  Help Ejercicio 122 en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Help Ejercicio 122 en C  (Leído 4,872 veces)
ANELKAOS
Colaborador
***
Desconectado Desconectado

Mensajes: 3.105


#include<nda.h>


Ver Perfil WWW
Help Ejercicio 122 en C
« en: 9 Septiembre 2005, 04:06 am »

Citar
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:
Citar
a
b
c
...
ab
ac
ad
...
y así hasta zz

El código que no consigo hacer funcionar es este:

Código:
/*
* 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 Desconectado

Mensajes: 427


Don't fear the Penguin


Ver Perfil WWW
Re: Help Ejercicio 122 en C
« Respuesta #1 en: 9 Septiembre 2005, 07:14 am »

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
Código:
/*
* 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 Desconectado

Mensajes: 3.592

Debian rool'z


Ver Perfil
Re: Help Ejercicio 122 en C
« Respuesta #2 en: 10 Septiembre 2005, 11:17 am »

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
Colaborador
***
Desconectado Desconectado

Mensajes: 3.105


#include<nda.h>


Ver Perfil WWW
Re: Help Ejercicio 122 en C
« Respuesta #3 en: 13 Septiembre 2005, 04:51 am »

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

Desconectado Desconectado

Mensajes: 12



Ver Perfil WWW
Re: Help Ejercicio 122 en C
« Respuesta #4 en: 15 Septiembre 2005, 23:41 pm »

Citar
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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ejercicio en c++
Ejercicios
civans89 4 9,427 Último mensaje 19 Julio 2011, 20:16 pm
por madpitbull_99
Ejercicio en C...
Programación C/C++
SonaArtica 6 3,237 Último mensaje 4 Agosto 2012, 14:20 pm
por avesudra
ejercicio en C
Programación C/C++
howaboutno 8 2,750 Último mensaje 30 Octubre 2012, 13:34 pm
por howaboutno
ejercicio en C « 1 2 »
Programación C/C++
howaboutno 14 6,940 Último mensaje 2 Noviembre 2012, 15:02 pm
por xiruko
ejercicio
Programación C/C++
flony 1 1,716 Último mensaje 8 Enero 2013, 16:12 pm
por leosansan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines