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