|
|
Ping TCP en C
| Auteur |
Message |
gurbix
Inscrit le: 30 Oct 2008 Messages: 4
|
Posté le: Jeu Oct 30, 2008 2:35 pm Sujet du message: Ping TCP en C |
|
|
Bonjour,
On m'a demandé pour un projet d\'école, de mettre en place un ping TCP en
langage C. Ce ping doit pouvoir se faire à partir d'une machine Linux
(principalement Ubuntu), d'une machine FreeBSD, et éventuellement à
partir d'un OS Windows.
Mon probleme est le suivant :
Comment envoyer une trame TCP en langage C vers une adresse IP, sachant
que la machine cible n'aura aucun port ouvert?
Un deuxieme probleme qui à mon avis est plus trivial : Comment évaluer le
temps de réponse de la cible, avec une précision à la milliseconde, voire
microseconde.
Je vous remercie de votre aide précieuse |
|
| Revenir en haut |
|
| Auteur |
Message |
_sebf Site Admin
Inscrit le: 16 Déc 2004 Messages: 617
|
Posté le: Jeu Oct 30, 2008 3:08 pm Sujet du message: |
|
|
Lu gurbix,
Si tu envoi un SYN à un hote qui n'écoute pas le port, tu recevras, probablement, un retour d'erreur ICMP. Cela peux te permetre la mesure. Sinon, oui le port devra être ouvert.
@+ _________________ _SebF
Sebastien FONTAINE |
|
| Revenir en haut |
|
| Auteur |
Message |
gurbix
Inscrit le: 30 Oct 2008 Messages: 4
|
Posté le: Jeu Oct 30, 2008 3:41 pm Sujet du message: |
|
|
Hello,
Après avoir étudié un peu plus en détail le problème, voilà comment je vois la chose.
Je devrais commencer par créer une trame TCP SYN. Une fois cette trame créée, je devrais ensuite l'envoyer à la cible en lançant un chronomètre, et attendre sa réponse (que ce soit un ACK ou un RST importe peu finalement, tant qu'il y a une réponse) pour arrêter le chrono et afficher le résultat de la requête.
Je suis malheuresement confronté à 2 problèmes principaux : Comment fait-on pour créer une trame TCP?, et comment fait-on pour l'envoyer sans avoir à ouvrir de socket?
Merci de ton aide |
|
| Revenir en haut |
|
| Auteur |
Message |
_sebf Site Admin
Inscrit le: 16 Déc 2004 Messages: 617
|
Posté le: Jeu Oct 30, 2008 6:13 pm Sujet du message: |
|
|
Lu gurbix,
Tu développe avec la librairie Libpcap et alors u forgera au niveau 2 et donc sans utiliser les socket.
@+ _________________ _SebF
Sebastien FONTAINE |
|
| Revenir en haut |
|
| Auteur |
Message |
analyzer

Inscrit le: 20 Déc 2004 Messages: 86 Localisation: Lyon
|
|
| Revenir en haut |
|
| Auteur |
Message |
gurbix
Inscrit le: 30 Oct 2008 Messages: 4
|
Posté le: Ven Oct 31, 2008 9:42 pm Sujet du message: |
|
|
Hello,
Merci à vous 2, j'ai suivi tes conseils sebf, et voila où j'en suis :
J'ai téléchargé libnet pour générer les trames, et libpcap pour sniffer le traffic et analyser les trames.
J'ai fini la partie génération de trames, il ne me reste plus qu'à les récuperer avec libpcap pour obtenir la réponse au SYN.
J'ai par contre un problème minime qui peut quand même s'avérer problématique. La génération de trames avec libnet fonctionne parfaitement, mais uniquement lorsque je suis connecté en ethernet. Dès que je passe sur le wifi, libnet ne veut plus générer la trame et me met un message d'erreur comme quoi il ne veut pas générer la trame IP parcequ'il n'a pas d'adresse source valide. Je pense que ça vient de ma distrib d'Ubuntu, puisque le message provient d'ioctrl. Si vous avez des pistes pour résoudre ce problème, elles seront toutes bienvenues.
Je vous tiendrais au courant de mon avancement |
|
| Revenir en haut |
|
| Auteur |
Message |
_sebf Site Admin
Inscrit le: 16 Déc 2004 Messages: 617
|
Posté le: Ven Oct 31, 2008 11:12 pm Sujet du message: |
|
|
Lu gurbix,
Libpcap fonctionne très en wifi. Tu tester les différents exe de ce site et regarder leurs code source.
@+ _________________ _SebF
Sebastien FONTAINE |
|
| Revenir en haut |
|
| Auteur |
Message |
gurbix
Inscrit le: 30 Oct 2008 Messages: 4
|
Posté le: Sam Nov 01, 2008 12:17 am Sujet du message: |
|
|
Hello seb,
Oui c'est sur libpcap fonctionne très bien sur n'importe quelle interface, mais dans toutes les docs que j'ai consulté, libpcap sert à sniffer les paquets passants sur une/des interfaces. Pour faire fonctionner mon ping TCP, je dois non seulement sniffer l'interface qui va recevoir le ACK ou RST, mais aussi générer ma trame pour l'envoyer à l'IP de destination avec le flag. On peut générer des trames avec libpcap? |
|
| Revenir en haut |
|
| Auteur |
Message |
_sebf Site Admin
Inscrit le: 16 Déc 2004 Messages: 617
|
Posté le: Sam Nov 01, 2008 12:59 am Sujet du message: |
|
|
Oui sans soucis _________________ _SebF
Sebastien FONTAINE |
|
| Revenir en haut |
|
| Auteur |
Message |
analyzer

Inscrit le: 20 Déc 2004 Messages: 86 Localisation: Lyon
|
Posté le: Sam Nov 01, 2008 1:15 am Sujet du message: |
|
|
libnet ne veut plus générer la trame et me met un message d'erreur comme quoi il ne veut pas générer la trame IP parcequ'il n'a pas d'adresse source valide.
Ca ressemble plus à un problème lié au fait que tu sois pas en managed, voire not-associated au moment où tu utilises ton soft oO
Que ca soit wifi ou ethernet, le protocole réseau ne change pas (je parle pas des aspects wifi mais du phénomène d'abstraction matérielle). Exemple tout bête, l'utilitaire ping fonctionne en ethernet comme en wifi, car les interfaces sont les memes, c le driver qui gère les spécificités.
Quoiqu'il en soit, tu peux utiliser un utilitaire de sebf pour te forger un paquet pour voir si c'est possible, il y a de forte chance que tu aies le meme message d'erreur, et que par conséquent le problème vienne plutot de te configuration au moment du test !
My 2 cents
NB: Par contre, rien n'empeche aussi que ca soit un bug lié au driver wifi que tu as, perso j'ai un chip intel 4965, et j'ai eu beaucoup de mal à faire fonctionner le mode monitor par exemple (bugs sur bugs) :] |
|
| Revenir en haut |
|
|
Page 1 sur 1
|
|
|