fork download
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. //#include "probar-claves.h"
  7.  
  8. //int probar_combinaciones_palabra(linea, clave_descifrada,clave);
  9. int main (int argc, char*argv[])
  10.  
  11. //argv[1] Nombre del fichero con el diccionario
  12. //argv[2] Desplazamiento del octeto en el que se empieza a leer
  13. //argv[3] Desplazamiento del octeto en el que se termina de leer
  14. //argv[4] Clave a leer
  15. //argv[5] Fichero en el que escribir el resultado descifrado (SOLO SI LO HAY)
  16. {
  17. //Variables
  18. FILE *diccionario;
  19. FILE *descifrado;
  20. int inicio;
  21. int final;
  22. int contador;
  23. char linea[255];
  24. char clave[255];
  25. char clave_descifrada[255];
  26. int tam_clave;
  27. int tam_linea;
  28. int resultado;
  29. int devolucion;
  30.  
  31.  
  32. //Apertura de los ficheros y lectura del inicio y del final
  33. diccionario = fopen (argv[1], "r");
  34. inicio = atoi(argv[2]);
  35. final = atoi(argv[3]);
  36. strcpy(clave, argv[4]);
  37. descifrado = fopen (argv[5], "w+");
  38.  
  39.  
  40. //Comprobamos que el fichero se pueda leer
  41. if(diccionario==NULL)
  42. {
  43. printf("Hay un error a la hora de leer en el fichero");
  44. }
  45. else
  46. {
  47.  
  48. //Nos situamos en el primer byte que debemos leer
  49. contador = inicio;
  50. fseek(diccionario, inicio, SEEK_SET);
  51. //Copiamos el resumen md5
  52.  
  53. tam_clave = strlen(clave);
  54. if(clave[tam_clave-1] == '\n')
  55. {
  56. clave[tam_clave-1]='\0';
  57. }
  58.  
  59.  
  60. //Leemos sólo los octetos necesarios
  61. while (contador <= final)
  62. {
  63. fgets(linea, 255, diccionario);
  64. tam_linea = strlen(linea);
  65. if(linea[tam_linea-2] == '\r')
  66. {
  67. linea[tam_linea-2] = '\0';
  68. }
  69.  
  70. else if (linea[tam_linea-1]=='\n')
  71. {
  72. linea[tam_linea-1]='\0';
  73. }
  74. //devolucion=probar_combinaciones_palabra(linea, clave_descifrada,clave);
  75. if(devolucion==0)
  76. {
  77. //Se ha descubierto la clave en el diccionario
  78. resultado=fprintf(descifrado, clave_descifrada); //Escribrimos el resultado de descifrar en el fichero destino
  79. if(resultado==0)
  80. {
  81. printf("Ha habido un problema al escribir el resultado en el fichero\n");
  82. }
  83. else
  84. {
  85. contador=final+1;
  86. printf("Se ha encontrado la clave\n");
  87. }
  88. }
  89. else
  90. {
  91. //No se ha descubierto la clave, hay que seguir leyendo el diccionario
  92. contador++;
  93. }
  94.  
  95.  
  96. }
  97. //Se ha leído todo el diccionario y no se ha encontrado la clave
  98. if(contador==final)
  99. {
  100. printf("No se ha encontrado la clave\n");
  101. }
  102. fclose(diccionario);
  103. fclose(descifrado);
  104. }
  105.  
  106.  
  107.  
  108.  
  109.  
  110. }
Success #stdin #stdout 0s 2300KB
stdin
Standard input is empty
stdout
Hay un error a la hora de leer en el fichero