我曾经使用一个应用程序,它可以 ping 或者在机器上运行端口扫描,即使机器被配置为不允许它。
我目前正在尝试 ping WAN 上的远程机器,但我已将机器配置为不允许 ping。我可以使用类似于 ping 的东西吗?
同样,这是一台位于另一个城市的机器,它是我们广域网的一部分。
Bre*_*nt 18
您可以 telnet 到机器上打开的 tcp 端口。例如,如果机器是 Web 服务器,并且打开了端口 80,则只需:
telnet ip.ad.dre.ss 80
Run Code Online (Sandbox Code Playgroud)
这甚至可以在加密端口上工作(尽管您将无法理解数据)
要尝试的其他一些端口是:
(Linux 机器上的/etc/services 中有一个端口/服务列表)
Dav*_*ala 17
对容器有用的答案
Ping 是 ICMP,如果您阻止了 ICMP,则无法 ping。
如果您接受 TCP/UDP 连接,您可能仍然能够测试 TCP 或 UDP 端口。
如果您在缺少 ping、nc、telnet 和其他工具的容器上运行测试,您可以使用以下技巧:
(echo >/dev/tcp/${host}/${port}) &>/dev/null && echo "open" || echo "closed"
Run Code Online (Sandbox Code Playgroud)
这将尝试通过设备通过 tcp/udp 进行连接(哇,我知道)并在端口打开时回显“打开”或如果端口关闭则回显“关闭”。
在这种情况下,它会在回显“关闭”之前挂起一段时间。
如果您使用 XP/2003+(包括 Vista/2008/7),那么您可以使用Win32_PingStatus。运行脚本代码的机器是唯一需要 XP/2003+ 的系统,它的工作方式就像使用 Ping.exe 一样,只是它不使用 ping.exe,所以它应该成为您的安全设置的漏洞。不允许执行 ping.exe。
strComputer = "192.168.1.1"
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_PingStatus " & _
"Where Address = '" & strComputer & "'")
For Each objItem in colItems
If objItem.StatusCode = 0 Then
WScript.Echo "Reply received."
End If
Next
Run Code Online (Sandbox Code Playgroud)
有关如何使用 Win32_PingStatus 的更多信息,请参阅脚本专家文章:
http://www.microsoft.com/technet/scriptcenter/resources/qanda/sept04/hey0914.mspx