[SOLUCIONADO] Ayuda a comentar este programa en C

Iniciado por bendroide, Noviembre 23, 2012, 02:57:48 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Noviembre 23, 2012, 02:57:48 AM Ultima modificación: Septiembre 28, 2014, 12:59:25 PM por Expermicid
hola gente de underc0de, soy nuevo en esto de C y estoy tratando de comentar este programa alguien me puede dar una mano...

Código: c
#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;

}
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ---> seguridad informatica y GNU/Linux.

Noviembre 23, 2012, 07:04:42 AM #1 Ultima modificación: Noviembre 23, 2012, 01:43:11 PM por Pr0ph3t
Código: C

#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!!
"No se puede pactar con las dificultades, o las vencemos o nos vencen"

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
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta ---> seguridad informatica y GNU/Linux.

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: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

*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!!
"No se puede pactar con las dificultades, o las vencemos o nos vencen"