le serveur envoie un message crypté avec XOR, la clé est le n°de port
le cliet recois les données et les décrypte avec la clé (le port)
serveur arguments : PORT MESSAGE
client arguments : HOTE PORT
activez le serveur avec un message et faite telnet [127.0.0.1] [n°port] : il recoit les données...cryptées
le cryptage n'est pa super puissant mai c juste pour donné l'idée
Source / Exemple :
//#######################SERVEUR#########################"
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
int main(int argv,char*argc[])
{
system("clear");
int sock,nsock, cle = atoi(argc[1]), n;
struct sockaddr_in sin;
char msg[255], buffer[255];
strcpy(msg, argc[2]);
for(n = 0; n < (strlen(msg) + 1); n++)
{
buffer[n] = msg[n] ^ cle;
}
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = INADDR_ANY;
sin.sin_port = htons(atoi(argc[1]));
bzero(&(sin.sin_zero),8);
sock = socket(AF_INET,SOCK_STREAM,0);
printf(" port %s en écoute...\n", argc[1]);
bind(sock, (struct sockaddr *)&sin, sizeof(struct sockaddr));
listen(sock,50);
while(1)
{
int sin_size = sizeof(struct sockaddr_in);
nsock = accept(sock,(struct sockaddr *)&sin,&sin_size);
printf(" connection de %s sur le port %s\n",inet_ntoa(sin.sin_addr),argc[1]);
send(nsock,buffer,sizeof(buffer),0);
}
close(nsock);
return 0;
}
//#######################CLIENT##############################
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
int main(int argv,char*argc[])
{
system("clear");
char buffer[255], mot[255];
int sock, cle = atoi(argc[2]), n;
struct sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = inet_addr(argc[1]);
sin.sin_port = htons(atoi(argc[2]));
bzero(&(sin.sin_zero),8);
sock = socket(AF_INET,SOCK_STREAM,0);
printf(" tentative de connection sur %s / %s...\n", argc[1], argc[2]);
connect(sock,(struct sockaddr*)&sin,sizeof(struct sockaddr));
printf(" connecté %s / %s\n", argc[1], argc[2]);
recv(sock,buffer,sizeof(buffer),0);
for(n = 0; n < (strlen(buffer) + 1); n++)
{
mot[n] = buffer[n] ^ cle;
}
printf(" buffer: %s\n", mot);
close(sock);
return 0;
}
Conclusion :
gcc serveur.c -o serveur
gcc client.c -o client
serveur 1245 coucou!
client 127.0.0.1 1245
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.