IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau C Discussion :

Probleme avec tcp_info


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Par défaut Probleme avec tcp_info
    Bonjour,

    je réalise un sniffer avec pcap (tcpdump) sous linux et j'aimerais utiliser la structure tcp_info pour affiner mon filtre (par exemple : si le mss est spécifié).

    Le probleme est que je ne comprend rien à cette structure qui n'est ni commentée ni expliquée nulle part (<netinet/tcp.h>). Comment savoir quelles options sont utilisées ?

    Merci d'avance

  2. #2
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Par défaut
    J'avais déjà vu cette page mais cela ne m'avais pas aidé.

    Je vous explique rapidement plus en détails mon problème.

    J'utilise pcap pour récupérer des paquets sur lesquels je veux avoir certaines informations (valeur du MSS lors du handshake en l'occurrence).

    Pour cela je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    const struct etherhdr*etherhdr;
    const struct ip* iphdr;
    const struct tcphdr* tcphdr;
    const struct tcp_info* tcpinfo;
     
    int etherhdr_size = sizeof(struct etherhdr);
    int iphdr_size = sizeof(struct ip);
    int tcphdr_size = sizeof(struct tcphdr);
    int tcpinfo_size = sizeof(struct tcp_info);
     
    etherhdr = (struct etherhdr *) packet;
    iphdr = (struct ip *) (packet + etherhdr_size);
    tcphdr = (struct tcphdr *) (packet + etherhdr_size + iphdr_size);
    tcpinfo = (struct tcp_info *) (packet + etherhdr_size + iphdr_size + tcphdr_size);
    Lorsque j'affiche des informations sur le header TCP ou IP j'ai des informations correctes mais lorsque je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printf("Send MSS = %u & Receive MSS = %u & Advertised MSS = %u\n", tcpinfo->tcpi_snd_mss, tcpinfo->tcpi_rcv_mss, tcpinfo->tcpi_advmss);
    J'ai des valeurs bizzaroides comme 4154236971 pour le MSS send alors que wireshark m'indique des valeurs cohérentes, 1460, 1448, ...

    J'ai également fais un ntohs sur ces valeurs mais elles ne semblent pas plus cohérentes (259, 11176, ...).

    J'espère que c'est clair

    Merci

  4. #4
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Qu'est ce qui te fait penser que tu peux faire ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tcpinfo = (struct tcp_info *) (packet + etherhdr_size + iphdr_size + tcphdr_size);
    J'ai l'impression que tu n'as pas vraiment lu le lien que j'ai donné.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Par défaut
    Re,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tcpinfo = (struct tcp_info *) (packet + etherhdr_size + iphdr_size + tcphdr_size);
    Semblait couler de source vu que cela vient après le header TCP (qui ne contient pas ces infos).

    J'ai lu plus en détails l'article et ca ne m'aide pas vraiment. Il explique une méthode pour récupérer des informations sur une connexion TCP en créant une socket. Mais moi dans mon sniffer je n'ai accès à aucune socket (utilise les fonctionnalités de pcap) et je risque d'avoir plusieurs centaines de connexions TCP simultanées, entrantes ou sortantes ...

    Puis il indique un fichier (tcp.c) ou on peut trouver des explications sur comment la structure est remplie mais je n'ai pas ce fichier sur ma distri (Ubuntu 8.04).

    Ou alors j'ai raté qqchose dans l'article

    Donc que ce soit en utilisant cette structure tcp_info ou pas, comment puis avoir accès aux informations contenues dans les options des paquets TCP (à part chercher pendant longtemps pour créer ma propre structure ...) ?

    Merci d'avance

  6. #6
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Citation Envoyé par Martin.D Voir le message
    Semblait couler de source vu que cela vient après le header TCP (qui ne contient pas ces infos).
    Ah bon? où as tu été péché cela? après le header TCP, il y a les datas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  2. Problèmes avec le filtrage des ip
    Par berry dans le forum Réseau
    Réponses: 9
    Dernier message: 30/12/2002, 07h51
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo