我正在尝试调试客户端使用 TCP 连接的服务(在 Linux 中)。我无法更改任何程序(没有源代码),也无法使用监听网络层的机制(如 tcpdump、pcap、wireshark 等)。
我可以配置每个服务和客户端程序来监听或连接我需要的任何端口或地址绑定。
我知道可以使用 SOCAT 程序转发任意连接,使用类似 的命令SOCAT -d -d TCP-LISTEN:2001,bind=127.0.0.1,fork TCP:localhost:2002
。但我没有看到 socat 的标准版本有任何机制来记录来回传输的数据。
我需要的是一种以这种方式转发 TCP 连接的方法,但将两个方向的数据记录到一个文件(好吧,一对文件)。理想情况下,此策略仅使用普通的 Linux 软件包,例如 socat 或 tee。
我意识到使用 Perl 或 Python 或类似程序编写一个程序来执行此操作是可能的,但就这个问题而言,我想要一种仅使用胶水(bash 等)和股票程序来实现的方法。
答案1
添加-v
打印出正在传输的数据的选项:
SOCAT -v -d -d TCP-LISTEN:2001,bind=127.0.0.1,fork TCP:localhost:2002
为了将其写入文件添加(Windows):
1> log.log 2>&1