Когда я выполняю следующий код Python для файла pcap:
if tcp.dport == 80:
try:
http=dpkt.http.Request(tcp.data)
except (dpkt.dpkt.NeedData):
continue
except (dpkt.dpkt.UnpackError):
continue
if http.method == 'POST':
print('POST Message')
Пакеты, подобные следующим, создают проблему: ![enter image description here](https://i.stack.imgur.com/jJ76u.png)
Этиодно сообщение HTTP Post, сегментированное на два TCP-сегмента, каждое из которых отправляется в отдельном пакете.Тем не менее, поскольку первый сегмент является только TCP, а второй распознается как HTTP, кажется, что когда dpkt.http.Request пытается прочитать первый сегмент как HTTP, он терпит неудачу.
Пока проблем нет.Это нормально, чтобы потерпеть неудачу, поскольку на самом деле это не полное HTTP-сообщение.Однако проблема в том, что он, похоже, вообще не читает второй сегмент (« POST Message » не печатается) !!!Второй сегмент полностью игнорируется, как будто он не существует !!!Единственное возможное объяснение этого заключается в том, что dpkt автоматически считывает второй сегмент сразу, поскольку он распознает, что они оба являются сегментами для одного и того же сообщения.
Проблема заключается в том, что оба сегмента TCP читаются одновременно (послевыше предположения), полученный tcp.data не распознается как пакет HTTP, скорее он все еще распознается как TCP только потому, что первый сегмент сообщения является пакетом только для TCP.
Итак, что мне делать считать заголовок HTTP и данные такого файла pcap?