2013-05-29 3 views
11

Я пытаюсь обнаружить, если мой iPhone находится в той же сети, что и моя малина Pi. Я хотел бы выполнить сценарий, когда я дома, и присутствие моего iPhone зарегистрировано в моей локальной сети.Как определить iPhone в сети?

Похоже, что когда телефон находится в режиме ожидания, даже порт iphone-sync (6207/tcp) не найден. "/ usr/bin/nmap -n -sT -p62078 [локальный IP-адрес моего телефона]" не отображает хост. Интересно, что еще я мог отсканировать. Очевидно, что телефон подключен к сети и готов принимать факс-звонки (данные через 3G деактивируются). Могу ли я что-то сделать с avahi, который я использую на малине Pi, или есть другие способы.

+0

Я отказался от этого, и теперь я использую bluetooth для регулярной проверки, если мой iPhone находится в зоне действия. – PiEnthusiast

+0

В случае, если кто-то сталкивается с этим и задается вопросом, что я делаю, чтобы обнаружить присутствие с помощью bluetooth: Я пытаюсь разрешить имя моего (известного) адреса устройства ('sudo hcitool name xx: xx: xx: xx: xx: xx'). Если я получаю действительный ответ, телефон находится в диапазоне BT. – PiEnthusiast

ответ

3

Вы можете найти список устройств в своей сети, исследуя кеш-память arp.

arp -a

Просто написать Баш скрипт для запуска arp -a через регулярные промежутки времени, а также поиск по MAC-адрес вашего телефона.

Вы можете пойти еще дальше с этим и выполнить различные действия в зависимости от того, какой тип устройства подключен.

Первые три шестнадцатеричные цифры адреса mac - это идентификатор поставщика.

Возьмем следующий MAC-адрес:

00:19:E3:AB:CD:EF 

00:19:E3: является одним из зарегистрированного MAC-адрес для яблочных устройств.

Сравнивая устройства в сети с this list, вы можете обнаружить, когда, например, устройство «3com» или устройство «dell» подключаются к вашей сети.

http://www.coffer.com/mac_find/?string=apple

+0

Спасибо за подсказку. К сожалению, iPhones переходят в какой-то глубокий спящий режим, когда они не используются. Кэш arp не показывает ни одного из моих четырех iDevices. – PiEnthusiast

1

Вы можете сделать «АРП-скан -l -r10» для этого (проверял это сам), но проблема в том, если мобильные данные включена iphone будет идти и подвесить Wi-Fi, если экран заблокирован, чтобы безопасно аккумулятор. поэтому вам нужно отключить мобильные данные .. тогда arp-scan будет работать.

+0

Знаете ли вы, как часто iPhone подключается к Wi-Fi во время блокировки? Я думаю о присутствии обнаружения людей в строительстве, и это не должно быть проблемой, если будет точность около получаса. –

+0

См. Мою половину *** d ответа ниже. Заблокированные/спящие iPhone отправляют значительное количество сетевого трафика на низком уровне, что может дать вам точность разрешения ~ 20 минут – user3235770

1

Я только что потратил неделю на эту проблему, поэтому я могу воздержаться от отправки SMS-сообщений домашней тревоги моей жене, когда она на работе.

Pinging не работает, потому что iPhone не будет реагировать на ICMP при спящем режиме. Чтение кеша ARP не будет работать, потому что спящий iPhone придет и уйдет (проверьте его каждые 30 секунд в течение нескольких минут).

Единственный способ, которым я нашел «надежно», определить, когда мои два iPhone находятся в моей локальной (домашней) сети, - это использовать библиотеку dotnet для PCAP для поиска любых пакетов, исходящих от любого из MAC-адресов телефонов. Например, если запустить Wireshark с захватом фильтром

ether src <iphone-mac-address> 

вы увидите удивительное количество сетевого открытия/объявление трафика с телефона. У него все еще есть состояния покоя, но до сих пор самый длинный интервал, который я видел между захваченными пакетами, составляет около 10 минут. Вам придется подождать, пока вы не услышите от телефона какое-то время (я использую 15 минут), прежде чем объявлять его не дома.

С помощью этой техники вы быстро найдете телефон, когда он подключится к домашней сети, при условии, что ваш телефон настроен для DHCP. Я также использую зеркалирование портов на моем основном коммутаторе Ethernet, чтобы включить трафик из моих беспроводных точек доступа.

У меня нет решения для малины Pi для этого, потому что мой опыт в Linux очень ограничен, но кто-то может помочь вам в этом. У меня есть служба Windows, использующая библиотеку PCAP, и до сих пор она работает надежно, с ограничением ожидания 15 минут, прежде чем решить, что iPhone покинул сеть.

* Обновление 2-3-2018 *

У меня есть этот алгоритм обнаружения примерно до 5 минут, используя комбинацию пинг/Arp сообщений, направленных на каждый телефон, примерно раз в минуту. Кажется, отлично работает.

Смежные вопросы