Я пытаюсь извлечь метаданные TLS из pcap, используя Scapy. Я могу успешно проанализировать пакеты и отдельные сообщения, такие как client-hello, server-hello et c и их поля. У меня проблемы с тем, когда запись TLS распределяется по нескольким пакетам / сегментам TCP. Это происходит в основном для больших сообщений TLS, таких как данные приложения или когда сервер отправляет несколько сообщений TLS (сервер привет, сертификат и т. Д. c) в одном кадре TLS. В таких случаях scapy говорит, что имеет слой TLS / SSLv2, но я не могу извлечь какую-либо значимую информацию из таких фреймов. Когда я смотрю на тот же pcap в wireshark, wireshark отображает
Reassembled TCP segments (T bytes): #X (x), #Y(y), #Z(z)
, где T - общая сумма; X, Y, Z - это идентификаторы кадров, а x, y, z - количество байтов в каждом кадре, которые внесли вклад в общую T. Wireshark выполняет повторную сборку всей полезной нагрузки TLS, прежде чем анализирует кадр TLS.
I есть что-то вроде этого в моем коде:
if pkt.haslayer(TCP) and pkt.haslayer(TLS):
parseTLS(pkt)
elif pkt.haslayer(TCP) and pkt.haslayer(SSLv2):
parseSSLv2(pkt)
Когда он встречает частичный пакет TLS, код всегда падает до SSLv2. Есть ли способ для меня, чтобы точно идентифицировать пакет как частичный tls-сегмент и накапливать, а затем обрабатывать полный кадр TLS, похожий на wireshark? Если так, то как я go об этом. Любые указатели или помощь приветствуется. Спасибо.