使用 netcat 作为代理来记录流量

使用 netcat 作为代理来记录流量

我想使用 netcat 作为代理来记录对文件的 http 请求和响应,然后跟踪这些请求和响应以检查流量。想想 wireshark。

尝试以下操作,其中“fifo”是命名管道,“in”和“out”是文件,netcat 代理在端口 8080 上,服务器在端口 8081 上。

当为真时;执行 cat fifo | nc -l -p 8080 | tee -a in | nc localhost 8081 | tee -a out 1>fifo;完成

问题:

  • Netcat 在第一次请求后停止响应(while 循环被忽略?)。

  • 如果 8081 上的服务器不可用, Netcat 将失败并显示消息localhost [127.0.0.1] 8081 (tproxy) : Connection refused。问题:当发出请求时,是否可以“懒惰地”连接到 8081?即,我不想在启动 netcat 时运行 8081。

答案1

酶联免疫吸附试验可以使用 --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 --helpman ncat了解更多详细信息。

答案2

使用索卡特,你不需要管道和 fifo

答案3

我会用tcpdump教程) 即可。我认为您想要的命令应该是这样的:

sudo tcpdump -i eth0 -s0 -v port 8080

相关内容