découvrir le nom du périphérique iOS en utilisant le mDNS

<!-Je remarque que certaines des meilleures applications de découverte de réseau comme Fing pour iOS et iNet pour Mac sont capables de découvrir le nom d'appareil des appareils iOS et Mac même lorsqu'elles ne font pas la publicité de services de Bonjour tels que iTunes Wi-Fi Sync. Comment est-ce fait? Je sais comment faire une requête mDNS inverse https://serverfault.com/questions/143184/how-do-i-get-the-machine-name-from-an-ip-via-multicast-dns. Mais alors qu'une recherche mDNS inverse (au moins aussi accompli par le la commande dig dig -x the.ip @224.0.0.251 -p 5353) fonctionne contre un Mac qui ne diffuse pas autrement de services Bonjour, il ne fonctionne pas à moins que Wi-Fi Sync soit en cours d'exécution ou un autre service Bonjour sur un appareil iOS. Je ne sais pas comment obtenir le nom autrement, mais ces applications de manière fiable l'obtenir. J'ai utilisé Wireshark pendant que iNet découvrait et je ne vois que les requêtes ICMP et NetBios qui donnent 0 réponse.

notez aussi que j'ai déjà l'adresse IP de l'appareil en faisant un ping de diffusion et puis on analyse la table D'ARP. Je veux découvrir lequel des appareils découverts de cette façon sont des appareils iOS en obtenant leur nom d'appareil et en recherchant la chaîne de caractères "iPhone" ou "iPad".

notez également que le site Web de l'application iNet fournit ce qui suit sur la façon dont ils font des recherches IP inversées. Je suppose que ça veut dire qu'ils font une recherche DNS inversée et une recherche mDNS inversée pour chaque IP.

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

17
demandé sur Community 2013-09-19 04:18:31

1 réponses

avez-vous essayé l'outil en ligne de commande dns-sd?

Si vous tapez dns-sd -B _services._dns-sd._udp pour obtenir tous les services disponibles, vous verrez qu'il y a un _whats-my-name service disponible.

$ 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

après cela, nous pouvons interroger pour ce service qui produit ce qui suit:

$ 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 est la partie intéressante ici. Je suppose que le _whats-my-name le service est disponible sur tous les ordinateurs fonctionnant bonjour. Peut-être que vous pouvez traquer les requêtes envoyées et les reconstruire avec des outils bash de base si vous ne pouvez pas accéder à dns-sd dans tous les cas. Vous ne devriez pas utiliser dns-sd dans votre script. Vous devriez plutôt utiliser une implémentation spécifique du protocole pour votre langage de programmation.

Note: soyez conscient que le nom de l'appareil peut ne pas être fiable pour détecter avec quel appareil vous communiquez

j'Espère que vous aide.

6
répondu Yser 2014-12-16 14:11:38