使用C#从网络中的给定IP地址获取所有开放端口

时间:2012-08-10 18:03:19

标签: .net c#-3.0

我想列出特定系统的所有开放端口。 我找到了一个解决方案,但它工作得很慢。我正在使用.net framework 3.5。

1 个答案:

答案 0 :(得分:3)

假设windows:获取开放端口列表(或监听/不监听/过滤等)的唯一方法是端口扫描所有端口(除非只对特定端口感兴趣,否则全部65,535个端口)。这是一个明显的安全考虑因素 - 为什么有那么多的端口扫描程序,而不是有人敲一个小的C#实用程序来获取列表。因此,它会很慢。

如果它来自您的网络(因此您可以访问它) - 您可以构建一个安全(ish)内部服务,允许同一子网上的其他计算机请求端口列表。这将要求每台机器运行服务,内置一些安全性考虑,以及一种请求方式(很可能是一个小的Windows app / cmd行例程,它发送服务侦听的UDP或TCP请求,并且(在验证之后) etc)可能使用encyrption或安全套接字返回列表。有可能是现成的(可能是免费的蜜蜂 - 虽然认为那里的安全)产品或工具可用于可访问(本地)网络。或者(也许是Microsoft's PortQry tool

但是,如果您正在尝试编写黑客工具 - 请改为下载NMAP。