有无法在无线网络上检测iPad或iPhone的方法吗?你好?

时间:2011-09-24 15:41:21

标签: ios bonjour discovery

我正在尝试检测连接到无线网络的Apple设备。使用Bonjour相对简单,但我也试图检测它是什么类型的设备。比如,MacBook Air,MacBook Pro,MacPro,iPhone,iPod或iPad。

我发现Bonjour对MacBook和MacPros的请求包含对查询的“附加部分”响应,其中包括模型:

;; ADDITIONAL SECTION:
Q9550._device-info._tcp.local. 10 IN    TXT "model=MacPro3,1"

;; ADDITIONAL SECTION:
Air._device-info._tcp.local. 10 IN  TXT "model=MacBookAir4,2"

通过测试iPhone(3GS和4),iPod touch和iPad2,所有iDevices只回复他们的名字:

;; ANSWER SECTION:
111.1.168.192.in-addr.arpa. 10  IN  PTR gmPad2.local.

显然,该名称可能无法反映该设备。所以,我不想尝试从名称中推断出设备的类型。有没有人知道任何其他方法来检测iDevice类型?


编辑:为了清楚起见,我使用的命令是:dig @ 224.0.0.251 -p5353 -x 192.168.1.111 ...替换Apple设备的IP地址

2 个答案:

答案 0 :(得分:9)

使用端口62078

我看到的最可靠的指标是你是否可以连接到IP端口62078。

端口62078用于“iphone-sync”服务,我不认为MacBook会使用它。对于我们(非常小的)网络上的iPhone和iPad,此端口似乎始终处于打开状态。

可能(但不是可能)有消息可以发送到端口以嗅出更多细节......

我认为官方的xml端口分配列表在这里,虽然它刚刚对我不起作用: http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml

MAC地址

理论上,MAC地址可能会有所帮助 - 但除非您能找到维护可靠范围列表的地方(例如网络安全公司或硬件提供商),否则可能没什么用处。 MAC地址确实取决于所使用的实际芯片(或闪存的MAC)。数据库处于组织级别(尽管组织有时会选择使用特定设备的特定范围)。

http://standards.ieee.org/develop/regauth/oui/public.html允许您下载“组织唯一标识符”数据库,或者您可以查找“Apple”或MAC地址的前三个字节,例如00264A。

有趣的是,MAC查找不起作用......我的iPad MAC的前三位数字是28-68-BA,并且没有任何内容。

用户代理

可能没用,但如果您可以观看网络流量或拥有http代理,那么用户代理字符串可以提供帮助(请参阅http://developer.apple.com/library/IOS/documentation/AppleApplications/Reference/SafariWebContent/OptimizingforSafarioniPhone/OptimizingforSafarioniPhone.html#//apple_ref/doc/uid/TP40006517-SW3)。

编辑(已添加):

Apple的Bonjour协议依赖于在UDP端口5353上运行的多播DNS(mDNS)并发送到这些保留的组地址:IPv4组地址 - 224.0.0.251,IPv6组地址 - FF02 :: FB - reference。< / p>

当Apple设备通过侦听5353 UDP上的多播消息连接到本地网络(本地链路)时,这将有助于获得推送通知。也许会嗅探数据包并查看其中是否有任何额外信息:)

虽然我认为Bonjour API也允许看到这个......

答案 1 :(得分:-1)

您也可以使用airport实用程序手动执行此操作:

1)打开AirportUtility 2)转到“无线客户端”(将鼠标悬停在箭头上并单击它) 3)转到DHCP客户端,您将看到iPad,iPhone,计算机名称等作为客户端ID列。