有没有一种方法可以快速绑定到TCP端口/IP地址并将所有信息简单地打印到STDOUT? 我有一个简单的调试解决方案,它将东西写入127.0.0.1:4444,我希望能够从bash绑定一个端口并打印出所有传输的内容。 有没有一种简单的方法可以做到这一点?
$ nc -k -l 4444 > filename.out
参见nc(1)
while true; do nc -l 4444; done
,nc
就会死掉。 - Naftuli Kayncat
代替nc
(它与nmap
捆绑在一起,是nc
的现代化版本)。 - Freedom_Ben虽然你是在问如何在bash
中实现,但是netcat
的回答也是非常有效的:
$ exec 3<>/dev/tcp/127.0.0.1/4444
$ cat <&3
那正如您所期望的那样运作:
nc -k -l 4444 |bash
然后你
echo "ls" >/dev/tcp/127.0.0.1/4444
然后您将看到由bash执行的列表。
[简短的安全警告]
当然,如果您在计算机上让这样的东西运行,您就会为各种攻击打开大门,因为命令可以从您网络中任何主机上的任何用户帐户发送。这完全没有提供安全性(身份验证,识别),并且将所有传输的命令未经加密地发送到网络上,因此很容易被滥用。
/dev/tcp
,您可以运行:echo "ls" | nc 127.0.0.1 4444
。 - fzbd--enable-net-redirections
也可能失败。 - fzbd使用 @Freedom_Ben 提到的 ncat
添加答案:
ncat -k -l 127.0.0.1 4444
下面是man ncat中选项的解释:
-k, --keep-open Accept multiple connections in listen mode
-l, --listen Bind and listen for incoming connections
ncat
随 nmap
一起提供并支持并发连接,而传统的 nc
命令则不支持。 - Serge Stroobandt