Назад | Перейти на главную страницу

Простой способ «редактировать» трафик, исходящий от хоста tcp (linux)

Мне нужно внести небольшие изменения во входящий трафик от известного tcp host: port до того, как процесс, обрабатывающий соединение, получит поток.

Например, пусть 192.168.1.88 будет удаленным хостом, на котором работает веб-сервер.
Мне нужно это, когда процесс на моем локальном хосте получает данные из 192.168.1.88:80 (например, браузер), данные сначала изменяются, заменяя text-A с участием text-B, как это:

Предполагая, что у меня есть способ внести эти изменения в поток (используя sed например), каков самый простой способ предварительной обработки входящего потока TCP?

Я думаю, это будет связано с iptables, но у меня это не очень хорошо получается.

Обратите внимание, что приложение должно работать с исходным хостом, поэтому настройка прокси-сервера вряд ли станет решением.

Используйте проксирование netsed и iptables.

iptables -t nat -D PREROUTING -s yourhost -d desthost -p tcp --dport 80 -j REDIRECT --to 10101

Затем запустите:

netsed tcp 10101 desthost 80 s/text-A/text-B

NetSED это небольшая и удобная утилита, предназначенная для изменения в реальном времени содержимого пакетов, пересылаемых через вашу сеть. Это действительно полезно для изменения, подделки или обработки сетевых пакетов. NetSED поддерживает:

  • аудит протокола черного ящика - когда есть два или более проприетарных ящика, обменивающихся данными с использованием какого-либо недокументированного протокола. Принудительно внося изменения в текущие передачи, вы сможете проверить, можно ли считать проверяемое приложение защищенным.

  • эксперименты по генерации нечетких сигналов, тесты целостности - всякий раз, когда вы проводите тесты стабильности приложения, чтобы увидеть, как оно заботится о целостности данных;

  • другие распространенные варианты использования: ложная передача, фильтрация контента, преобразование протокола - все, что лучше всего подходит для вашей задачи.

Вы можете сделать именно это, используя iptables для прозрачные прокси-соединения через прокси-сервер Squid, а затем имея squid переписывает http-контент для тебя.

iptables + использование libnetfilter_qu еще один вариант, который сделает то, что вы хотите:

"... [повторно внедрить] измененные пакеты в подсистему ядра nfnetlink_queue."

Скорее всего, это даст вам наибольшую расширяемость, поскольку код программного обеспечения зависит от вас.

Есть оболочка python также доступны.