当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PortQry 检查 TCP/UDP 开放端口(端口扫描器)

作者:精品下载站 日期:2024-12-14 20:07:46 浏览:19 分类:玩电脑

使用 PortQry 检查 TCP/UDP 开放端口(端口扫描器)


Windows 有许多用于诊断 TCP/IP 网络问题的工具(

ping

,

telnet

,

pathping

, ETC。)。但并非所有这些都允许您方便地检查状态或扫描远程服务器上打开的网络端口。 Portqry.exe 实用程序是一个方便的工具,用于检查远程主机上 TCP/UDP 端口的响应,以诊断与 TCP/IP 网络中各种网络服务和防火墙的操作相关的问题。大多数情况下,Portqry 实用程序被用作功能更强大的替代品

telnet

命令,与 telnet 不同的是,它还允许您检查开放的 UDP 端口。

使用 PortQry 扫描开放的 UDP/TCP 端口

适用于 Windows Server 2003 的 PortQry 的第一个版本在较新的操作系统版本(Windows Server 2008 及更高版本)中无法正常工作,因此该实用程序的第二个版本 PortQryV2 已发布。这是您今天应该使用的版本(您可以在此处下载 PortQryV2)。

下载并解压 PortQryV2.exe 存档。运行命令提示符并转到包含该实用程序的目录,例如:

cd c:\tools\PortQryV2

[玩转系统] 使用 PortQry 检查 TCP/UDP 开放端口(端口扫描器)

例如,要从客户端检查 DNS 服务器的可用性,您需要检查其上是否打开 53 个 TCP 和 UDP 端口。端口检查命令的语法如下:

PortQry -n server [-p protocol] [-e || -r || -o endpoint(s)]
  • -n 是服务器的名称或IP地址,您正在检查其可用性;

  • -e是要检查的端口号(从1到65535);

  • -r是要检查的端口范围(例如1:80);

  • -p 是用于检查的协议。它可以是 TCP、UDP 或两者(默认情况下使用 TCP)。

注意。与仅可用于检查 TCP 端口可用性的 Test-NetConnection PowerShell cmdlet 不同,PortQry 实用程序同时支持 TCP 和 UDP 协议。

在我们的示例中,该命令如下所示:

PortQry.exe -n 10.0.25.6 -p both -e 53

[玩转系统] 使用 PortQry 检查 TCP/UDP 开放端口(端口扫描器)

Portqry 将返回三个可用端口状态之一:

  • 监听 - 表示端口已打开(接受连接),已收到来自端口的响应;

  • Not Listening - 显示目标系统上没有任何进程(服务)接受指定端口上的连接。 PortQry 在检查 UDP 端口或带有 Reset 标志的 TCP 数据包时收到 ICMP 响应“Destination Unreachable - Port Unreachable”;

  • 已过滤 - 表示 PortQry 尚未收到来自指定端口的任何响应或响应已被过滤。即,该端口未在目标系统上侦听,或者对其的访问受到防火墙或某些系统设置的限制。默认情况下,TCP 端口轮询 3 次,UDP 端口轮询 1 次。

在我们的示例中,客户端可以通过 TCP 和 UDP 端口使用 DNS 服务器。

TCP port 53 (domain service): LISTENING
UDP port 53 (domain service): LISTENING

使用 -o 属性,您可以指定端口的顺序以检查其可用性:

portqry -n 10.0.25.6 -p tcp -o 21,110,143

下一个命令扫描已知 TCP/IP 端口号的范围并返回接受连接的端口列表(用作 TCP 端口扫描器):

portqry -n 10.0.25.6 -r 1:1024 | find ": LISTENING"

您可以将开放端口扫描结果保存到文本文件中:

portqry -n 10.0.25.6 -p tcp -r 20:500 -l scan_port_log.txt

portqry 实用程序具有交互模式:

portqry -i

现在,在 PortQry 交互模式提示符处,您可以指定远程计算机的名称和端口号:

node srv-lic
set port=80

要检查指定服务器上的端口,请按 q 并 Enter。

[玩转系统] 使用 PortQry 检查 TCP/UDP 开放端口(端口扫描器)

使用-wport-wpid参数,您可以监视指定端口(wport)的状态,或与本地主机上指定进程(wpid)关联的所有端口的状态。

例如,以下命令将监控指定本地端口(例如RDP端口3389)在10分钟内的响应,如果其状态发生变化,则会通知管理员(详细日志将在LogFile.txt中提供)。要停止端口监控,请按 Ctrl-C:

portqry -wport 3389 -wt 600 -l LogFile.txt -y -v

您可以获取有关本地计算机上打开的端口和活动 TCP/UDP 连接的信息:

portqry.exe -local

PortQry 中的高级网络服务开放端口状态

PortQry 内置了对某些网络服务的支持。这些是 LDAP、远程过程调用 (RPC)、电子邮件协议 SMTP/POP3/IMAP4、SNMP、FTP/TFTP、NetBIOS 名称服务、L2TP 等。除了检查端口可用性之外,该工具还执行特定于协议的请求以获取服务状态。

例如,使用以下命令,您可以检查 RPC 端点映射器服务 (TCP/135) 的可用性,并获取在计算机上注册的 RPC 端点的名称列表(包括它们的名称、UUID、它们绑定的地址以及它们相关的应用程序)。

portqry -n 10.0.25.6 -p tcp -e 135
TCP port 135 (epmap service): LISTENING
Using ephemeral source port
Querying Endpoint Mapper Database…
Server’s response:
UUID: d95afe72-a6d5-4259-822e-2c84da1ddb0d
ncacn_ip_tcp:10.0.25.6 [49152]
UUID: 8975497f-93f3-4376-9c9c-fd2277495c27 Frs2 Service
ncacn_ip_tcp:10.0.25.6 [5722]
UUID: 6b5bd21e-528c-422c-af8c-a4079be4a448 Remote Fw APIs
ncacn_ip_tcp:10.0.25.6 [63006]
UUID: 12345678-1234-abcd-ef22-0123456789ab IPSec Policy agent endpoint
ncacn_ip_tcp:10.0.25.6 [63006]
UUID: 367abb81-9844-35f1-ad32-912345001003
ncacn_ip_tcp:10.0.25.6 [63002]
UUID: 50cda2a3-574d-40b3-1d66-ee4aaa33a076
ncacn_ip_tcp:10.0.25.6 [56020]
……..
UUID: 3c4428c5-f0ab-448b-bda1-6ce01eb0a6d5 DHCP Client LRPC Endpoint
ncacn_ip_tcp:10.0.25.6 [49153]
Total endpoints found: 61
==== End of RPC Endpoint Mapper query response ====
portqry.exe -n 10.0.25.6 -e 135 -p TCP exits with return code 0x00000000.

或者,您可以检查 Microsoft SQL Server 上运行的 SQL Server Browser 服务的可用性和响应:

PortQry.exe -n rome-sql01 -e 1434 -p UDP
UDP port 1434 (ms-sql-m service): LISTENING or FILTERED
Sending SQL Server query to UDP port 1434...
Server's response:
ServerName ROME-SQL01
InstanceName MSSQLSERVER
IsClustered No
Version 15.0.2000.5
tcp 53200

ServerName ROME-SQL01
InstanceName DBINVENT
IsClustered No
Version 15.0.2000.5
tcp 1433
==== End of SQL Server query response ====
UDP port 1434 is LISTENING

正如您所看到的,PortQry 工具不仅显示了 1434/UDP 端口的可用性,还显示了 SQL Server 的版本以及 SQL Server 上运行的实例的名称及其 TCP 端口。第一个 DBINVENT 实例侦听默认端口 TCP/1433,第二个 MSSQLSERVER 使用 RPC 范围中的固定 TCP/53200 端口。

[玩转系统] 使用 PortQry 检查 TCP/UDP 开放端口(端口扫描器)

您可以通过指定团体名称来轮询设备上的 SNMP 端口:

portqry -n rome-sql1 -cn !snmp_trap! -e 161 -p udp

在检查 SMTP 服务器上的 TCP/25 端口时,您可以获得服务 SMTP 横幅:

portqry -n mx.a-d.site  -p tcp -e 25

PortQuery GUI 版本

最初,PortQry 仅仅是一个控制台 (CLI) 工具。为了让不喜欢使用命令提示符的用户更方便,微软为portqry开发了一个简单的图形界面——PortQueryUI。您可以从 Microsoft 官方下载网站下载 PortQueryUI:PortQueryUI

实际上,PortQueryUI是portqry的一个图形插件,用于生成命令并在图形窗口中返回结果。

此外,PortQueryUI 包含几个预定义的查询集,用于检查流行的 Microsoft 服务的可用性:

  • 域和信任(检查 Active Directory 域控制器上的 ADDS 服务)

  • 交换服务器

  • SQL服务器

  • 联网

  • IP安全

  • 网络服务器

  • 网络会议

我认为 PortQueryUI 不需要任何特殊注释。如果你看下面的截图就应该很清楚了。输入远程服务器的DNS名称IP地址,选择其中一项预定义服务(查询预定义服务),或指定手动端口检查的端口号(手动输入查询端口),然后单击查询按钮。

[玩转系统] 使用 PortQry 检查 TCP/UDP 开放端口(端口扫描器)

PortQueryUI 中可能的返回代码(在屏幕截图中突出显示):

  • 0 (0x00000000) - 连接已成功建立,端口可用;

  • 1 (0x00000001) - 指定端口不可用或被过滤;

  • 2(0x00000002 - 检查 UDP 连接可用性时的正常返回代码,因为未返回 ACK 响应。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯