Forum Programmation.c Programmation Réseaux - Réalisation d'un mini ethereal

Posté par  .
Étiquettes : aucune
0
7
juin
2006
Bonjour, mon cher maître de stage est arrivé hier après 3 mois de stage en me disant, tiens tu vas changer de sujet puisque tu as finis l'autre et voici ce qu'il m'annonça:
"J'aimerai que tu me fasses un truc permettant d'envoyer des paquets (dont la taille peut varier) de protocoles différents (multicast, ICMP, enfin n'importe quel protocole en gros) vers une machine, et permettant de recevoir des paquets et d'analyser ces paquets (à quel protocole appartient-t'il, taille du paquet, flag etc...)"
Donc une fois compris ce qu'il voulait que je fasse et après un décrochement de ma machoire, je me suis dis, moi pour faire communiquer deux machines en C, je connais bien uniquement les sockets, et bien est un bien grand mot! Donc alors, ma question est double:
- Puis je faire ce qu'il me demande avec les sockets?
- Sinon, y a t'il d'autres moyens de communiquer?

Et merci de pas me dire, prends ce logiciel là, il fait très bien ce que tu veux car la boite dans laquelle je suis veux faire son propre logiciel propriétaire pour ça, donc je dois partir de zéro...

Merci d'avance!
  • # Re

    Posté par  . Évalué à 4.

    Tu peux utiliser directement les raw sockets, qui te permettent de forger entièrement tes paquets.
    man 7 raw ainsi que pas mal de doc sur le net pour plus de détails.

    Sinon, jette un oeil du côté de la libpcap, celle ci offre une abstraction intéressante, mais je ne suis pas persuadé qu'elle permette l'envoi de paquet.
    • [^] # Re: Re

      Posté par  . Évalué à 1.

      Il aura peut-être besoin également du Packet Generator CONFIG_NET_PKTGEN du noyau ...
      • [^] # Re: Re

        Posté par  . Évalué à 2.

        Hmm je crois que ce serait plutôt une mauvaise idée ...


        Packet Generator (USE WITH CAUTION)
        CONFIG_NET_PKTGEN:

        This module will inject preconfigured packets, at a configurable
        rate, out of a given interface. It is used for network interface
        stress testing and performance analysis. If you don't understand
        what was just said, you don't need it: say N.


        C'est plus un outil de stress et de mesure de performance comme indiqué, donc je ne pense pas que cela soit adapté.
        • [^] # Re: Re

          Posté par  . Évalué à 2.

          J'aurais peut-être du le préciser dès le départ, en effet.

          Mais à la base, à moins d'avoir quelque chose de bien précis à faire, quand on utilise les raw sockets, c'est que l'on entre déjà dans le domaine de l'expérimental.

          Toutefois, c'est bien dans cette optique que je lui proposais ce module, et pas comme d'une base sur laquelle il devait baser l'architecture de son application ...
    • [^] # Re: Re

      Posté par  . Évalué à 1.

      Autrement, il existe la libnet : http://www.packetfactory.net/libnet/ qui devrait pouvoir t'aider.

      License BSD, donc normalement pas de problème pour faire du proprio avec.

      SInon non, la libpcap lui sera pratique pour lire les paquets, mais pas pour les envoyer (ce que fait très bien la libnet d'ailleurs).

      Donc je dirais le couple libpcap/libnet ou tout a coup de raw socket.
    • [^] # Re: Re

      Posté par  (site web personnel) . Évalué à 1.

      winpcap (le port de libpcap sous win32) peut envoyer des paquets, libpcap je ne sais pas je n'ai pas regardé, mais y'a peut-être moyen...

      /me aussi est en stage et utilise libpcap pour un analyseur de trames SIP
  • # Scapy

    Posté par  . Évalué à 1.

    Regarde du coté de scapy, ca pourrait certainement d'aider.

    C'est un générateur/analyseur de paquets très flexible et en plus scriptable.

    http://www.secdev.org/projects/scapy/
  • # libnet

    Posté par  (site web personnel) . Évalué à 2.

    Si tu veux le faire en C tu peux regarder libnet (paquet libnet1 sous debian).

    Un grand nombre d'exemples de création de raw packet est fourni avec.
    • [^] # Re: libnet

      Posté par  . Évalué à 2.

      Merci à tout le monde pour vos réponse, c'était ce qu'il me fallait pour le moment.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.