| @@ -0,0 +1,2 @@ | |||||
| pass | |||||
| *.o | |||||
| @@ -1,5 +1,11 @@ | |||||
| pass: pass.c pass.h chiffre.c chiffre.h | |||||
| cc -Wall -D_REENTRANT -o pass pass.c chiffre.c -pthread | |||||
| pass: pass.o chiffre.o | |||||
| cc -o pass pass.o chiffre.o -pthread | |||||
| pass.o: pass.c pass.h | |||||
| cc -c -Wall -D_REENTRANT pass.c | |||||
| chiffre.o: chiffre.c chiffre.h | |||||
| cc -c -Wall -D_REENTRANT chiffre.c | |||||
| clean: | clean: | ||||
| rm -f pass | |||||
| rm -f pass *.o | |||||
| @@ -10,7 +10,7 @@ | |||||
| #ifdef XOR_SIMPLE | #ifdef XOR_SIMPLE | ||||
| long long CLE = 0xABCD1276FA8745EC; // clé simple de 64 bits | |||||
| static long long CLE = 0xABCD1276FA8745EC; // clé simple de 64 bits | |||||
| /* Fonction de chiffrement avec xOR, en utilisant une clé fixe de 64 bits. */ | /* Fonction de chiffrement avec xOR, en utilisant une clé fixe de 64 bits. */ | ||||
| void chiffre_xor_simple(char *buf, int l) | void chiffre_xor_simple(char *buf, int l) | ||||
| @@ -35,8 +35,8 @@ void chiffre_xor_simple(char *buf, int l) | |||||
| #endif | #endif | ||||
| #ifdef XOR_FICHIER | #ifdef XOR_FICHIER | ||||
| char *NFCLE = "/tmp/clepass"; // nom du fichier utilisé pour la clé | |||||
| char BCLE[LCLE]; // buffer contenant la clé | |||||
| static char *NFCLE = "/tmp/clepass"; // nom du fichier utilisé pour la clé | |||||
| static char BCLE[LCLE]; // buffer contenant la clé | |||||
| /* Gestion des clés à partir d'un fichier externe. */ | /* Gestion des clés à partir d'un fichier externe. */ | ||||
| int init_cle_xor_fichier(void) | int init_cle_xor_fichier(void) | ||||
| @@ -77,11 +77,12 @@ void chiffre_xor_fichier(char *buf, int l) | |||||
| #endif | #endif | ||||
| #ifdef PLAYFAIR | #ifdef PLAYFAIR | ||||
| char table_chiffre[NBO]; /* table des octets à chiffrer */ | |||||
| char table_bool[NBO] = {0}; /* table pour noter le remplissage des octets */ | |||||
| static char table_chiffre[NBO]; /* table des octets à chiffrer */ | |||||
| static char table_bool[NBO] = {0}; /* table pour noter le remplissage des octets */ | |||||
| #ifdef DEBUG | #ifdef DEBUG | ||||
| void Trace(void) // affiche la table de chiffrement | |||||
| /* Fonction qui affiche la table de chiffrement. */ | |||||
| static void Trace(void) | |||||
| { | { | ||||
| int i, j; | int i, j; | ||||
| unsigned char c; | unsigned char c; | ||||
| @@ -141,7 +142,7 @@ void init_table_chiffre(char *cle) /* on passe la clé en parametre */ | |||||
| } | } | ||||
| /* Fonction qui définit les coordonnées d'un caractère à partir de sa position dans la table */ | /* Fonction qui définit les coordonnées d'un caractère à partir de sa position dans la table */ | ||||
| void coordCar(char C, int *l, int *c) | |||||
| static void coordCar(char C, int *l, int *c) | |||||
| { | { | ||||
| int i; | int i; | ||||
| @@ -152,7 +153,7 @@ void coordCar(char C, int *l, int *c) | |||||
| } | } | ||||
| /* Fonction qui retourne le caractère de la ligne l, colonne c */ | /* Fonction qui retourne le caractère de la ligne l, colonne c */ | ||||
| char carLC(int l, int c) | |||||
| static char carLC(int l, int c) | |||||
| { | { | ||||
| return(table_bool[(l * LCM) + c]); | return(table_bool[(l * LCM) + c]); | ||||
| } | } | ||||
| @@ -17,22 +17,17 @@ | |||||
| /* ******** */ | /* ******** */ | ||||
| #ifdef DEBUG | |||||
| /* Fonction qui affiche la table de chiffrement. */ | |||||
| void Trace(void); | |||||
| #endif | |||||
| #ifdef XOR_SIMPLE | #ifdef XOR_SIMPLE | ||||
| /* Fonction de chiffrement avec xOR, en utilisant une clé fixe de 64 bits. */ | /* Fonction de chiffrement avec xOR, en utilisant une clé fixe de 64 bits. */ | ||||
| void chiffre_xor_simple(char *buf, int l); | |||||
| extern void chiffre_xor_simple(char *buf, int l); | |||||
| #endif | #endif | ||||
| #ifdef XOR_FICHIER | #ifdef XOR_FICHIER | ||||
| #define LCLE 8192 // longueur de la clé : 8ko = 65536 bits, ATTENTION, doit être un multiple de 8*n | #define LCLE 8192 // longueur de la clé : 8ko = 65536 bits, ATTENTION, doit être un multiple de 8*n | ||||
| /* Fonction qui initialise la clé à partir d'un fichier externe. */ | /* Fonction qui initialise la clé à partir d'un fichier externe. */ | ||||
| int init_cle_xor(void); | |||||
| extern int init_cle_xor(void); | |||||
| /* Fonction de chiffrement avec xOR, en utilisant une clé externe provenant d'un fichier. */ | /* Fonction de chiffrement avec xOR, en utilisant une clé externe provenant d'un fichier. */ | ||||
| void chiffre_xor_fichier(char *buf, int l); | |||||
| extern void chiffre_xor_fichier(char *buf, int l); | |||||
| #endif | #endif | ||||
| #ifdef PLAYFAIR | #ifdef PLAYFAIR | ||||
| @@ -42,14 +37,10 @@ void chiffre_xor_fichier(char *buf, int l); | |||||
| #define LCM 6 // Longueur du côté de la matrice | #define LCM 6 // Longueur du côté de la matrice | ||||
| /* Fonction qui initialise la table de chiffrement. */ | /* Fonction qui initialise la table de chiffrement. */ | ||||
| void init_table_chiffre(char *cle); | |||||
| /* Fonction qui définit les coordonnées d'un caractère à partir de sa position dans la table. */ | |||||
| void coordCar(char C, int *l, int *c); | |||||
| /* Fonction qui retourne le caractère de la ligne l, colonne c. */ | |||||
| char carLC(int l, int c); | |||||
| extern void init_table_chiffre(char *cle); | |||||
| /* Fonction qui chiffre directement dans le buffer des données à chiffrer */ | /* Fonction qui chiffre directement dans le buffer des données à chiffrer */ | ||||
| void chiffre_playfair(char *B, int T); // B adresse du buf, T le nb d'octets | |||||
| extern void chiffre_playfair(char *B, int T); // B adresse du buf, T le nb d'octets | |||||
| /* Fonction inverse de chiffre_playfair, puisque cette fonction n'est pas involutive */ | /* Fonction inverse de chiffre_playfair, puisque cette fonction n'est pas involutive */ | ||||
| void dechiffre_playfair(char *B, int T); // B adresse du buf, T le nb d'octets | |||||
| extern void dechiffre_playfair(char *B, int T); // B adresse du buf, T le nb d'octets | |||||
| #endif | #endif | ||||
| #endif | #endif | ||||
| @@ -21,11 +21,11 @@ | |||||
| /* Variables globales */ | /* Variables globales */ | ||||
| int RUN = 1; // booléen pour la boucle d'acceptation | |||||
| int Chiff = 0; // valeur pour l'option de chiffrement, -1 pour local, 1 pour distant, 0 pour rien | |||||
| in_port_t PORTL, PORTD; // ports distant et local au format du réseau ! | |||||
| uint32_t ADDRD; // adresse distante au format réseau | |||||
| int SidLoc, SidDist; // variables globales des deux taches de transfert | |||||
| static int RUN = 1; // booléen pour la boucle d'acceptation | |||||
| static int Chiff = 0; // valeur pour l'option de chiffrement, -1 pour local, 1 pour distant, 0 pour rien | |||||
| static in_port_t PORTL, PORTD; // ports distant et local au format du réseau ! | |||||
| static uint32_t ADDRD; // adresse distante au format réseau | |||||
| static int SidLoc, SidDist; // variables globales des deux taches de transfert | |||||
| /* Fonction qui agit en tant que handler pour signal() */ | /* Fonction qui agit en tant que handler pour signal() */ | ||||
| @@ -17,24 +17,24 @@ | |||||
| #include <netdb.h> | #include <netdb.h> | ||||
| /* Fonction qui traduit une adresse IPv4 en chaîne de caractères xxx.xxx.xxx.xxx */ | /* Fonction qui traduit une adresse IPv4 en chaîne de caractères xxx.xxx.xxx.xxx */ | ||||
| char *adip(uint32_t A); | |||||
| extern char *adip(uint32_t A); | |||||
| /* Fontion qui fabrique un IPv4 au format réseau */ | /* Fontion qui fabrique un IPv4 au format réseau */ | ||||
| uint32_t makeip4(int a, int b, int c, int d); | |||||
| extern uint32_t makeip4(int a, int b, int c, int d); | |||||
| /* Fonction qui agit en tant que handler pour signal() */ | /* Fonction qui agit en tant que handler pour signal() */ | ||||
| void interrupt(int S); | |||||
| extern void interrupt(int S); | |||||
| /* Fonction qui lit taille octets à la fois */ | /* Fonction qui lit taille octets à la fois */ | ||||
| int readNbc(int fd, char *buffer, int taille); | |||||
| extern int readNbc(int fd, char *buffer, int taille); | |||||
| /* Fonction du thread qui lit le port local et écrit vers le port distant */ | /* Fonction du thread qui lit le port local et écrit vers le port distant */ | ||||
| void *fct_th(void *p); | |||||
| extern void *fct_th(void *p); | |||||
| /* Création de la passerelle pour le client */ | /* Création de la passerelle pour le client */ | ||||
| int liaison(int fd); | |||||
| extern int liaison(int fd); | |||||
| /* Message d'aide pour l'utilisateur */ | /* Message d'aide pour l'utilisateur */ | ||||
| void finerr(char *N, int err); | |||||
| extern void finerr(char *N, int err); | |||||
| #endif | #endif | ||||