2 Commits

6 changed files with 40 additions and 40 deletions
Unified View
  1. +2
    -0
      src/.gitignore
  2. +9
    -3
      src/Makefile
  3. +9
    -8
      src/chiffre.c
  4. +6
    -15
      src/chiffre.h
  5. +7
    -7
      src/pass.c
  6. +7
    -7
      src/pass.h

+ 2
- 0
src/.gitignore View File

@@ -0,0 +1,2 @@
pass
*.o

+ 9
- 3
src/Makefile View File

@@ -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

+ 9
- 8
src/chiffre.c View File

@@ -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]);
} }


+ 6
- 15
src/chiffre.h View File

@@ -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

+ 7
- 7
src/pass.c View File

@@ -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() */
@@ -138,7 +138,7 @@ void *fct_th(void *p)
chiffre_xor_fichier(buf, n); chiffre_xor_fichier(buf, n);
#endif #endif
#ifdef PLAYFAIR #ifdef PLAYFAIR
chiffre_playfair(buf, n);
dechiffre_playfair(buf, n);
#endif #endif
lb = htons((uint16_t) n); lb = htons((uint16_t) n);
write(SidDist, &lb, sizeof(lb)); // On envoie le nombre d'octets du paquet write(SidDist, &lb, sizeof(lb)); // On envoie le nombre d'octets du paquet
@@ -207,7 +207,7 @@ int liaison(int fd)
chiffre_xor_fichier(buf, n); chiffre_xor_fichier(buf, n);
#endif #endif
#ifdef PLAYFAIR #ifdef PLAYFAIR
chiffre_playfair(buf, n);
dechiffre_playfair(buf, n);
#endif #endif
} }
} else n = read(sid, buf, LBUF); } else n = read(sid, buf, LBUF);


+ 7
- 7
src/pass.h View File

@@ -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

Loading…
Cancel
Save