#include #include #include #include #include "libbmp.h" #include "libstegano.h" #include "libcrypto.h" int main(int argc, char **argv) { printf("\n#######################################################################################\n"); printf("# #\n"); printf("# Chiffrement de fichier #\n"); printf("# #\n"); printf("#######################################################################################\n\n"); //Vérification taille message <= sizePix //Lecture du fichier unsigned int sizeFichier=0; byte *tabOctet=NULL; tabOctet = readFile(argv[1], &sizeFichier); //Tableau d'octet du fichier //Détermination de la taille du Header int k; byte tab4octets[3]; byte *ptr_tab4octets = tab4octets; for(k=10; k<=13; k++) //Récupération de la position de la taille du Header dans tabOctet { tab4octets[k-10] = tabOctet[k]; } unsigned int sizeHeader = 0; //taille du Header readValue(ptr_tab4octets, 4, &sizeHeader); if(sizeHeader != 0) //Vérification récupératioin de la taille du Header { printf("[OK] Taille du Header récupéré\n"); printf(" Taille du header = %d octets\n\n", sizeHeader); } else { printf("[ERREUR] La taille du Header est nulle !\n"); } //Détermination de la taille du tableau de pixel + récupération du tableau unsigned int sizeTabPix=0; byte *tabPix=NULL; tabPix = readImg(argv[1], &sizeTabPix); printf(" Taille du tableau de pixel : %d octets \n\n", sizeTabPix); //en attendant: printf(" Pix[0] = %d\n\n", tabPix[1]); //Taille du message const char *message = argv[2]; size_t sizeMsg; if(argv[2]==NULL) { printf("ATTENTION : Aucun message rentrer en argument\n"); exit(0); } sizeMsg = strlen(message); //size_t = unsigned int printf("[OK] Taille du message : %ld octets\n",sizeMsg); //Vérification if(sizeTabPix < (8*sizeMsg)+32) //les 32 octets contenant la taille du message de 4 octets { printf("ATTENTION : le fichier est trop petit pour contenir le message\n"); } //Chiffrement du message //Stéganographie du message byte byte_message = (byte) *message; //Passage du message dans une variable non-constante insert (tabPix, sizeTabPix, &byte_message, sizeMsg); //Ecriture de l'image writeImg("stegano.bmp", tabPix, sizeTabPix); //Extraction de l'image printf("\n Extraire le message de stegano.bmp ? (1/0)"); int test=0; scanf("%d", &test); if (test == 0) { exit(0); } //--> récup taille message! unsigned int *ptr_sizeMsg =(unsigned int*) &sizeMsg; byte *exMsg=NULL; exMsg = extract (tabPix, sizeTabPix, ptr_sizeMsg); //Affichage du message int i; for(i=0; i