Lecture de trame
anjali26
Messages postés
4
Statut
Membre
-
anjali26 Messages postés 4 Statut Membre -
anjali26 Messages postés 4 Statut Membre -
Bonsoir tout le monde.
Je suis entrain de faire un projet portant sur le décodage de trames Ethernet/TCP-IP et son diagnostic de vulnérabilité.
Bon pour faire simple je vais vous copier/coller le "travail à réaliser"
Travail à réaliser:
Pour établir les connexions et enregistrer les trames de réponse les programmes "portscan2" et "wiredump" sont mis à votre disposition. Ils s'occupent de sauvegarder les trames dans les fichiers "dump.txt" et "dump.pcap". Normalement le programme "portscan2" est appelé par le script "scriptdelancement". Vous n'avez donc pas à l'utiliser directement. En fait vous devez écrire l'équivalent du programme "decode" (appelé lui aussi dans le "scriptdelancement") qui lit les trames dans le fichier "dump.txt" et les décode afin de savoir si c'est une trame indiquant une connexion acceptée sur le port spécifié. Ce fichier est au format texte, il se compose d'une trame par ligne, chaque octet est écrit sous sa forme hexadécimale et séparé des autres par un espace.
Fichier dump.txt :
00 0c 29 80 83 2f 00 50 56 f8 98 7c 08 00 45 00 00 28 60 8f 00 00 80 06 9b 2b 4a 7d 4d 68 c0 a8 e6 87 00 4f 8d f4 2c 06 3b a5 f7 4d 97 c8 50 10 fa f0 f0 c8 00 00 00 00 00 00 00 00
00 0c 29 80 83 2f 00 50 56 f8 98 7c 08 00 45 00 00 28 60 90 00 00 80 06 9b 2a 4a 7d 4d 68 c0 a8 e6 87 00 4f 8d f4 2c 06 3b a5 f7 4d 97 c8 50 10 fa f0 f0 c8 00 00 00 00 00 00 00 00
00 0c 29 80 83 2f 00 50 56 f8 98 7c 08 00 45 00 00 28 60 91 00 00 80 06 9b 29 4a 7d 4d 68 c0 a8 e6 87 00 4f 8d f4 2c 06 3b a5 f7 4d 97 c8 50 14 fa f0 f0 c4 00 00 00 00 00 00 00 00
VOILA MON TRAVAIL QUE J'AI COMMENCE AUJOURD'HUI (et que je dois rendre demain dans l'apres midi ) :
Mais voilà il y a un probleme avec ma procédure "eneleveespaces"...
Voila ce que ca m'affiche en le compilant:
Je pense que c'est mon "trameAvecEspace" qui pose problème...(en espérant qu'il soit résolu rapidement!! )
PS: mince!! je viens de voir que la mise en page n'était pas terrible,avec un manque de couleur et une mauvaise pagination :s(surement du à un mauvais copier/coller )
Je suis entrain de faire un projet portant sur le décodage de trames Ethernet/TCP-IP et son diagnostic de vulnérabilité.
Bon pour faire simple je vais vous copier/coller le "travail à réaliser"
Travail à réaliser:
Pour établir les connexions et enregistrer les trames de réponse les programmes "portscan2" et "wiredump" sont mis à votre disposition. Ils s'occupent de sauvegarder les trames dans les fichiers "dump.txt" et "dump.pcap". Normalement le programme "portscan2" est appelé par le script "scriptdelancement". Vous n'avez donc pas à l'utiliser directement. En fait vous devez écrire l'équivalent du programme "decode" (appelé lui aussi dans le "scriptdelancement") qui lit les trames dans le fichier "dump.txt" et les décode afin de savoir si c'est une trame indiquant une connexion acceptée sur le port spécifié. Ce fichier est au format texte, il se compose d'une trame par ligne, chaque octet est écrit sous sa forme hexadécimale et séparé des autres par un espace.
Fichier dump.txt :
00 0c 29 80 83 2f 00 50 56 f8 98 7c 08 00 45 00 00 28 60 8f 00 00 80 06 9b 2b 4a 7d 4d 68 c0 a8 e6 87 00 4f 8d f4 2c 06 3b a5 f7 4d 97 c8 50 10 fa f0 f0 c8 00 00 00 00 00 00 00 00
00 0c 29 80 83 2f 00 50 56 f8 98 7c 08 00 45 00 00 28 60 90 00 00 80 06 9b 2a 4a 7d 4d 68 c0 a8 e6 87 00 4f 8d f4 2c 06 3b a5 f7 4d 97 c8 50 10 fa f0 f0 c8 00 00 00 00 00 00 00 00
00 0c 29 80 83 2f 00 50 56 f8 98 7c 08 00 45 00 00 28 60 91 00 00 80 06 9b 29 4a 7d 4d 68 c0 a8 e6 87 00 4f 8d f4 2c 06 3b a5 f7 4d 97 c8 50 14 fa f0 f0 c4 00 00 00 00 00 00 00 00
VOILA MON TRAVAIL QUE J'AI COMMENCE AUJOURD'HUI (et que je dois rendre demain dans l'apres midi ) :
/*Procedure qui enleve les espaces*/
void enleveespaces (const char trameAvecEspace[])
{
int i,j,n = strlen(trameAvecEspace);
for (i = 0 ; i <= n ; i++)
{
if (trameAvecEspace[i]==' ')
{
for(j = i ; j <= n ; j++)
{
trameAvecEspace[j]=trameAvecEspace[j+1];
}
}
}
}
/*Fonction "decoupe" qui d\u00e9coupe "trame"*/
char *decoupe (const char *trameAvecEspace, unsigned int debut, unsigned int fin)
{
char *new_trameAvecEspace = NULL;
int i;
if (trameAvecEspace != NULL && debut< fin)
{
new_trameAvecEspace = malloc (sizeof (*new_trameAvecEspace) * (fin - debut * 2));
if (new_trameAvecEspace != NULL)
{
for (i = debut; i <=fin; i++)
{
new_trameAvecEspace[i-debut] = trameAvecEspace[i];
}
new_trameAvecEspace[i-debut] = '\0';
}
}
return new_trameAvecEspace;
}
int main()
{
const char *IP, *TCP, *ethernet;
const char *trameAvecEspace;
/*Partie ethernet*/
const char *Adresse_source1, *Adresse_destination1, *Protocole1;
/*Partie IP*/
const char *Version_IP, *Long_entete, *Type_service, *Long_total, *Identification, *Flag1, *TTL, *Protocole2, *Checksum1, *Adresse_source2, *Adresse_destination2;
/*Partie TCP*/
const char *Port_source, *Port_destination, *Num_sequence, *Num_acquittement, *Taille_entete, *Flag2, *Taille_fenetre, *Checksum2;
const char *ACK;
/*decoupage de la trame*/
ethernet = decoupe(trameAvecEspace, 0, 42);
IP = decoupe(trameAvecEspace,42 , 102);
TCP = decoupe(trameAvecEspace,102 , 180);
/*decoupage des champs*/
/*Ethernet*/
Adresse_destination1 = decoupe(ethernet, 0,18);
Adresse_source1 = decoupe(ethernet, 18,36);
Protocole1 = decoupe(ethernet, 36,42);
printf(">>Partie Ethernet<<\n\n");
printf("Adresse de destination : %s\n", Adresse_destination1);
printf("Adresse source : %s\n" , Adresse_source1);
printf("Protocole : %s\n\n", Protocole1);
/*Partie IP*/
Version_IP = decoupe(IP, 0,1);
Long_entete = decoupe(IP, 2,3);
Type_service = decoupe(IP, 3,6);
Long_total = decoupe(IP, 6,12);
Identification = decoupe(IP, 12,18);
Flag1 = decoupe(IP, 18,24);
TTL = decoupe(IP, 24,26);
Protocole2 = decoupe(IP, 27,30);
Checksum1 = decoupe (IP, 30,36);
Adresse_source2 = decoupe(IP, 36,48);
Adresse_destination2 = decoupe(IP, 48,60);
/*Partie TCP*/
Port_source = decoupe(TCP, 0,6);
Port_destination = decoupe(TCP, 6,12);
Num_sequence = decoupe(TCP, 12,24);
Num_acquittement = decoupe(TCP, 24,36);
Taille_entete = decoupe(TCP, 36,39);
Flag2 = decoupe(TCP, 39,42);
Taille_fenetre = decoupe(TCP, 43,48);
Checksum2 = decoupe(TCP, 48,54);
/*Convertir en d\u00e9cimal*/
unsigned long decPort_source, decPort_destination, decFlag2, decTaille_fenetre;
decPort_source = strtoul(Port_source,0,16);
decPort_destination = strtoul(Port_destination,0,16);
decFlag2 = strtoul(Flag2,0,16);
decTaille_fenetre = strtoul(Taille_fenetre,0,16);
/*Convertir en binaire Flag2*/
int i;
int bin[8] = {0};
for (i=0; i<8 ; i++)
{
bin[i] = decFlag2 % 2;
decFlag2 = decFlag2 /2;
}
printf(">>Partie TCP<<\n\n");
printf("Port source : %d\n", decPort_source);
printf("Port destination : %d\n" , decPort_destination);
printf("Numero de sequence : %s\n", Num_sequence);
printf("Numero d'acquittement : %s\n", Num_acquittement);
printf("Taille de l'entete : %s\n" , Taille_entete);
printf("Taille de la fenetre : %d\n", decTaille_fenetre);
printf("Checksum : %s\n\n\n", Checksum2);
const int MTU = 1500;
const int MAXchar = 1500*2+1500+2;
typedef char t_filename[1024];
void lecture(t_filename fichier){
FILE *fd;
char str[MAXchar];
if ((fd = fopen(fichier,"r")) == NULL)
fprintf(stderr,"ERREUR DE CHARGEMENT DE FICHIER\n");
else {
while (!feof(fd)){
fgets(str,MAXchar,fd);
printf("%s <BR>\n",str);
}
fclose(fd);
}
}
#define TAILLE_MAX 1000
int main(int argc, char *argv[])
{
FILE* fichier = NULL;
char chaine[TAILLE_MAX] = "";
char new_chaine[TAILLE_MAX];
fichier = fopen("dump.txt", "r");
if (fichier != NULL)
{
while(!feof(fichier))
{
fgets(chaine, TAILLE_MAX, fichier);
enleveespaces(chaine);
printf("%s", chaine);
}
fclose(fichier);
}
return 0;
}
Mais voilà il y a un probleme avec ma procédure "eneleveespaces"...
Voila ce que ca m'affiche en le compilant:
In function 'enleveespaces': ligne 16:erreur: assignment of read-only location
Je pense que c'est mon "trameAvecEspace" qui pose problème...(en espérant qu'il soit résolu rapidement!! )
PS: mince!! je viens de voir que la mise en page n'était pas terrible,avec un manque de couleur et une mauvaise pagination :s(surement du à un mauvais copier/coller )
A voir également:
- Lecture de trame
- Trame de fond word - Guide
- Accusé de lecture gmail - Guide
- Confirmation de lecture whatsapp - Guide
- Lecture epub sur pc - Guide
- Télécharger livre de lecture ce2 gratuit pdf - Télécharger - Éducatifs
5 réponses
je ne sais pas si c'est ça mais :
dans ta procedure il y a :
for (i = 0 ; i <= n ; i++)
ça ne serait pas <n plutot et non <= car je crois que tu vas un peut trop loins dans ta chaine ... a voir en affichant n et le comparer a taille_max
dans ta procedure il y a :
for (i = 0 ; i <= n ; i++)
ça ne serait pas <n plutot et non <= car je crois que tu vas un peut trop loins dans ta chaine ... a voir en affichant n et le comparer a taille_max
Ok je prend en note (je n'ai pas de quoi compiler,ni de machine virtuelle pour le voir :s)
crois tu que si au bout d'un moment i = n cela perturbe le bon fonctionnement...je ne comprend pas trop le message d'erreur que ca m'affiche :"assignment of read-only location"
crois tu que si au bout d'un moment i = n cela perturbe le bon fonctionnement...je ne comprend pas trop le message d'erreur que ca m'affiche :"assignment of read-only location"
new_trameAvecEspace = malloc (sizeof (*new_trameAvecEspace) * (fin - debut * 2));
je n'y connais rien dans ce que tu veux faire, mais tu n'aurais pas fait une faute ici ? ce ne serait pas plutot :
new_trameAvecEspace = malloc (sizeof (*new_trameAvecEspace) * ((fin - debut) * 2));
je n'y connais rien dans ce que tu veux faire, mais tu n'aurais pas fait une faute ici ? ce ne serait pas plutot :
new_trameAvecEspace = malloc (sizeof (*new_trameAvecEspace) * ((fin - debut) * 2));
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
oui...
enfin le probleme se situe sur la procédure...
j'ai un peu cherché et c'est enfaite le "const char" de "void enleveespaces (const char trameAvecEspace[])" qui va pas... faut que je le mette en "char" uniquement!
mais j'ai peur que ca me complique les choses dans la partie "découpage de trame"...
enfin le probleme se situe sur la procédure...
j'ai un peu cherché et c'est enfaite le "const char" de "void enleveespaces (const char trameAvecEspace[])" qui va pas... faut que je le mette en "char" uniquement!
mais j'ai peur que ca me complique les choses dans la partie "découpage de trame"...