[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;

}
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login ---> 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
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login ---> 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: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

*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"