如何检测连接networking的iPhone?

我注意到通过观察Wireshark,当一个iPhone连接到一个WiFinetworking,它发送了一些IGMP / MDNS包到224.0.0.251(我认为是局域网广播)。 有没有简单的方法来观察这些数据包,然后运行一个脚本或发送一个事件?

或者,是运行一个数据包嗅探器的最好方法? 任何可以发送事件或在filter被触发时执行curl命令的简单程序?

当我运行nc -u -l 5353时,我得到:

My-Name-iPhonelocal??? x???)?? ??cc^C 

我能做些什么:nc -u -l 5353 | grep iPhonelocal | 执行命令…

这种行为与iPhone无关。 根据RFC 3171,IP 224.0.0.251用于组播DNS。 Bonjour技术的多点传送DNSfunction允许本地networking上的设备通过名称相互连接,无需单独的DNS服务器。

如果你想检测networking上的特定设备,你应该使用nmap和远程操作系统检测(OS-Fingerprinting),但这不是100%准确的。

从你的评论:

我基本上试图运行一个脚本,一旦我的iPhone进入我的家庭networking的范围内打开灯。 有任何想法吗? 其他人曾经build议使用sed。

这听起来像一个有趣的项目!

你可以通过轮询每1或2秒做一次。 这有点夸张,但是ping会造成微不足道的开销。

  1. configuration您的DHCP服务器始终将相同的IP发送到您的iPhone(基于其MAC地址)

  2. 在您的Linux计算机上运行一个脚本,每n秒钟尝试ping该IP。

  3. 根据一些简单的ping响应标准打开/closures你的灯

如果你有像Zabbix这样的监控应用程序,你可以很容易地做到这一点。 您可以为iPhone设置一个pingtesting,并创build一个运行外部脚本的触发器(打开/closures灯光)。 如果这是你所使用的所有东西,Zabbix是过分的,但你也可以拿出一些其他用途,我敢肯定。 🙂

另外,在你的脚本/触发逻辑中,你应该尽量避免闪烁。 只要1 ping得到响应,灯应该被打开。 只有在五分钟内没有响应才能关掉。 这样,当networking拥塞时,灯光不会闪烁。

呵呵,好吧,我会咬的。 考虑做这样的事情(我是模糊的,因为你必须定制这个工具,你有可用):

  1. 获取你的iPhone的MAC地址
  2. 在* nix框上运行一个dhcpd守护进程
  3. 确保所述服务器正在logging
  4. 编写一个[shell / perl / ruby​​ / python]脚本来监视该日志文件并采取行动find与该MAC地址匹配的行

相对而言,这听起来像是一个比试图与嗅探器实时交互的更简单的方法(然而,也许snort可以被configuration来做这样的事情)。

当然,我假设iPhone会在每次连接时尝试续租。

祝你好运!

后来我发现我的防火墙一直在丢弃这样的数据包,并将这些数据包logging到kern.log中。 你的文章启发我鞭打一个小脚本来通知我,当某个iPhone连接到我的wifi。

 #!/bin/bash if [ "$1" != "ehlo" ]; then # If the script is ran, restart with the correct stdin tail -Fn 0 /var/log/kern.log | $(readlink -f $0) "ehlo" exit 0 fi lasttime=0 while [ true ]; do read derp if [ $(echo "$derp" | fgrep -c "0m:ac:ad:dr:es:s0") -gt 0 ];then if [ $(($(date +%s)-$lasttime)) -ge 30 ];then lasttime=$(date +%s) # Pop up an ubuntu notification (requires libnotify-bin) notify-send "kern.log" "iPhone has appeared" fi fi done 

http://www.zeroflux.org/projects/knock

您可能可以设置敲响以响应广播stream量。

我使用端口敲击来保护某些服务器上的SSH。 我相信你所要做的并不包含在任何例子中,但也许是可能的。