Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [C] Spiegazioni...

  1. #1

    [C] Spiegazioni...

    Salve...

    girovagando per il web ho trovato questo file molto interessante...

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define BUFSIZE 512
    #define VERSION_NUM "1.0.0"
    #define RELEASE "BETA"
    #define VERBOSE (1)
    int main(int argc, char **args)
    {
    if(argc<=1)
    {
    printf("Utilizzo : %s [input] [pwd] [output]\n",args[0]);
    printf("[input] = File da criptare\n");
    printf("[pwd] = Chiave di cifratura\n");
    printf("[output] = File criptato\n");
    return 1;
    }
    int i=1,flag=1,buf=BUFSIZE,klen,n,complete;
    long fsize;
    if(!strcmp("--help",args[1])||!strcmp("-h",args[1])||!strcmp("-?",args[1]))
    {
    printf("***** Cripter "VERSION_NUM"\n");
    printf(" -h, --help, -?\tStampa questo messaggio di aiuto\n",args[0]);
    printf(" -v, --versione\tStampa la versione di Galatolo Cripter\n",args[0]);
    printf(" -d, --verbose\tAttiva la funzionalità verbose\n",args[0]);
    printf(" -b <size>, --bufsize <size>\tSetta la dimensine del buffer (default di sistema %d byte)\n",args[0],BUFSIZE);
    return 0;
    }
    if(!strcmp("--version",args[i])||!strcmp("-v",args[i]))
    {
    printf("Autore : ****)\n");
    printf("Nome dell'eseguibile : %s\n",args[0]);
    printf("Versione correntemente in uso : "VERSION_NUM"\n");
    printf("Tipo di release : "RELEASE"\n");
    printf("Rilasciato sotto licenza GNU GPL\n");
    return 0;
    }
    while(args[i][0]=='-'&&i<argc)
    {
    if(!strcmp(args[i],"-verbose")||!strcmp(args[i],"-d"))
    flag|=VERBOSE;
    if(!strcmp(args[i],"-bufsize")||!strcmp(args[i],"-b"))
    buf=abs(atoi(args[++i]));
    i++;
    }
    if((argc-i)<3)
    {
    printf("Utilizzo : %s [input] [pwd] [output]\n",args[0]);
    return 1;
    }
    FILE *fpin,*fpout;
    if((flag>>0)&01)printf("[*]Apertura del file `%s' in sola lettura\n",args[i]);
    if((fpin=fopen(args[i++],"rb"))==NULL)
    {
    printf("[!]Errore nell'apertura del file `%s' input\n",args[i-1]);
    return 1;
    }
    if((flag>>0)&01)printf("[*]File `%s' aperto con successo\n",args[i-1]);
    fseek(fpin,0,2);
    fsize=ftell(fpin);
    fseek(fpin,0,0);
    if((flag>>0)&01)printf("[!]Dimensione del file : %ld byte\n",fsize);
    klen=strlen(args[0]);
    char *key=args[0];
    if((flag>>0)&01)printf("[!]La chiave `%s' è lunga %d caratteri\n",args[i],klen);
    ++i;
    if((flag>>0)&01)printf("[*]Apertura del file `%s' in sola scrittura\n",args[i]);
    if((fpout=fopen(args[i],"wb"))==NULL)
    {
    printf("[!]Errore nell'apertura del file `%s' output\n",args[i]);
    return 1;
    }
    if((flag>>0)&01)printf("[*]File `%s' aperto con successo\n",args[i]);
    if((flag>>0)&01)printf("[*]Allocazione buffer\n");
    char *buffer=malloc(buf);
    if((flag>>0)&01)printf("[!]Allocato buffer di %d byte\n",buf);
    if((flag>>0)&01)printf("[*]Criptazione in corso\n");
    for(;;)
    {
    n=fread(buffer,1,buf,fpin);
    if(!n)break;
    for(i=0;i<buf;i++)
    buffer[i]^=key[i%klen];
    fwrite(buffer,1,n,fpout);
    if((flag>>0)&01)printf("%3d%% Completato ",complete=ftell(fpout)*100/fsize);
    if((flag>>0)&01)
    {
    putchar('[');
    for(i=0;i<(complete/2);i++)
    putchar('=');
    for(;i<50;i++)
    putchar(' ');
    putchar(']');Galatolo Federico (galatolo.federico@gmail.com
    for(i=0;i<(50+3+16)*2;i++)
    {
    putchar('\b');
    putchar('\0');
    }
    
    }
    }
    if((flag>>0)&01)printf("\n[*]Operazione completata\n");
    if((flag>>0)&01)printf("[*]Rilascio della memoria buffer\n");
    free(buffer);
    if((flag>>0)&01)printf("[*]Chiusura files\n");
    fclose(fpin);
    fclose(fpout);
    return 0;
    }
    qualcuno mi può spiegare come funziona quel ciclo per criptare i file...

    come costruire un decript???

    grazie a tutti...


  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Hai trovato in rete il codice e ci metti il tuo nome ... ?

    Intanto questa non mi pare una cosa corretta ...

    Comunque, difficilmente si vede un codice cosi' confuso, in parte senza senso e possibilmente (non ho fatto controlli accurati) sbagliato in parte ...

    La parte che "cripta" (per modo di dire) e' questa riga

    buffer[i]^=key[i%klen];

    ed esegue solamente una funzione XOR tra un carattere del file e un carattere della parola chiave.

    Per "decriptare", se il codice lavora correttamente, devi adottare lo stesso metodo (studia la funzione XOR per capire come). Praticamente, se esegui lo stesso codice sul file criptato, ottieni quello di partenza.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Ci ho messo il mio nome perchè dovevo farlo vedere a una persona...

    non mi permetterei mai di rubare del lavoro agli altri...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Originariamente inviato da fedeg93
    Ci ho messo il mio nome perchè dovevo farlo vedere a una persona...

    non mi permetterei mai di rubare del lavoro agli altri...
    Lo hai appena fatto quando lo hai mostrato con il tuo nome alla persona di cui parli ....
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    ho messo *** al posto del nome...

    comunque legalmente parlando potrei mettere il mio nome... è pubblicato sutto GNU/GPL

    ma non è nella mia etica

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Non credo che tu possa "ignorare" totalmente (anzi ELIMINARE ogni riferimento) l'autore anche sotto GNU/GPL ... e comunque evita di fare cose del genere ... lascia il nome dell'autore ... eventualmente dovessi fare modifiche, aggiungi il tuo indicando le modifiche fatte ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.