URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9757
[ Назад ]

Исходное сообщение
"с/c++, pcap, получение данных tcp пакета."

Отправлено TDrive , 10-Окт-13 21:57 
Разбираюсь с pcap и написанием сниферов, перехватывать и выводить в консоль tcp пакеты научился, не могу разобраться как обрезать заголовки пакетов, что бы остались только tcp данные. Первой мыслью было обрезать определенное количество байт в начале пакета но насколько я понял заголовки ethernet/ip/tcp не постоянной длинны. Есть что нибудь готовое и удобное?

Содержание

Сообщения в этом обсуждении
"с/c++, pcap, получение данных tcp пакета."
Отправлено parad , 11-Окт-13 00:48 
реализовать снифер с восстановлением тцпшной сессии нетривиальная задача. тут передется поддержать как минимум переупорядочивание пакетов( в рамках окна они могут приходить в произвольном порядке - вплодь до данных после фина ), нормализацию пакетов( данные в пакетах могут перекрываться ), логика работы с окном, логика открытия/закрытия/сброс сессии, фрагментация, таймеры, поддержка icmp, разные экзотические рфц( данные на сине, данные на фине ) - эт только что вспомнил. также нужно задуматься по необходимости и о безопасности самого снифера - защита от синфлуда, лимиты на данные - без лимитов атакующий может выжрать 4гига оперативы на одну тцп сессию.

гугли tcp reassembler ну и слово ids туда по желанию приписать.

чьи исходники смотрел:
- bro - реализует почти все что описал( реализация убога, хоть сам бро и популярен )
- snort - вроде как достаточно полная реализация тцп стека для ids ну и сам пакет достоен уважения
- lwip - позицианируют себя как легковесный ип-стек для встраиваемых систем. заточен на наименьшее потребление ресурсов в жертву производительность( песец наступает прямопропорционально количеству тцп сессий ). достаточно тривиально перезатачивается на производительность.
- и что-то там про vortex-ids и ряд других уже не помню. гугли.