Восстановление данных из сниффинга PCAP

Я пытаюсь осуществить сниффинг данных HTTP через libpcap и получить все http содержание (header+payload) после обработки полезной нагрузки TCP.

Согласно моему обсуждению при Записи http сниффера (или любого другого сниффера прикладного уровня), я сталкиваюсь с проблемами из-за фрагментации - я должен восстановить целый поток (или дефрагментировать его) получить полный пакет HTTP, и это - то, где я нуждаюсь в некоторой помощи.

Спасибо в ожидании!!

12
задан Community 23 May 2017 в 10:27
поделиться

2 ответа

Это действительно очень просто. Просто возьмите кадры Ethernet, которые вы получаете от pcap, и извлеките из них IP-пакеты, повторно собрав все фрагментированные. Затем измените порядок сегментов TCP из IP-пакетов в соответствии с порядковыми номерами, обращая внимание на то, чтобы удалить все повторяющиеся данные. Затем обработайте поток как поток HTTP. Конечно, HTTP не приходит в виде пакетов; это протокол прикладного уровня, но я уверен, что это станет очевидно, когда вы выполните всю остальную работу. При выполнении всех этих действий обратите внимание на контрольную сумму заголовков IP и сегментов TCP, чтобы убедиться, что ваши данные верны. Кроме того, если pcap пропускает какие-либо пакеты, убедитесь, что вы правильно с этим справляетесь.

Чтобы помочь вам в работе со стеком TCP Linux , необходимо предоставить краткую ссылку на этот процесс, как он происходит в ядре.

9
ответ дан 2 December 2019 в 19:30
поделиться

Вместо того, чтобы самостоятельно собирать потоки, вы можете использовать tcptrace для повторной сборки файла pcap. Я считаю, что -e подойдет.

Как только у вас есть данные уровня приложения в одном куске, вы можете применить простой синтаксический анализ HTTP-заголовка .... Возможно, из библиотеки, такой как http://github.com/ry/http-parser

5
ответ дан 2 December 2019 в 19:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: