首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用mDNS发现iOS设备名称

使用mDNS发现iOS设备名称
EN

Stack Overflow用户
提问于 2013-09-19 08:18:31
回答 1查看 13.8K关注 0票数 20

我注意到,一些更好的网络发现应用程序,如用于iOS的Fing和用于Mac的iNet,能够发现iOS设备和Mac设备的设备名称,即使它们没有宣传Bonjour服务,如iTunes Wi-Fi同步。这是怎么做的?我知道如何进行反向mDNS查询https://serverfault.com/questions/143184/how-do-i-get-the-machine-name-from-an-ip-via-multicast-dns。但是,尽管反向mDNS查找(至少通过dig命令dig -x the.ip @224.0.0.251 -p 5353完成)可以在没有广播任何Bonjour服务的Mac上工作,但只有在iOS设备上运行Wi-Fi同步或其他Bonjour服务时,它才能工作。我不确定如何获得其他名称,但这些应用程序可靠地获得它。我在iNet发现的时候使用了Wireshark,我只看到ICMP和NetBios查询都返回0个答案。

另请注意,通过执行广播ping,然后解析ARP表,我已经获得了设备的IP地址。我想通过获取设备名称并查找字符串"iPhone“或"iPad”来发现以这种方式发现的设备中哪些是iOS设备。

另请注意,iNet应用程序网站提供了有关如何执行反向IP查找的以下内容。我认为这意味着他们对每个IP进行反向DNS查找和反向mDNS查找。

Reverse IP lookups (host­names) are per­formed as unicast and mul­ti­cast queries for every IP found. -http://www.bananaglue.de/inet/index_e.php

EN

回答 1

Stack Overflow用户

发布于 2014-12-16 21:56:00

您尝试过dns-sd命令行工具吗?

如果您键入dns-sd -B _services._dns-sd._udp以获取所有可用的服务,您将看到有一个可用的_whats-my-name服务。

代码语言:javascript
复制
$ dns-sd -B _services._dns-sd._udp
Browsing for _services._dns-sd._udp
DATE: ---Tue 16 Dec 2014---
14:38:30.746  ...STARTING...
Timestamp     A/R    Flags  if Domain               Service Type         Instance Name
14:38:30.747  Add        3   5 .                    _tcp.local.          _nfs
14:38:30.747  Add        3   5 .                    _tcp.local.          _afpovertcp
14:38:30.747  Add        3   5 .                    _tcp.local.          _smb
14:38:30.747  Add        2   0 .                    _tcp.local.          _whats-my-name
14:38:31.330  Add        3  10 .                    _tcp.local.          _nfs
14:38:31.330  Add        3  10 .                    _tcp.local.          _afpovertcp
14:38:31.330  Add        2  10 .                    _tcp.local.          _smb

之后,我们可以查询此服务,该服务输出以下内容:

代码语言:javascript
复制
$ dns-sd -B _whats-my-name._tcp
Browsing for _whats-my-name._tcp
DATE: ---Tue 16 Dec 2014---
14:40:20.738  ...STARTING...
Timestamp     A/R    Flags  if Domain               Service Type         Instance Name
14:40:20.742  Add        2   0 local.               _whats-my-name._tcp. Blub MacBook Pro

Instance Name是这里有趣的部分。我假设在运行bonjour的每台计算机上都可以使用_whats-my-name服务。如果您不能在所有情况下都访问dns-sd,也许您可以找到发送的查询,并使用基本的bash工具重建它。此外,您不应该在脚本中使用dns-sd。相反,您应该为您的编程语言使用该协议的特定实现。

注意:请注意,设备名称可能不能可靠地检测到您正在与哪个设备通信

希望这能有所帮助。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18884422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档