【发布时间】:2020-08-18 12:12:08
【问题描述】:
大家好,这是我关于 stackoverflow 的第一个问题!
我正在使用this 软件(它是一个 NIDS);它的一个功能是使用 socat 创建一个代理,将流量保存到 pcap。
这是它用来执行此操作的命令:/usr/bin/socat -d OPENSSL-LISTEN:50010,cipher=HIGH,method=TLS1.2,reuseaddr,pf=ip4,fk,cert=/usr/local/owlh/src/owlhnode/conf/certs/ca.pem,verify=0 SYSTEM:"/usr/sbin/tcpdump -n -r - -s 0 -G 50 -W 100 -w /usr/local/owlh/pcaps/remote-test%d%m%Y%H%M%S.pcap not port 22"
这就是使用 curl 我尝试通过代理向 google 发出请求时发生的情况:
╭─myasnik@tanuki ~/…/ossihr-poc/docker ‹master*›
╰─$ export https_proxy=https://0.0.0.0:50010/
╭─myasnik@tanuki ~/…/ossihr-poc/docker ‹master*›
╰─$ export http_proxy=https://0.0.0.0:50010/
╭─myasnik@tanuki ~/…/ossihr-poc/docker ‹master*›
╰─$ curl --proxy-insecure www.google.it
curl: (52) Empty reply from server
root@owlh-node:/# /usr/bin/socat -d OPENSSL-LISTEN:50010,cipher=HIGH,method=TLS1.2,reuseaddr,pf=ip4,fk,cert=/usr/local/owlh/src/owlhnode/conf/certs/ca.pem,verify=0 SYSTEM:"/usr/sbin/tcpdump -n -r - -s 0 -G 50 -W 100 -w /usr/local/owlh/pcaps/remote-test%d%m%Y%H%M%S.pcap not port 22"
tcpdump: unknown file format
2020/08/18 12:00:08 socat[1590] W system("/usr/sbin/tcpdump -n -r - -s 0 -G 50 -W 100 -w /usr/local/owlh/pcaps/remote-test%d%m%Y%H%M%S.pcap not port 22") returned with status 256
2020/08/18 12:00:08 socat[1590] W system(): No such file or directory
2020/08/18 12:00:08 socat[1589] E waitpid(): child 1590 exited with status 1
非常感谢您的帮助!
【问题讨论】:
-
确保您的系统上实际安装了 tcpdump,并且路径如预期的那样是
/usr/sbin/tcpdump。 -
@SteffenUllrich 我已经安装并且路径正确:
root@owlh-node:/# which tcpdump /usr/sbin/tcpdump -
我对@987654327@ 了解不多,但无论它提供给
tcpdump的什么数据似乎都是无效数据。如果您运行echo hello | tcpdump -r -,您会收到相同的错误消息,因此这似乎是您应该重点修复的区域。 -
我认为问题在于
-r选项希望读取一个文件,但是没有发送到 tcpdump 的 libpcap 标头,因此您可以尝试以某种方式转储一个虚拟 libpcap头到 tcpdump 第一?