Извлечение информации "Stream ID" заголовка Pyshark из пакета HTTP / 2 - PullRequest
0 голосов
/ 09 июля 2020

Предположим, после хорошей печати мой пакет http / 2 был отображен как:

Layer HTTP2:
     Stream: HEADERS, Stream ID: 85, Length 169, POST xxxxxxxxxx
     Length: 169
     Type: HEADERS (1)
     Flags: 0x24
     .... ...0 = End Stream: False
     .... .1.. = End Headers: True
     .... 0... = Padded: False
     ..1. .... = Priority: True
     00.0 ..0. = Unused: 0x00
     0... .... .... .... .... .... .... .... = Reserved: 0x0
     .000 0000 0000 0000 0000 0000 0101 0101 = Stream Identifier: 85
     Pad Length: 0
     0... .... .... .... .... .... .... .... = Exclusive: False
     .000 0000 0000 0000 0000 0000 0000 1011 = Stream Dependency: 11
     Weight: 21
     Weight real: 22

и так далее, и тому подобное. Я попытался извлечь «идентификатор потока», записав следующие команды:

print(cap[i].http2.stream['stream_ID'])

Я попробовал описанный выше подход, потому что поле «поток» для меня выглядело как пары ключ-значение в словаре. Но не вышло. Не могли бы вы помочь мне узнать, как я могу извлечь значение Stream ID из вышеупомянутого фрагмента кода? PS "поток" - это имя поля пакета "http2", которое дает мне

Stream: HEADERS, Stream ID: 19, Length 30, POST xxxxxxx

, когда я применяю команду

print(cap[i].http2.stream)

1 Ответ

0 голосов
/ 07 августа 2020

Попробуйте метод, который я описал в одном из моих других ответов:

Использование Pyshark для объединения ключа и значения из JSON пакета

Мне удалось используйте этот метод для извлечения пар «ключ-значение» из уровней пакетов JSON и HTTP. Также должно быть применимо для пакетов HTTP / 2. Вы можете установить use_json = True и include_raw = False при захвате пакетов.

...