Задача: разбивать PCAP файлы по TCP-потокам. Я перепробовал несколько решений для этого.

Фича Scapy Tshark + lua dpkt pyshark tcpflow pcap-flow
Поддержка отладки 4/5. Даёт пользователю интерпретатор на основе ipython с автодополнением. 2/5. Документация среднего качества, если LUA не знаком - тяжело. Единственный способ отладки - принты. 3/5. Любой отладчик python-кода. 4/5. Любой отладчик python-кода. Очень крутой pretty print ? ?
Поддержка TLS 2/5. Не умеет. Есть проект scapy tls layers, у него много проблем на MacOS и CentOS 5/5. Замечательно справляется, понимает семантику расширений. 4/5. Определить тип пакета (ClientHello) может, но не понимает семантику расширений. 5/5. Прозрачно наследует все возможности wireshark 1/5. Не умеет, но ему и не нужно 1/5. Не умеет, но ему и не нужно
Архитектурная простота 3/5. Огромная вещь в себе. 5/5. Встроенный скриптовый язык, все возможностей wireshark. 4/5. Костылями с github удалось добавить понимание расширений TLS. 5/5 - вывод tshark -V парсится в объекты очень изящно не знаю 4/5 - пара файлов на C.
Сложность установки 3/5. Ставится через pip легко, часто падал с ошибками в MacOS/CentOS 6. Юзал py2.7. У людей из интернета всё отлично, мб я такой. 4/5. На большинстве современных машин поддержка lua включена по умолчанию. Для CentOS 6 необходимо пересобирать RPM’ку (–with-lua) и при использовании только rpmbuild получаем большое число ошибок сборки. autoreconf && ./configure && make помогают. 5/5. pip install dpkt 5/5. pip install pyshark 5/5. brew install tcpflow 4/5. Поддерживается только современный Linux, требует glibc 2.14 и gcc 4.6.
Понимание tcp-stream - - + + ? ?
Запись в PCAP - + - - - +
Генерация и отправка пакетов + - ? - - -

Что выбрал?

Остановился на tshark + lua, решение выложил на github.

Единственная проблема, которую я не решил до конца - утечка файловых дескрипторов. Можно по идее кэшировать их в памяти, но я и без этого не понимаю как обратиться к пакету и сохранить его или указатель на него в памяти в каком-нибудь, например списке. 8192 дескрипторов не хватает на 283мб PCAP от одного пользователя, где-то на 960000м пакете дескрипторы кончаются. Маловероятно, что у него было действительно 8к одновременных сессий.