J'utilise pcap pour créer un renifleur de paquets.
i ont cette structure tcp:numéro de séquence d'impression d'un paquet reniflé
typedef struct TSP_header{
unsigned short int sport;
unsigned short int dport;
unsigned int seqnum;
unsigned int acknum;
unsigned char reserved:4, offset:4;
unsigned int
tcp_res1:4, //little-endian
tcph_hlen:4, //length of tcp header in 32-bit words
tcph_fin:1, //Finish flag "fin"
tcph_syn:1, //Synchronize sequence numbers to start a connection
tcph_rst:1, //Reset flag
tcph_psh:1, //Push, sends data to the application
tcph_ack:1, //acknowledge
tcph_urg:1, //urgent pointer
tcph_res2:2;
unsigned short int tcph_win;
unsigned short int tcph_chksum;
unsigned short int tcph_urgptr;
}TSP_header;
Comment imprimer le numéro de séquence?
devrais-je utiliser htons (sequence_number) ?? parce que ça ne marche pas de cette façon !!
mon autre question est quel est le nombre après la déclaration de variable?
ce que signifie 4 dans tcph_hlen: 4
Je ne pense pas que ntohl() fonctionne parce qu'il me donne une séquence négative et des numéros d'ack. – scatman
ntohl prend un * entier non signé * comme paramètre et en résulte un entier * non signé *. Donc, à moins que vous n'ayez fait la grosse erreur de mettre le résultat de ntohl dans un * signed * int, les nombres négatifs ne peuvent pas arriver. Montrez votre code. – bortzmeyer
Je vous donne un conseil utile: lisez la documentation. 'man 3 printf' vous dira que "d, i L'argument int est converti en notation décimale signée." Je vous laisse voir par vous-même ce qui est nécessaire pour un non signé. – bortzmeyer