• # Re

    Posté par . En réponse au message Comment voir le format précis des paquets pour un protocole???. Évalué à 3.

    Pour tout les protos gérés par le noyau linux en natif, c'est très simple, il te suffit d'aller voir dans les headers de ce dernier.

    Exemple pour l'IGMP:

    /usr/src/linux-2.6.13.4/include/linux/igmp.h



    struct igmpv3_query {
    __u8 type;
    __u8 code;
    __u16 csum;
    __u32 group;
    #if defined(__LITTLE_ENDIAN_BITFIELD)
    __u8 qrv:3,
    suppress:1,
    resv:4;
    #elif defined(__BIG_ENDIAN_BITFIELD)
    __u8 resv:4,
    suppress:1,
    qrv:3;
    #else
    #error "Please fix <asm/byteorder.h>"
    #endif
    __u8 qqic;
    __u16 nsrcs;
    __u32 srcs[0];
    };


    Sachant que cette structure sera généralement utilisé dans le contexte suivant:


    struct igmpv3_query *datas;
    char *pkt;
    ...
    pkt = recv(...);
    datas = (struct igmpv3_query *)pkt;


    Ta structure décrit parfaitement le paquet à priori (taille et ordre des champs).
    Voilà voilà.

    Pour les autres protos, tu peux regardes les dissectors Ethereal, mais les RFC me semble incontournable, au moins si tu veux comprendre le proto.