Извлечь информацию заголовка HTTP, используя Packet.Net

Я хотел бы извлечь информацию заголовка HTTP, используя Packet.Net. Я использую SharpPcap для захвата пакета и мне нужно получить доступ к полю User-Agent в пакете TCP. Если я правильно понимаю, Packet.Net используется для анализа захваченного пакета. Помощь будет оценена в этом отношении. Я попытался отобразить пакет TCP с помощью следующего кода, но я получил отображаемые байты. Я использую C# в качестве языка разработки.

       private static void device_OnPacketArrival(object sender,CaptureEventArgs packet){

       Packet p =Packet.ParsePacket(packet.Device.LinkType,packet.Packet.Data);

       System.Text.ASCIIEncoding ASCII = new System.Text.ASCIIEncoding();
       String StringMessage = ASCII.GetString(p.Bytes);


       Console.WriteLine(StringMessage);

   } 

1 ответ

В настоящее время Packet.Net не поддерживает http-декодирование. Поскольку сообщения http могут быть распределены по нескольким пакетам, похоже, что хорошим подходом было бы сначала добавить поддержку, позволяющую использовать следующие соединения tcp, а затем добавить обнаружение сеанса http и анализ в верхней части потока данных tcp. Попытка синтаксического анализа данных http для каждого пакета может работать для заголовков данных или некоторых сообщений http, но это не надежное решение, так как это не позволит получить полное содержимое сообщения http, которое может составлять несколько килобайт. по размеру.

(У меня есть коммерческая библиотека, основанная на SharpPcap/Packet.Net, в которую добавляются отслеживание сеансов tcp и отслеживание сеансов http и их декодирование. Если вы хотите, чтобы я отправил вам электронное письмо с более подробной информацией, отправьте здесь свое письмо.)

Другие вопросы по тегам