使用 netcat 作为代理记录流量

dee*_*cks 7 linux bash netcat tee named-pipe

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

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

虽然是真的;做猫fifo | nc -l -p 8080 | tee -a in | nc 本地主机 8081 | tee -a out 1>fifo; 完毕

问题:

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

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

Odd*_*r13 9

ncat可以很容易地做到这一点,使用 --sh-exec 参数。

以下命令将允许您实时查看 TCP 连接的两个方向,并允许多个连接。连接到example.com被一次接收到的每一个连接来完成localhost:8080

ncat -lkv localhost 8080 -c 'tee /dev/stderr | ncat -v example.com 80 | tee /dev/stderr'
Run Code Online (Sandbox Code Playgroud)

如果您希望登录到文件而不是实时显示文件teetee -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
Run Code Online (Sandbox Code Playgroud)

查看ncat --helpman ncat了解更多详情。


Red*_*ick 5

使用socat,你不需要管道和 fifo