Как реализовать фильтрацию TCP пакетов по содержимому в поле Data под windows налету?

Всем доброго времени суток!

Подскажите пожалуйста решение такой задачи:
необходимо на машине с Windows фильтровать пакеты TCP содержащие текстовые сообщения. Одни пропускать, а другие отбрасывать.
Сообщения не шифрованные.
Возможно ли такое реализовать средствами самой операционной системы?
Возможно ли такое реализовать сторонними средствами (прокси-сервер или какой-то фильтр-драйвер)?

Пример пакета:
5f8bd31ac4cc8518530609.png

Благодарю за ответы.
  • Вопрос задан
  • 225 просмотров
Пригласить эксперта
Ответы на вопрос 5
MvcBox
@MvcBox
Back-end developer
фильтровать пакеты TCP содержащие текстовые сообщения.

Именно в такой формулировке - нельзя.
У TCP нет понятия "пакет" как такового.
TCP - условно бесконечный поток данных, в котором данные передаются небольшими "порциями" в TCP-сегментах. Ваше сообщение можно передать как одним сегментом, так и множеством сегментов с 1 байтом payload'а в каждом.
Полученные данные буферизируются приложением, а затем уже (при достаточном количестве полученных данных) обрабатываются согласно протоколу этого приложения.
Поэтому "stateless" проверка содержимого сегмента - бесполезна.

Возможно ли такое реализовать сторонними средствами (прокси-сервер или какой-то фильтр-драйвер)?

Проще всего реализовать прокси-сервер, в котором будет реализована поддержка протокола приложения.
Таким образом Вы сможете фильтровать трафик для этого приложения.
Ответ написан
@ComodoHacker
Comodo вроде умел такое. Но не уверен, как сейчас.
Ответ написан
@MechanID
Админ хостинг провайдера
под Linux в Snort https://www.snort.org/ можно было строить правила c критерием string в ASCII,
так как Snort есть и под Windows то возможно это решит вашу задачу.
детальней про создание таких правил - manual-snort-org.s3-website-us-east-1.amazonaws.co...
Ответ написан
CityCat4
@CityCat4
Если я чешу в затылке - не беда!
Вопрос бессмысленный.

TCP не содержит текстовых или не-текстовых сообщений - он содержит payload, который разбирается протоколами верхних уровней. Payload этот, как совершенно справедливо заметил Inviz Custos может быть по 1 байту на пакет TCP, которых может быть зиллион - и их все ядро обязано собрать в один общий буфер, прежде чем отдать его "наверх".
Фильтрацию того, что приехало в payload необходимо делать на ISO/OSI 7 - после всех сборок, расшифровок и т.д.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы