在我的本地网络(家里)中,有很多连接的计算机和电话。我想知道是否有办法获取连接的计算机的名称(当我说名称时,我指的是用户在安装操作系统时为计算机指定的名称)。
答案1
这可以通过多种方式实现,但可用的方式受到主机上的操作系统的限制。
浏览器(被动 - 仅限 Windows)
您可以运行 wireshark,并设置过滤器以browser
过滤 Samba BROWSER 协议。它用于在一定时间间隔内由 Windows PC 宣布它们存在。这些数据包被广播并包含计算机名称。
mDNS txt“响应”(被动 - 仅限 MAC)
您可以在将过滤器设置为 的情况下运行 wireshark。mDNSdns && udp.dstport==5353
基本上是多播上的 DNS 协议。据我所知,它仅由苹果主机使用。在 mDNS“响应”(它们发送时没有实际请求)中,包含发送主机的主机名。
DHCP 通知(被动)
您可以使用bootp
过滤器运行 wireshark,该过滤器是后来附加到协议 DHCP 的。收到 DHCP 租约的客户端会每隔一段时间发布配置。这些通知数据包还包含发送通知数据包的客户端的名称
端口扫描和反向 DNS(主动)
您还可以对网络进行端口扫描以查找主机,然后运行脚本以通过 DNS 请求反向解析这些条目。这当然只有在您拥有“真正的”内部 DNS 服务器而不仅仅是中继时才有效。
端口扫描和横幅抓取(主动)
您可以对网络进行端口扫描并启用横幅抓取,因为这些横幅在许多情况下包含主机名。
答案2
您可能问错了问题,但我知道它可能会产生一些安全隐患,因此我无论如何都会回答它。
如果您在域中(无论是 Microsoft Active Directory 域还是某种 *nix 域,或任何 LDAP 域),您可以运行某种 ping 扫描工具来扫描本地子网/网络段上的所有 IP;我有时喜欢使用的一种免费工具称为高级 IP 扫描仪。许多 ping 扫描工具将返回它们找到的计算机的 IP 和/或 MAC 地址,其中许多甚至会为您返回计算机名称,这意味着您甚至不需要转到我将描述的下一步。这并不意味着您会找到网络上的所有计算机,因为您可能与其他用户/计算机隔离 VLAN,并且您可能不知道所涉及的所有子网/IP 方案。获得 ping 扫描生成的设备的 IP 后,您可以使用命令提示符或 PowerShell 或任何 *nix 等效命令执行 NSLOOKUP(假设您在 Windows 域中,并且您的 DNS 设置具有与正向查找 DNS 区域相关的反向或 PTR 记录设置)。如果您在 DNS 中设置了反向区域,则 DNS 服务器应该返回您输入的计算机名称。
现在,如果您在工作,或者在企业公司网络上,我的回答是:永远不要尝试使用任何类型的数据包捕获、ping 扫描软件扫描您的网络。如果您确实需要这样做,请获得适当的许可和签署的表格,并让系统管理员、网络管理员或安全官员为您执行此操作。普通用户(IT 部门之外)不应该有能力在您的网络上运行这些扫描,如果他们这样做,他们很可能违反公司政策;我是一名联邦承包商,我工作的机构如果发现任何人进行我上面推荐的这种扫描,如果他们不是合适的人员,他们会立即解雇他们。现在,如果您碰巧是系统管理员,我高度怀疑您不是,那么您可以自己做这件事。