【问题标题】:Linux Netcat ListenerLinux Netcat 监听器
【发布时间】:2017-08-18 12:35:17
【问题描述】:

我试图了解为什么 netcat 侦听器无法在我的 Kali Linux VM 中工作。据我了解,我打开一个终端并打开端口。

nc -l 155

然后,我在我的 VM 中打开另一个终端并使用以下命令连接到该端口号。

nc 127.0.0.1 155(环回IP地址和相同的端口号)

它不成功,因为我只是这个领域的新手,我希望在这个问题上得到一些帮助。但是,我找到了一种执行此命令的新方法,但我不理解为什么这种新方法有效背后的逻辑,而不是我在课堂上学到的原始方法。提前谢谢你的帮助!

【问题讨论】:

  • 您包含的图像不是表明您成功打开了“远程”外壳吗?有什么问题?
  • 是的,但是我在课堂上了解到,我必须在一个终端上使用原始方法 nc -l 155 并在另一个终端上使用 nc 127.0.0.1 -p 155 而不是使用 /bin/bash

标签: linux shell virtual-machine listener netcat


【解决方案1】:

首先,要提升自己的新手地位,您必须了解错误的含义。对于任何真正的调试,“它不成功”是对您的结果的不充分描述。可能发生的事情是该问题的宝贵线索——您应该包含该信息。此外,你真的必须让你的命令完全正确。不要说你做了一件事,然后发布另一件事的截图。我不确定 -e 应该做什么,但我在我的 osx 实现或在线手册页中找不到任何记录。

netcat 的不同构建或实现可能有所不同,但从我在 osx 机器上的 netcat 中看到的情况来看,-p 不是指定目标端口的正确方法。

$ nc localhost -p 1055
nc: missing hostname and port
usage: nc [-46AacCDdEFhklMnOortUuvz] [-K tc] [-b boundif] [-i interval] [-p source_port] [--apple-delegate-pid pid] [--apple-delegate-uuid uuid]
      [-s source_ip_address] [-w timeout] [-X proxy_version]
      [-x proxy_address[:port]] [hostname] [port[s]]

-p 指定 端口。您通常不需要指定此项。此外,您不能在同一个端口上的同一个盒子上拥有套接字的源和目标。通常不需要指定源端口。

最后,1024以下的端口只能以root身份分配。像大多数 linux 专业人士一样,我不会以 root 身份运行任何东西,除非我真的必须这样做,所以我在这个演示中更改为 1055。在终端窗口中各有一个 nc,在其中一个中输入消息打印出另一侧。观察:

$ nc -l 1055
hi world
hi yourself, world!

$ nc localhost 1055
hi world
hi yourself, world!

【讨论】:

  • Kali Linux 中的默认用户是 root,所以这不是权限问题(请参阅问题中包含的图片)。 -e 选项是某些 netcat 实现中 exec 的简写
  • 您好,使用超过 1024 的端口后,我的连接仍然被拒绝
  • 另外,netcat 监听器就像主从关系。这是否意味着 nc -l 1055 (打开端口)是从设备,而 nc 127.0.0.1 (连接到该端口)是主设备?那么,这里的听众是谁?
  • @Justin 一方监听(-l 就是这样做的),另一方连接。如果成功,您已经建立了双向 TCP 连接(假设您没有使用 UDP)并且主从关系有效地抓住了存在。 Netcat 有多种形式,您的问题很可能是由 -p 标志引起的(通过测试 Dan Farrell 的示例来确认这一点;如果它有效,您和您的老师可能使用不同版本的 Netcat)。
  • 主/从是一个令人困惑的术语。最好考虑 server(监听器)和 client(发起与监听服务器的连接)。
【解决方案2】:

服务器:nc -l ${port} > ${file}

本地:nc ${ip} -z ${port}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 2023-03-14
    • 2013-12-24
    • 2014-12-13
    相关资源
    最近更新 更多