Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1554 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Programme en C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Programme en C

n°2170885
betty14
Posté le 12-01-2013 à 22:30:23  profilanswer
 

Bonsoir tout le monde , j'ai besoin d'aide pour mon mini projet en informatique. Je dois écrire un programme en langage C permettant de traiter des trames générées par un sniffer de trames Ethernet dans lesquelles sont  
encapsulées des paquets TCP/IP. Ces trames brutes doivent permettre d'identifier les ports ouverts (trous de sécurité) d'une machine distante.

mood
Publicité
Posté le 12-01-2013 à 22:30:23  profilanswer
 

n°2170886
Profil sup​primé
Posté le 12-01-2013 à 22:34:23  answer
 

quel traitement ?
 
La mort ou la tumba ?

n°2170887
Timoonn
Moune pour les intimes :o
Posté le 12-01-2013 à 22:34:23  profilanswer
 

Bah c'est cool.


---------------
HFPonss - Désactivez votre Adblock sur HFR - Découper le monde à coup de rasoir pour voir au cœur du fruit, le noyau noir.
n°2170888
betty14
Posté le 12-01-2013 à 22:59:46  profilanswer
 

la tumba ;)

n°2170889
Ernestor
modo-coco :o
Posté le 12-01-2013 à 23:00:51  profilanswer
 

Ce sujet a été déplacé de la catégorie Discussions vers la categorie Programmation par Ernestor


---------------
Idéaliste pragmatique gauchiste cherche camarades pour fonder un parti
n°2170893
Farian
Posté le 13-01-2013 à 00:25:31  profilanswer
 

Bonsoir !
 
Cela parait étrange d'utiliser un "sniffer" pour déterminer les ports ouverts ... En effet, le sniffer vous permet de voir toutes les trames échangées sur les sockets "Established", mais qui ne correspondent pas aux ports ouverts. Pour valider qu'un port est ouvert, il faut être présent au moment où va passer la séquence "SYN - SYN ACK - ACQ", donc au moment où un client va réussir à se connecter à une socket "Listening". Si aucune connexion n'a lieu pendant que vous observez le traffic, vous ne verrez rien du tout.
 
Sinon, pour réaliser ce sniffer, aucune difficulté particulière, il suffit de regarder :  
 * Création d'une socket "RAW",
 * Entête "IP"
 * Entête TCP
Et, bien sûr, se plonger dans le fonctionnement interne du protocole et les différentes séquences (connexion, échange de données et terminaison).
 
Note : J'ai dit qu'il n'y a aucune difficulté majeure, pas que cela se faisait en 5 minutes :)
 
Si j'ai raté quelque chose au niveau de la détermination des ports ouverts, je compte sur vous pour me corriger (on apprend à tout âge !) :)

n°2170895
betty14
Posté le 13-01-2013 à 00:34:25  profilanswer
 

En fait le travail demandé ,c'est écrire un programme qui va lire un fichier qui contient des trames Ethernet/TCP IP 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 déjà donné )

n°2170897
betty14
Posté le 13-01-2013 à 00:41:05  profilanswer
 

j'arrive pas à écrire la partie pour découper la trame en octet et lire les informations essentielles ( taille de la trame, adresses MAC sources et destinations, protocole IP, taille de l’entête, etc ) et voir si le port est ouvert ou fermé

n°2170898
Farian
Posté le 13-01-2013 à 00:45:19  profilanswer
 

Ok ! Vu comme ça, cela prend plus de sens :)
 
Le travail à faire n'est pas énorme :  
 
 * être capable de lire toutes les trames : à partir de la spécification de l'entête IP, déterminer la longueur totale de la trame et lire le nombre d'octets correspondants, puis passer à la trame suivante
 * Identifier une trame "SYN" sur le port spécifié -> récupérer le numéro de séquence et les IP/port du client
 * Rechercher une trame "SYN - ACQ" pour le port spécifié adressé à l'IP/port récupéré au dessus => Vérification du numéro d'acquittement et récupération du numéro de séquence
 * Rechercher la dernière trame "ACK" avec le bon numéro de séquence et le bon numéro d'acquittement
 
Si on arrive à récupérer les 3 trames, c'est bon, logiquement !

n°2170900
betty14
Posté le 13-01-2013 à 00:53:35  profilanswer
 

le fichier contient  :  
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

mood
Publicité
Posté le 13-01-2013 à 00:53:35  profilanswer
 

n°2170902
Farian
Posté le 13-01-2013 à 01:04:06  profilanswer
 

C'est étrange, cela ne ressemble pas à des trames IP.
 
De plus, les adresses MAC ne sont pas dans la trame IP (puisqu'elle ne s'intéresse qu'aux adresses IP, justement), mais dans la trame Ethernet.
 
Si on part du principe que l'on a déjà des trames TCP dans le fichier, la grille de lecture peut être trouvée ici :  http://fr.wikipedia.org/wiki/Trans [...] l_Protocol
 
Attention, toutes les trames concernant IP et ses sous-protocoles sont en "big endian" :)
 
 
 

n°2170903
Farian
Posté le 13-01-2013 à 01:22:40  profilanswer
 

Après avoir regardé, il est nécessaire d'avoir les données IP pour traiter les données TCP.
 
Le contenu du fichier que vous indiquez ne correspond pas à des trames IP, mais plutôt à des trames Ethernet II, cf http://fr.wikipedia.org/wiki/Ether [...] thernet_II, avec des trames IP V4 ( octets 12/13 valant 08 00 ), que l'on vérifie avec les 4 bits de poids fort de l'octet numéro 14 à 4. Cf. http://fr.wikipedia.org/wiki/IPv4 pour les trames IP V4
 
Je vous laisse le soin de décoder le reste !


Message édité par Farian le 13-01-2013 à 01:27:14
n°2170909
betty14
Posté le 13-01-2013 à 11:43:30  profilanswer
 

Mercii beaucoup :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Programme en C

 

Sujets relatifs
[C/Reseau] proxy FTP (simple) en Cprogramme C :jeu de cartes
Programme C++ , erreur ? Ou ça ?programme C
Programme C++ / Fortran sous Visual 6 - Convention d'appelProgramme pour ouvrir une fenêtre miniature en fonction de la T°C
pouvez vous m'aidez a crée un programme en C[C] programme cherche les racines des polynomes
Dessiner graphe via un programme C++Programme en C qui demande la saisie du JJ/MM/AAAA
Plus de sujets relatifs à : Programme en C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR