#python #byte #libpcap
#python #байт #libpcap
Вопрос:
Я использую Python 3 для извлечения HTTP-заголовков из вывода pcapy. Это не должно быть так сложно, но у меня возникают большие трудности с преобразованием пакетов во что-то читаемое, что мешает мне продолжать дальше. Для этого мне разрешено использовать только pcapy и другие инструменты стандартной библиотеки Python.
import pcapy
devs = pcapy.findalldevs()
(head, payload) = pcapy.open_live(devs[0],65536,0,0).next()
print(payload)
возвращает строку байтов пакета (любого пакета):
b'xe8*xea1xd82dxe5x99xcf`x90x08x00Ex00x01xe1xab(@x005x06xbfAx97ex81Exc0xa8x00Zx00Px93.xadxc8%xe7xe0x95"x9ex80x18x00N=\x00x00x01x01x08nx17x00x07amp;tyxc8xa0HTTP/1.1 200 OKrnCache-Control: privaternPragma: no-cachernContent-Type: application/jsonrnX-Frame-Options: SAMEORIGINrnX-Request-Guid: 037ce974-4c4a-4044-8721-590f1544a8b6rnContent-Length: 42rnAccept-Ranges: bytesrnDate: Sun, 02 Oct 2016 04:44:36 GMTrnVia: 1.1 varnishrnConnection: keep-alivernX-Served-By: cache-nrt6123-NRTrnX-Cache: MISSrnX-Cache-Hits: 0rnX-Timer: S1475383476.794922,VS0,VE165rnX-DNS-Prefetch-Control: offrnrn'
Некоторые части возвращаемой полезной нагрузки доступны для чтения человеком, другие — нет, и я предполагаю, что они закодированы в ASCII.
На данный момент я заблудился, поскольку нам только что сказали, что мы можем «написать нашу собственную структуру» для анализа этих данных с нулевым предварительным знанием того, как это работает.
Как я смогу декодировать остальную часть строки байтов, сохраняя при этом то, что уже доступно для чтения человеком? Заголовки HTTP уже отображаются, однако мне интересно получить IP-адреса источника и назначения, связанные с заголовками.
Комментарии:
1. Какой код вы пытались решить?