hola gente de underc0de, soy nuevo en esto de C y estoy tratando de comentar este programa alguien me puede dar una mano...
#include <stdio.h>
/*libreria estandar de C ANSI*/
#include <windows.h>
/*usando la API de windows,etc*/
int main(int args, char *argv[] )
/*funcion entera principal
* con argumento args entera que contiene el numero de argumentos recibidos por el programa
* segundo argumento: apuntador a un array de chars qye contiene los parametros
*pasados en el mismo orden en que fueron escritos
*/
FILE *f1, *f2; //archivos en text plain 1 para escribir la frase a cifrar y la otra donse se guarda
char *key; //llave tipo caracter para poder encriptar/desencriptar
int c; //variable tipo entera
key = argv[1];
if(*key !='\0')
{
f1= fopen(argv[2], "rb");
if(f1 !=NULL){
f2=fopen (argv[3], "wb");
if(f2 !=NULL){
while ((c=getc(f1)) !=EOF)
{
if(!*key) key=argv[1];
c ^=*(key++);
putc(c, f2);
}
fclose(f2);
}
fclose(f1);
}
}
return 1;
}
#include <stdio.h>
/*libreria estandar de C ANSI*/
#include <windows.h>
/*usando la API de windows,etc*/
int main(int args, char *argv[] )
/*funcion entera principal
* con argumento args entera que contiene el numero de argumentos recibidos por el programa
* segundo argumento: apuntador a un array de chars qye contiene los parametros
*pasados en el mismo orden en que fueron escritos
*/
FILE *f1, *f2; //archivos en text plain 1 para escribir la frase a cifrar y la otra donse se guarda
char *key; //llave tipo caracter para poder encriptar/desencriptar
int c; //variable tipo entera
key = argv[1]; //Pasamos el valor de la key
if(*key !='\0') //Miramos que la key no esté vacia
{
f1= fopen(argv[2], "rb"); //Abrimos el archivo en modo lectura
if(f1 !=NULL){ //Miramos que no haya habido error al abrir el archivo
f2=fopen (argv[3], "wb"); //Abrimos el segundo archivo en modo escritura
if(f2 !=NULL){ //Miramos que no haya habido error al abrir el archivo
while ((c=getc(f1)) !=EOF) //Mientras no se llegue al final de fichero
{
if(!*key) key=argv[1]; // Si no existe key se le vuelve a pasar
c ^=*(key++); // Hace una operacion modificando c
putc(c, f2); //Escribimos el valor de c en el fichero f2
}
fclose(f2); //Cerramos f2
}
fclose(f1); //Cerramos f1
}
}
return 1;
}
Ahí te lo he comentado un poco todo más o menos... si no entiendes algo avisas ok? Saludos!!
char *argv[] para que me sirve ese apuntador de arrays basicamente, otra cosa en C existe una funcion para poder meter codigo asm en C no, cual seria esa :DDDD y como se haria (?) que mas o menos tendria que leer para poder hacerlo.
saludos
En cuanto a lo de meter código ensamblador en C no tengo ni idea, nunca lo hice. De todas formas puedes mirarte el siguiente documento, quizás te sirva.
Link: http://atc.ugr.es/docencia/udigital/13.html
*argv[] y argc es utilizado para que el programa pueda recibir los parámetros que le pasamos al llamar a este. argc es el número de parámetros que han sido pasados y argv es el array donde están contenidos dichos parámetros. Te pongo un ejemplo y enseguida lo entenderás:
yo ejecuto el programa de la siguiente forma: ./miPrograma fichero.txt
Solo le he pasado el nombre del programa y un fichero donde escribir o leer por poner un ejemplo, esto quedará reflejado en argc, el número de parámetros. *argv[] contiene estas cadenas de caracteres que yo les he pasado para poder usarlas internamente en el programa. En tu caso argc valdrá 3 (aunque no haces la comprobación y siempre es recomendable hacerla y si no se pasan los 3 parámetros que salte un error). Para ti argv[1] contiene una cadena para encriptar y desencriptar, argv[2] y [3] contienen nombre de fichero para interactuar con ellos. Espero haberte servido de ayuda, no se me da muy bien explicar xD Saludos!!