J'écris un programme pour surveiller le trafic FTP à l'aide de sockets raw. Maintenant, je suis en mesure de déterminer début des données dans le paquet TCP en utilisant ce code:Comment déterminer le début de la charge utile de données dans le paquet TCP?
// char * packet;
// struct * iphdr;
// struct * tcphdr;
// ...
// check, whether sniffed ethernet frame contains IP and TCP
char * data;
data = (packet + sizeof (struct ethhdr) + sizeof (struct tcphdr) + (header_ip->ihl * 4) + header_tcp->doff) + 4;
Cela fonctionne très bien, mais je dois ajouter le nombre « magique » 4 pointeur de données. Sans l'ajouter, la chaîne finale commence avec peu de caractères sans signification.
Existe-t-il une solution propre pour déterminer le début des données transférées? (sans utiliser de bibliothèques spécialisées telles que libcap, etc.)
Merci.
Qu'est-ce que vous voulez dire par 'struct tcphdr'? – Dummy00001