Я использую pcap для захвата пакетов TCP, для которых я хотел бы проанализировать полезную нагрузку. Моя стратегия такова:
- Получить заголовок Ethernet и проверить, имеет ли он тип
ETHERTYPE_IP
(IP-пакет)
- Проверьте, имеет ли IP-пакет протокол
IPPROTO_TCP
(TCP-пакет)
Проверка размера полезной нагрузки> 0 (size = ntohs(ip_header->total_length - ip->header_length*4 - sizeof(struct tcp_header))
.
анализировать полезную нагрузку (захватить URL-адрес хоста)
Я еще не начал анализировать полезную нагрузку, потому что у меня возникают расхождения. Ниже приведена распечатка полезной нагрузки 10 захваченных пакетов TCP с использованием фильтра "host = www.google.com"
.
номер пакета: 3 : пакет TCP: порт источника: 80 порт назначения: 58723
Нет данных в пакете
номер пакета: 4 : пакет TCP: порт источника: 58723 порт назначения: 80
Нет данных в пакете
номер пакета: 5 : пакет TCP: порт источника: 58723 порт назначения: 80 полезная нагрузка:
GET / HTTP / 1.1
Хост: www.google.com
Пользователь-агент: Mozilla / 5.0 (Macintosh; U; Intel Mac OS X 10_6_5; ru-ru) AppleWebKit / 533.19.4 (KHTML, как Gecko) Версия / 5.0.3 Safari / 533.19.4
Принять: application / xml, application / xhtml + xml, текст / html; q = 0,9, текст / обычный текст; q = 0,8, изображение / png, / ; q = 0,5
Accept-Language: en-us
Accept-Encoding: gzip, выкачать
Cookie: THICNT = 25; SID = DQAAAKIAAAB2ktMrEftADifGm05WkZmlHQsiy1Z2v-
Подключение: keep-alive
номер пакета: 6 : Пакет TCP: Исходный порт: 80 Порт назначения: 58723
Нет данных в пакете
номер пакета: 7 : пакет TCP: порт источника: 80 порт назначения: 58723 полезная нагрузка:
\ 272 ن и \ 243 \ 255 \ 375 \ 375} \ 336H \ 221 \ 227 \ 206 \ 312 ~ \ 322 \ 317N \ 236 \ 255A \ 343 # \ 226 \ 370 ֤ \ 245 [\ 327` \ 306 ը пЕ \ 263 \ 204 \ 313 \ 356 \ 3268) р \ 344 \ 301_Y \ 255 \ 267 \ 240 \ 222х \ 364
номер пакета: 8 : пакет TCP: порт источника: 58723 порт назначения: 80
Нет данных в пакете
номер пакета: 9 : пакет TCP: порт источника: 80 порт назначения: 58723 полезная нагрузка:
HTTP / 1.1 200 ОК
Дата: понедельник, 29 ноября 2010 г. 10:11:36 GMT
Истекает: -1
Cache-Control: приватный, max-age = 0
Content-Type: text / html; кодировка = UTF-8
Контент-кодировка: gzip
Сервер: GWS
Длина контента: 8806
X-XSS-защита: 1; Режим = Блок
\ 213
Почему существует расхождение в полезных нагрузках и портах? В идеале я хотел бы анализировать только пакеты типа 5. Как игнорировать пакеты типа 7 и 9?