我曾经使用过一个应用程序,它可以在机器上 ping 或运行端口扫描,即使该机器配置为不允许这样做。
我目前正在尝试 ping 我们 WAN 上的远程计算机,但我已将该计算机配置为不允许 ping。是否有类似 ping 的程序可供我使用?
再次强调,这是一台位于我们广域网另一个城市的机器。
答案1
如果你使用的是 XP/2003+(包括 Vista/2008/7),那么你可以使用Win32_Ping状态。运行脚本代码的机器是唯一需要 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
有关如何使用 Win32_PingStatus 的更多信息,请参阅 Scripting Guy 文章:
http://www.microsoft.com/technet/scriptcenter/resources/qanda/sept04/hey0914.mspx
答案2
对容器有用的答案
ping
是 ICMP,如果您阻止了 ICMP,您就无法 ping 通。
因此,如果您有一个在 tcp/udp 上运行的服务,只需向该端口发送一个包。
现在,如果您在缺少、、、、ping
和其他互联网工具的容器上运行测试,请改用此技巧:nc
telnet
curl
wget
(echo >/dev/tcp/${host}/${port}) &>/dev/null && echo "open" || echo "closed"
这将尝试通过 bash 伪设备(哇,我知道)通过 tcp/udp 进行连接,并检查echo "open"
端口是否打开或echo "closed"
关闭。
在这种情况下,它会挂起一段时间,然后回显“关闭”。
答案3
你可以通过 telnet 连接到机器上开放的 tcp 端口。例如,如果机器是 Web 服务器,并且开放了 80 端口,则只需:
telnet ip.ad.dre.ss 80
即使在加密端口上这也将有效(尽管您无法理解数据)
可以尝试的其他一些端口是:
- 443 表示 https 服务器
- 22 用于 ssh
(有一个端口/服务列表/etc/services在 Linux 机器上)
答案4
如果你可以访问与目标计算机位于同一 LAN 上的另一台计算机,则可以使用阿尔平。
Arping 通过发送针对机器的 ARP 数据包来工作,这种方法非常完美,因为如果您想使用网络,就无法阻止 arp 数据包(好吧,您可以在任何地方设置静态 arp 表:D)但缺点是您必须与 arping 目标位于同一 LAN 内。