Может ли libpcap повторно собирать TCP-сегменты

Мне нужно прослушивать TCP-трафик в моем приложении.

Может ли libpcap повторно собрать сегменты TCP, или мне придется делать это вручную?

На домашней странице написано: «Полная документация предоставляется с исходными пакетами в формате страницы руководства». После того, как sudo apt-get install libpcap-dev я нашел только одного человека pcap. Есть ли там вся документация или я просто что-то упустил?

Спасибо

Ответов (4)

Решение

Повторная сборка пакета или потока не упоминается в pcap (3).

Если я правильно помню, инструменты dsniff используют libnids для повторной сборки IP-пакетов и TCP-потоков.

Нет, libpcap не выполняет повторную сборку сегмента TCP - libpcap захватывает пакеты, но обработка пакетных данных остается на усмотрение приложения или библиотеки, используемой приложением.

Что касается справочных страниц, то в старых версиях libpcap есть только справочная страница pcap (3), в более новых версиях, помимо pcap (3PCAP), есть еще куча других справочных страниц для определенных подпрограмм.

В моей (немного более старой) системе:

[email protected]:~/desktop/ccan/ccan/tap # dpkg -L libpcap0.7-dev
/.
/usr
/usr/lib
/usr/lib/libpcap.a
/usr/include
/usr/include/net
/usr/include/net/bpf.h
/usr/include/pcap.h
/usr/include/pcap-namedb.h
/usr/share
/usr/share/man
/usr/share/man/man3
/usr/share/man/man3/pcap.3.gz

Хм, вроде они должны быть там:

[email protected]:~/desktop/ccan/ccan/tap # man 3 pcap
Reformatting pcap(3), please wait...

У вас должен быть man / 3 docs, я посмотрел свой, форматирование просто убогое. Я взял исходный код в библиотеку через apt-get source, похоже, что единственными связанными документами в любом случае являются страницы руководства.

Вы можете попробовать их список рассылки, если вы это сделаете, обязательно ответьте на свой вопрос здесь :)

Три года назад я использовал libpcap, и мне пришлось самому собирать TCP-потоки, это не очень сложно, но есть множество угловых случаев.

Вы можете посмотреть диссекторы wirehark и опцию «следовать TCP потоку», если лицензия (GPLv2) подходит для вашего проекта.