5

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

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

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

Проблемы:

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

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

3 ответа3

5

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 для более подробной информации.

3

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

1

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

sudo tcpdump -i eth0 -s0 -v port 8080

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .