是否可以通过 netcat 来“管道”控制台应用程序的实例,以便 netcat 监听新连接并通过网络连接stdin
重定向。stdout
答案1
嗯,正如记录的那样维基百科和netcat
文档中,有一个-e
选项可以导致它产生(埃收到连接后,程序将调用 xecute 命令,将套接字连接到进程的 stdin、stdout 和 stderr。示例用法:
nc -l -p
端口号-e
程序名称
例子通常表明/bin/sh
或被bash
用作程序名称。不建议使用此选项,因为它基本上会打开一个匿名、无密码的访问门户进入您的计算机。当然,通过使用比 shell 功能更弱的程序(无法转入 shell 的程序),尽量减少对它的使用,并保密,可以缓解这种情况。尽管如此,的原始开发人员netcat
强烈地认为此选项是个坏主意,他们默认禁用它,并在“GAPING_SECURITY_HOLE”编译选项下对其进行了条件限制。这在本文有简要提及NetCat 教程和其他netcat
文件。
通过 Google 搜索,我找到了其他 Stack Exchange 网站上关于此问题的讨论:堆栈溢出和服务器故障。多位贡献者提供了以下技术来在不使用该选项的情况下完成相同的操作(即在禁用该选项-e
的版本中):netcat
-e
在服务器上:
mkfifo
管道名称
nc -l -p
端口号<
管道名称|
程序名称>
管道名称在客户端上:
nc
服务器计算机名称端口号
几点说明:
- 在某些版本中
netcat
,-l
暗示-p
,所以您应该只说然后说-l
端口号。 - 您可能希望将您的解决方案包装在一个
while true
循环中。