Используйте netcat в качестве прокси для регистрации трафика

Я хочу использовать netcat в качестве прокси для регистрации http-запросов и ответов на файлы, а затем подключать их для проверки трафика. Думаю, проволочная акула.

Попробовал следующее, где 'fifo' - это именованный канал, 'in' и 'out' - это файлы, прокси netcat на порту 8080, сервер на порту 8081.

пока правда; сделать кошку фифо | nc -l -p 8080 | тройник в | nc localhost 8081 | тройник 1>fifo; сделанный

Проблемы:

  • Netcat перестает отвечать после первого запроса (пока цикл игнорируется?).

  • Netcat не удается с MSG localhost [127.0.0.1] 8081 (tproxy) : Connection refused если сервер недоступен на 8081. Вопрос: можно ли "лениво" подключиться к 8081, когда сделан запрос? Т.е. я не хочу, чтобы 8081 работал при запуске netcat.

3 ответа

ncat может сделать это довольно легко, используя аргумент --sh-exec.

Следующая команда позволит вам увидеть оба направления TCP-соединения в режиме реального времени и разрешит несколько соединений. Подключение к example.com выполняется один раз для каждого соединения, полученного на localhost:8080,

ncat -lkv localhost 8080 -c 'tee /dev/stderr | ncat -v example.com 80 | tee /dev/stderr'

Изменить два tee команды для tee -a ./file если вы хотите войти в файл вместо отображения его в реальном времени. Вы также можете удалить -v отключить подробный вывод, оставив только переданные данные, напечатанные на терминале.

-k, --keep-open            Accept multiple connections in listen mode
-l, --listen               Bind and listen for incoming connections
-v, --verbose              Set verbosity level (can be used several times)
-c, --sh-exec <command>    Executes the given command via /bin/sh

Увидеть ncat --help или же man ncat Больше подробностей.

Используйте socat, вам не нужны трубы и fifos

Я бы использовал tcpdump ( учебник) для этого. Я думаю, что команда, которую вы хотите, выглядела бы так:

sudo tcpdump -i eth0 -s0 -v port 8080
Другие вопросы по тегам