我想使用 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 启动时运行。
第一个管道工作正常(打印“c”):
echo "a" | sed 's/a/b/' | sed 's/b/c/'
Run Code Online (Sandbox Code Playgroud)
这个不符合我的预期(当我将“a”输入到我的 fifo 中时没有打印任何内容):
mkfifo fifo;
cat fifo | sed 's/a/b/' | sed 's/b/c/'
Run Code Online (Sandbox Code Playgroud)
但是,如果我从后一个管道中删除第二个“sed”命令,则会打印“b”。我认为我对管道和重定向的理解太简单了。有人可以向我解释如何解决第二种情况,以便我可以对 fifo 的内容运行两个连续的命令吗?
(请注意,这不是特定于 fifo 的问题,netcat 也会出现相同的行为。我发布了一个关于 netcat的类似问题,但没有得到答案)
我有一个文件目录,我想将其 netcat 到另一台机器。
一方面,我使用
nc <ip> <port> < sample.fls
Run Code Online (Sandbox Code Playgroud)
但是如果我有一个目录
sample1.fls
sample2.fls
sample3.fls
sample4.fls
sample5.fls
sample6.fls
Run Code Online (Sandbox Code Playgroud)
如何使用一个命令对所有这些文件进行网络跟踪?
在 linux 上,可以通过键入连接到服务器
nc pwnable.kr 9000
在终端上。
在 Windows 上,这在 Powershell 或 cmd 中都不起作用,而且在使用 Telnet 时,Putty 最初看起来像是已连接,然后每当我输入某些内容时它就会退出,这不是 Linux 上的行为。那么在 Windows 上访问此服务器并向其发送命令的正确方法是什么?
我想让一个nc命令监听 TCP 端口,所以我这样做了:
nc -lv 8888
Run Code Online (Sandbox Code Playgroud)
然后在另一个控制台中,我检查尝试侦听同一端口的另一个程序是否会收到某种Address already in use类型的错误,因此我再次发出相同的命令:
nc -lv 8888
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是第二个命令也成功了。研究两个程序如何在同一个 TCP 端口上侦听,我发现如果使用选项打开侦听套接字SO_REUSEPORT,这是可能的,所以我想 nc正在使用它。
如何禁止nc其他程序使用其同一端口?我希望它侦听端口 8888 并确保这是唯一侦听该端口的程序。
到目前为止,我已经能够通过这样的介绍来完成我想做的socat事情nc:
socat TCP-LISTEN:8888,fork TCP:localhost:4444
nc -lv 4444
Run Code Online (Sandbox Code Playgroud)
因为socat不允许任何其他程序侦听同一端口。
但仅用 就可以实现这一点吗nc?
nc -q -1 local host ${PORT} ${CMD}
Run Code Online (Sandbox Code Playgroud)
在 Ubuntu 中,nc可以如上使用,带-q选项。请参阅联机帮助页。
-q在 stdin 上的 EOF 之后,等待指定的秒数,然后退出。如果秒为负,则永远等待。但是,此选项在 Redhat 5 中不可用。请参阅联机帮助页。我如何实现nc -q在 Redhat 5 中的等价物?
在 Super User question UDP traffic through SSH tunnel 中,它描述了如何通过 SSH隧道建立 DNS 隧道:
首先,在客户端,执行以下操作:
ssh -N -L 6667:localhost:6667 user@server
Run Code Online (Sandbox Code Playgroud)
然后,在服务器端执行以下操作:
mkfifo /tmp/fifo
nc -k -l 6667 < /tmp/fifo | nc -u ip_of_dns_server 53 > /tmp/fifo
Run Code Online (Sandbox Code Playgroud)
最后,回到客户端执行以下操作:
mkfifo /tmp/fifo
nc -k -l -u 53 < /tmp/fifo | nc 127.0.0.1 6667 > /tmp/fifo
Run Code Online (Sandbox Code Playgroud)
之后,我可以按预期进行 DNS 查询,但仅限于单个请求:
client# host m6.fr 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
如何让连接保持活动状态以接收更多请求?
在对此处描述的问题进行故障排除时,我尝试了一些非常基本的方法:我尝试通过 UDP 设置一个非常基本的 netcat 连接,但我发现它没有按预期工作。
与下面的 TCP 插图一样,我希望 UDP 案例在窗口 2 中输入时在窗口 1 上回显相同的输出;相反,在 UDP 情况下,我在窗口 1 中没有输出。
我在笔记本电脑上运行 Debian Jessie,并且使用以下捕获过滤器运行 Wireshark:
udp and not (port 123 or port 5353 or port 1900)
Run Code Online (Sandbox Code Playgroud)
在一个终端窗口中,我通过运行以下命令开始了 TCP 测试:
$ nc -l 6900
Run Code Online (Sandbox Code Playgroud)
在第二个终端窗口中,我运行了以下命令:
$ nc localhost 6900
Run Code Online (Sandbox Code Playgroud)
在窗口 2 中,我键入“one”并按 Enter,然后键入“two”并按 Enter,最后按 Ctrl+D 退出。
在“one”上按 Enter 后,我看到“one”在窗口 1 中回显。在“two”上按 Enter 后,我看到“two”在窗口 1 中回显。当我按下 Ctrl+D 时,两个 netcat 实例都退出并返回到提示。
这表明我可以毫无问题地建立 TCP 连接。接下来,我尝试了UDP。
窗口 1:
$ nc -l -u 6900
Run Code Online (Sandbox Code Playgroud)
窗口 2:
$ …Run Code Online (Sandbox Code Playgroud) 默认情况下,rsync 使用 ssh 作为传输层。不幸的是,对于快速的本地网络,ssh 非常慢。是否可以将 rsync 与 netcat / nc 一起使用?
我做了一些实验,但它对我不起作用。我想消除 ssh,因为它是瓶颈。
当然,我想在 Linux 上使用它。
我正在使用以下命令来流式传输我通过 Netcat 收到的视频。
nc -l -p 5001 | mplayer -fps 31 -cache 1024 -
Run Code Online (Sandbox Code Playgroud)
(在 Windows CMD 上)
此命令打开 MPlayer 并播放实时流。
你能告诉我如何在直播时保存这个视频的副本吗?
谢谢你。