尝试使用python脚本在我的网络上发现iOS设备

Mat*_*tt. 6 python bonjour ios

尝试使用pybonjour但不确定它是否是我需要的.https://code.google.com/p/pybonjour/

我希望能够发现自动出现在我的网络上的iOS设备,稍后将基于此运行脚本,但首先我想在我的wifi网络上出现/消失后立即发现iOS设备.

那么问题是,我该怎么做?在安装了python27和pybonjour软件包的windows机器上运行时,这两个示例在pybonjour页面上运行,但是我使用我的网络中包含的脚本运行什么命令来发现iOS设备?或者这个只运行在我的电脑上运行此脚本的发现服务!

如果我走向错误的方向请告诉我,我似乎无法找到关于此包的文档!

python browse_and_resolve.py xxxxxx
Run Code Online (Sandbox Code Playgroud)

Thx Matt.

更新中...

本文和浏览器在查找我需要搜索的服务时很有帮助,http://marknelson.us/2011/10/25/dns-service-discovery-on-windows/.

例; (这发现了我的苹果电视,不在家里,所以无法检查iphone的名称!我假设是iphone!

python browse_and_resolve.py _appletv._tcp
Run Code Online (Sandbox Code Playgroud)

此外,如果您有Windows实用程序dns-sd.exe,它将搜索网络上可用的所有服务.我用它来找到我要找的东西.

dns-sd -B _services._dns-sd._udp
Run Code Online (Sandbox Code Playgroud)

更新中...

"Bonjour有两种使用方式: - 发布服务 - 检测(浏览)可用服务".

对于我想做的事情,我认为它不会起作用,因为ipad/iPhone不会宣传服务,除非我正在运行一个宣传一个的应用程序(或越狱我的iPhone/ipad然后ssh将打开) .还有什么想法吗?

aba*_*ert 4

你想要做的事情(a)可能无法完成,(b)即使可以完成也可能没有多大用处。

\n\n

Bonjour 的重点是发现服务,而不是设备。当然,每个服务都是由某个设备提供的,因此您可以间接发现带有它的设备\xe2\x80\xa6\xc2\xa0,但只能通过发现它们正在宣传的服务来发现。

\n\n

据我所知,(Apple TV 除外)不会宣传任何服务,除非您运行的应用程序使用 Bonjour 在其他计算机上查找相同的应用程序。(越狱设备除外,这些设备经常宣传 SSH、AFP 等)

\n\n

有几种方法可以间接获取网络上任何人宣传的所有服务的列表。最简单的可能是使用Windows 版 Bonjour 浏览器。(我从未真正使用过它,但我使用过的原始 Mac 工具和 Java 端口都建议Windows 用户使用此 Windows 端口。)启动它,您将获得服务列表,您可以点击每一项来获取详细信息。

\n\n

因此,您可以验证您的 iPhone 和 iPad 没有宣传任何服务,这将表明无法通过 Bonjour 检测到它们。

\n\n

同时,即使您确实找到了设备,您打算做什么?想必您想以某种方式与设备进行通信,对吧?无论您尝试与\xe2\x80\xa6 通信的服务是什么,只需浏览该服务\xe2\x80\x94,然后(如果适用)过滤到 iOS 设备。这肯定比浏览 iOS 设备然后筛选那些拥有您想要的服务更容易。

\n\n
\n\n

至于有没有办法检测iOS设备\xe2\x80\xa6呢,至少有两种可能。我不知道它们是否有效,但是\xe2\x80\xa6

\n\n

首先,即使 iOS 设备没有为您做任何广告,我也认为它正在浏览可以做广告的服务。它还如何发现有要通过 AirTunes 进行连接的 Apple TV、要在 LAN 上同步的 iTunes 等等?

\n\n

因此,使用 Bonjour 浏览器获取运行 iTunes 的桌面、Apple TV 等正在广告的所有服务的列表。然后关闭桌面上的所有服务,使用 PyBonjour 来宣传任何看起来似乎相关的服务(并且,如果需要,使用 netcat 在您宣传的端口上放置简单的侦听器)。然后打开你的 iPhone,看看它是否连接到其中任何一个。您可能想让它运行一段时间,或者关闭 WiFi 然后再打开。(我猜测,尽管苹果提出了建议,但它不会连续浏览大多数服务,而只是每隔一段时间和/或每次网络状态发生变化时进行检查。毕竟,苹果建议适用于前台交互应用程序,而不是后台服务。)

\n\n

不幸的是,即使您可以找到所有 iOS 设备都将连接到的服务,您也可能无法仅通过在那里建立连接来区分 iOS 设备和其他设备。例如,我非常确定任何运行 iTunes 的 Mac 或 Windows 机器都会访问您的假 AirTunes 服务,并且任何 Mac 都会访问您的 AirPrint,等等。那么,如何区分这与 iPhone 撞到的情况呢?您可能需要实际提供足够的协议才能从中获取信息。这对于苹果未公开的协议来说尤其困难。

\n\n

但希望你会幸运,所有 iOS 设备都愿意与它对话。iTunes Sync 似乎是显而易见的可能性。

\n\n

或者,他们必须广播一些内容,否则就无法发挥作用。如果没有广播,您就无法连接 WiFi 网络。大多数家庭 WiFi 网络都使用 DHCP,这意味着它们也必须广播 DHCP 发现(和请求)。您可能可以在这些消息中检测到某种启发式签名。如果不出意外,启用 DDNS 应该会导致设备发送其主机名,您可以根据该主机名进行猜测(例如,除非您更改默认值hostname.lower().endswith(\'iphone\'))。

\n\n

最简单的方法可能是将桌面设置为家庭网络的主要接入点。我相信这就像在控制面板中的某个位置打开 Internet 连接共享一样简单。(设置为 DHCP 中继代理比设置为完整路由器的开销要少得多,但我不知道如何在 Windows 上开始执行此操作。)然后您可以捕获 DHCP 广播(或者,如果失败, 802.11 广播)。Wireshark轻松为您捕获和解析消息,因此您可以观看并看看是否值得进一步追求。(有关格式的详细信息,请参阅RFC 2131,这些信息在 Wireshark 的神秘单行描述中并不明显。)

\n\n

您可以更进一步,观察每台主机连接到互联网后所建立的互联网连接。任何定期检查 App Store、iOS 升级服务器等的设备。\xe2\x80\xa6 嗯,除非越狱开发团队的一个人住在你家,那可能是 iPhone,对吧?缺点是其中一些检查可能是非常周期性的,并且在 iPhone 连接到网络 6 小时后检测到它并不是很令人兴奋。

\n