J'utilise pcap pour capturer des paquets TCP pour lesquels je voudrais analyser la charge utile. Ma stratégie est la suivante:Comment analyser la charge utile de paquet TCP
- Obtenez l'en-tête Ethernet et vérifier si elle est de type
ETHERTYPE_IP
(paquet IP) - Vérifiez si le paquet IP a protocole
IPPROTO_TCP
(paquet TCP) Vérifiez la taille de la charge utile > 0
(size = ntohs(ip_header->total_length - ip->header_length*4 - sizeof(struct tcp_header))
.Parse charge utile (saisir l'URL hôte)
Je n'ai pas commencé l'analyse de la charge utile encore parce que je reçois des divergences. Ci-dessous est une impression de la charge utile de 10 paquets TCP capturés, en utilisant le filtre "host = www.google.com"
.
Numéro paquet: 3: TCP Packet: Source Port: 80 Dest Port: 58723 Aucune donnée dans le paquet
numéro de paquet: 4: TCP Packet: Source Port: 58723 Dest Port: 80 Aucune donnée dans paquet
numéro de paquet: 5: TCP Packet: Source Port: 58723 Dest Port: 80 Payload: GET/HTTP/1.1 Host: www.goo gle.com User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; fr-fr) AppleWebKit/533.19.4 (KHTML, comme Gecko) Version/5.0.3 Safari/533.19.4 Accepter: application/xml, application/xhtml + xml, texte/html; q = 0.9, text/plain; q = 0.8, image/png, /; q = 0.5 Accepter-Encoding: gzip, dégonfler Cookie: THICNT = 25; SID = DQAAAKIAAAB2ktMrEftADifGm05WkZmlHQsiy1Z2v- Connection: keep-alive
numéro de paquet: 6: TCP Packet: Source Port: 80 Dest Port: 58723 Aucune donnée dans le paquet
numéro de paquet: 7: TCP Packet : Source Port: 80 Dest Port: 58723 Charge utile: \ 272 \ 243 \ 255 \ 375 \ 375} \ 336H \ 221 \ 227 \ 206 \ 312 ~ \ 322 \ 317N \ 236 \ 255A \ 343 # \ 226 \ 370 ֤ \ 245 [\ 327` \ 306 ը nE \ 263 \ 204 \ 313 \ 356 \ 3268) p \ 344 \ 301_Y \ 255 \ 267 \ 240 \ 222x \ 364
numéro de paquet: 8: TCP Packet: Source Port: 58723 Port dest: 80 Aucune donnée dans le paquet
numéro de paquet: 9: paquet TCP: Source Port: 80 Dest Port: 58723 Payload: HTTP/1.1 200 OK Date: Lun, 29 Nov 2010 10:11:36 GMT Expire: -1 Cache-Control: privé, max-age = 0 Type de contenu: text/html; charset = UTF-8 Content-Encoding: gzip Serveur: gws Longueur du contenu: 8806 Protection X-XSS: 1; mode = block \ 213
Pourquoi y a-t-il une différence entre les charges utiles et les ports? Idéalement, je voudrais seulement analyser les paquets comme le paquet 5. Comment ignorer les paquets comme 7 et 9?
La partie du paquet sur laquelle vous voulez filtrer n'est pas claire. J'assomme son port source ou destination. – sashang
Je voudrais saisir l'URL de l'hôte. J'ai trouvé qu'en filtrant les paquets avec le port de destination 80, je réussis à "éliminer" les indésirables, mais que se passe-t-il quand quelqu'un accède à une URL sur un port non standard? – David
Par exemple, les données de chiffrement ssh et ssl. Ces paquets ressembleraient à ceux que vous ne voulez pas. FWIW une quantité importante de trafic peut être comme ça. Utilisez une expression régulière (regex.h) pour sélectionner les paquets - regcomp, regexec, etc. Recherchez les paquets avec des blocs de caractères lisibles. –