pcaps имеют строгий формат, что позволяет разграничивать различные пакеты. В идеальном мире вам потребуется реализовать анализатор pcap, позволяющий получать каждый пакет один за другим для изучения. Вы использовали более тяжелый способ, который просто анализирует все как текст (который работает в вашем очень конкретном случае :-)), так что это то, что я буду документировать. Тем не менее, я действительно рекомендую вам разобраться в этом: гораздо проще, когда у вас есть каждый пакет как свой.
Если вам разрешено использовать библиотеку, некоторые из них, такие как scapy
или dpkt
, могут помочь вам разобрать pcaps.
Во-первых, вам нужно знать, что вы ищете. Ключевые слова - это параметры, связанные с HTTP-запросом. Поскольку вы анализируете его как файл, он соответствует аргументам URL ?
и &
, таким как http://www.example.org/?param1=foo¶m2=bar
В вашем случае, поскольку вы ищете Bing, вот список параметров, которые вы можете найти: https://docs.microsoft.com/en-us/rest/api/cognitiveservices/bing-web-api-v5-reference#query-parameters
Чтобы получить их, сначала нужно извлечь все URL. Для этого вы можете использовать регулярное выражение и встроенный модуль Python re
. Ищите хороший онлайн, например вот тот, который я нашел для HTTP:
regex = r"/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/"
Тогда вам нужно будет re.search(regex, decoded)
, а затем использовать groups()
(посмотрите в Интернете :-)), чтобы найти все URL-адреса. После этого вы сможете split("&")
получить различные ключевые слова.
Для 3) и 4) вам нужно найти следующие HTTP ответы и запросы. Вот где реализация парсера pcap становится хитрой, так как вам нужно угадать, где они находятся в вашем фрагменте текста. Вероятно, вы можете искать теги HTTP
в том виде, в каком они были до и после HTTP-запросов, но это грязно.