Comment découvrir l'adresse MAC des machines d'un réseau?

12

Comment découvrir l'adresse MAC des machines d'un réseau?

J'ai besoin de découvrir les machines disponibles uniquement avec seulement le BIOS installé (pas de système d'exploitation).

Et je dois trouver l'adresse MAC des machines qui fonctionnent.

Peter Mortensen
la source
Voir également serverfault.com/questions/260333/…
Stefan Lasiewski
Duplicata intersite (sur Stack Overflow): Comment découvrir l'adresse MAC des machines dans et sur un réseau? .
Peter Mortensen

Réponses:

8

Vous devrez accéder aux informations disponibles sur vos commutateurs gérés. Si vous avez un réseau non géré, je ne vois pas de moyen de le faire.

Cela suppose que les ordinateurs cibles sont capables de Wake-on-LAN (WoL). Dans ce cas, un lien vers le serveur est établi (recherchez le voyant de lien flashy) et la carte réseau écoute les diffusions WoL. AFAIK, la carte ne répond à rien dans cet état. S'il n'y a pas de WoL, la carte est probablement éteinte (pas de LED de liaison) et cela ne fonctionnera pas du tout.

Posipiet
la source
7

Si les machines ne sont pas sous tension, cela est impossible.

S'ils sont sous tension, je suppose que cela est également impossible, car vous avez besoin d'une pile réseau minimale pour répondre au moins à des choses comme les requêtes ARP, etc., qui ne fonctionne pas sans OS installé.

Ce qui pourrait fonctionner (je ne sais pas et je ne peux pas tester pour le moment) est que la carte réseau et le commutateur communiquent lorsque la carte réseau est branchée ou sous tension et le commutateur apprend l'adresse MAC de cette façon. Si tel est le cas, vous auriez besoin d'un commutateur gérable et recherchez-le pour les adresses mac connectées.

Sven
la source
2
Vous pouvez l' obtenir sans pile réseau s'il demande un démarrage bootp ou pxe. Cela dépend de la machine pour savoir si cela fonctionnerait, je pense.
Bart Silverstrim
6

Vous pouvez utiliser Nmap pour effectuer une analyse ARP très rapide en utilisant la syntaxe suivante.

nmap -sn -PR -oX nmap.xml 192.168.1.0/24

Cela utilise le ping ARP (uniquement les demandes ARP, pas d'ICMP, UDP ou TCP, pas de numérisation de port) pour analyser la plage d'adresses IP spécifiée et enregistrer les réponses d'adresse IP / d'adresse MAC / de nom d'hôte dans un fichier XML (nmap.xml).

J'ai écrit un script PowerShell qui munes le fichier XML et crache un fichier CSV . Cela filtre également les hôtes en panne. Je trouve cela plus facile à utiliser dans Excel que le fichier XML. Voici le script si quelqu'un est intéressé.

# Define nmap input file
$NmapXMLFile = ".\nmap.xml"

# Initialize object array
$HostItems = @()

# Initialize index
$x = 0

# Load XML
[xml]$NmapXML = Get-Content $NmapXMLFile

# Loop through XML
ForEach ($HostNode in $NmapXML.nmaprun.host) {

  # Check host status
  If ($HostNode.status.state -eq "up") {

    # Create host object
    $HostObj = "" | Select-Object ID, Hostname, 'IP Address', 'MAC Address', Vendor

    # Store ID and increment index
    $HostObj.ID = $x += 1

    # Store hostname
    $HostObj.Hostname = $HostNode.hostnames.hostname.name

    # Loop through addresses
    foreach ($HostAddress in $HostNode.address) {

      # Check IP address
      If ($HostAddress.addrtype -eq "ipv4") {

        # Store IP address
        $HostObj.'IP Address' = $HostAddress.addr
      }

      # Check MAC address
      If ($HostAddress.addrtype -eq "mac") {

        # Store MAC address
        $HostObj.'MAC Address' = $HostAddress.addr

        # Store vendor
        $HostObj.Vendor = $HostAddress.vendor
      }
    }

    # Append host object to array
    $HostItems += $HostObj
  }
}

# Print host items
$HostItems

# Export host items to CSV
$HostItems | Export-CSV -NoType .\nmap.csv
John Homer
la source
J'ai essayé la commande ci-dessus et j'ai obtenu l'erreur Scantype n not supported. Apparemment, le drapeau -snn'est pas pris en charge sur Nmap 4.x.
Stefan Lasiewski
Du ChangeLog nmap 5.30BETA1:
John Homer
2
Commuté sur -Pn et -sn et comme syntaxe préférée pour ignorer le scan ping et le scan du port ignoré, respectivement. Auparavant, les options -PN et -sP étaient recommandées. Ceci établit une syntaxe plus régulière pour certaines options qui désactivent les phases d'une analyse: -n pas de DNS inversé -Pn pas de découverte d'hôte -sn pas d'analyse de port Nous avons également estimé que l'ancienne option -sP ("ping scan") était un peu trompeuse car les versions actuelles de Nmap peuvent aller beaucoup plus loin (y compris -sC et --traceroute) même avec les analyses de port désactivées. Nous conserverons la prise en charge des noms d'option précédents dans un avenir prévisible.
John Homer
Donc, sur cette base, vous devriez pouvoir utiliser la syntaxe '-sP' à la place du nouveau paramètre '-sn'. Malheureusement, je n'ai pas de version de nmap4 pour tester.
John Homer
3
  1. Affichez les informations sur votre commutateur / routeur, si le commutateur est suffisamment avancé.
    (Dans la commande des commutateurs Cisco est show mac-address-table).
  2. Si les machines ont une carte BIOS / réseau compatible PXE, lisez les informations des journaux DHCP, car elles essaieront d'obtenir un bail DHCP. Si vous ne disposez pas de DHCP, videz simplement tout le trafic de diffusion avec Wireshark et filtrez le trafic DHCP. Toutes les machines nouvellement alimentées sans OS s'affichent dans le trafic.
Kristaps
la source
3

À partir d'une machine Unix, en écoutant les ordinateurs sans système d'exploitation sur le même LAN, et si possible via un concentrateur (pas un commutateur), vous pouvez essayer

arp
cat /proc/net/arp

Vous pouvez également essayer wireshark(à partir d'une machine sous OS). Encore une fois, il vaut mieux utiliser un concentrateur pour intercepter toutes les communications des machines du BIOS, y compris les diffusions.

Ø bague
la source
1

Le problème fondamental ici est qu'il s'agit d'informations de couche 2, donc seuls les commutateurs les voient. Certains commutateurs fourniront une interface qui vous permet de jeter un œil à ces informations, mais s’ils ne le font pas, la seule façon de les obtenir est d’intercepter dans la couche physique, par exemple en installant un concentrateur entre les commutateurs.

Si vous utilisez des commutateurs gérés, ces informations sont probablement disponibles à partir du commutateur. Certains routeurs / commutateurs intégrés aux utilisateurs finaux (comme ceux qui conditionnent souvent les modems ADSL également) auront parfois une liste de clients DHCP qui inclut des adresses MAC.

Si vous utilisez des commutateurs non gérés et que vous voulez vraiment connaître ces informations, je vous recommande d' acheter un concentrateur et de remplacer temporairement le commutateur par celui-ci. Vous pouvez ensuite connecter un ordinateur exécutant Wirehark au concentrateur et capturer les paquets ARP pour enregistrer les adresses MAC. Alternativement, vous pouvez utiliser Echolot pour le faire pour vous - il suit sélectivement les paquets ARP et crée une base de données d'adresses MAC.

imoatama
la source
Modifier - relisez simplement la partie sur eux étant uniquement BIOS. Cela présente d'autres défis au-delà du problème de l'interception des données de couche 2 - les clients peuvent même ne pas envoyer de données sur le réseau. Si les clients ont un bios qui fait DHCP ou envoie des paquets ARP, il devrait être possible de les voir depuis le commutateur. Je ne sais pas quelles éditions du BIOS prennent en charge cela, je sais que certains le font cependant.
imoatama
1

Voici une solution qui a fonctionné pour moi:

  1. Activez le démarrage réseau dans le BIOS. (Par exemple, définissez votre carte réseau sur "Activé avec PXE")
  2. Démarrez la machine.
  3. La machine tentera de démarrer à partir du réseau, vous montrant l'adresse MAC dans le processus.
Igor Ostrovsky
la source
1

Une petite astuce très simple que vous pourriez faire en 2 secondes est de travailler avec le fait que tout système d'exploitation écrit une table avec l'adresse MAC et IP de tout appareil avec lequel il interagit. Ceci est connu comme ARP TABLE. La question est donc de savoir comment forcer une interaction avec tous les appareils? Vous pouvez simplement envoyer une requête ping à l'adresse IP de diffusion. Ce n'est pas parfait, car certains appareils ou pare-feu peuvent bloquer la requête ping ICMP, mais cela fonctionne dans de nombreux scénarios.

Les commandes sont (dans une adresse de diffusion ipv4 192.168.0.255):

ping 192.168.0.255

Sous Linux, utilisez:

ping -b 192.168.0.255

Attendez quelques secondes que les appareils répondent, puis procédez comme suit:

arp -a

Pour le ping IPV6, voir le commentaire de Giedrius Rekasius

Pas parfait, mais pas d'outils, pas de recherche, pas de perte de temps, fonctionne dans tous les principaux systèmes d'exploitation et est rapide.

Giovanni Silva
la source
Je trouve plus facile et plus fiable de faire de tels pings sur IPv6 que sur IPv4. Un exemple de commande pourrait ressembler à ceci ping6 -c2 -n ff02::1%wlan0. Il suffit de mettre à jour le nom de l'interface réseau à utiliser, l'adresse IP à utiliser à cet effet est toujours ff02::1quel que soit le réseau sur lequel vous vous trouvez.
kasperd
1

Analysez le réseau avec Nmap puis vérifiez la table ARP ( arp -adans les distributions Linux).

MihaiM
la source
0

Comme d'autres l'ont dit, si vous avez des commutateurs non gérés ou BootP / PXE, il n'y a pas de moyen facile d'obtenir les MAC des machines sans système d'exploitation.

Si vos machines en cours d'exécution exécutent des fenêtres, il est facile de créer un script (généralement via WMI)

Il y a un tas d'exemples ici: http://gallery.technet.microsoft.com/ScriptCenter/en-us/site/search?f[0. 0

gWaldo
la source
0

J'allais suggérer de changer la table d'adresses MAC, mais quelqu'un a déjà couvert celle-ci ci-dessus.

Si l' un des ordinateurs sont en cours d' exécution d' un système d' exploitation et ont une adresse IP, vous pouvez connecter dans le même réseau local, vous pouvez utiliser NMAP (ou une version GUI comme Zenmap) à partir http://nmap.org/ ... si vous exécutez ceci sur le même LAN, vous devriez obtenir les informations d'adresse MAC pour toutes les machines qui répondent.

Il serait utile de mieux comprendre pourquoi vous devez obtenir les adresses MAC, au cas où il existe un meilleur moyen d'obtenir le même résultat.

Mitch Miller
la source
0

Vous pouvez collecter des informations ARP avec par exemple un arpalert fonctionnant en continu. Avec cela, vous aurez l'ensemble des adresses ARP vues après le démarrage.

Les machines hors tension ne vous enverront pas de réponses ARP.

Pour accélérer le processus, vous pouvez utiliser une analyse ping nmap (nmap -sP) sur votre réseau à partir du serveur sur lequel vous exécutez arpalert, afin de déclencher tous les hôtes possibles (en direct et en cours d'exécution) pour répondre à votre requête arp. En exécutant régulièrement le scan ping nmap plus tard, vous avez de meilleures chances d'attraper un hôte vivant peu de temps.

extrait de arpalert:

Si le MAC n'est pas dans la liste, arpalert lance un script utilisateur prédéfini avec l'adresse MAC et l'adresse IP comme paramètres.

extrait de nmap:

Nmap ("Network Mapper") est un utilitaire gratuit et open source (licence) pour l'exploration de réseau ou l'audit de sécurité

Regardez ici:

asdmin
la source
0

J'utilise: nmap -sP 192.168.1.1/24

(remplacez 192.168.1.1/24 par votre plage IP)

Il ne vous montrera que les machines qui fonctionnent et vous donnera quelque chose comme:

[root@x ~]# nmap -sP 192.168.1.1/24
Starting Nmap 6.40 ( http://nmap.org ) at 2014-11-22 14:20 EST
Nmap scan report for 192.168.1.1
Host is up (0.0019s latency).
MAC Address: ZZ:ZZ:54:2E:E9:B4 (Unknown)
Nmap scan report for 192.168.1.33
Host is up (0.035s latency).
MAC Address: ZZ:ZZ:FA:2D:D7:D8 (Intel Corporate)
Nmap scan report for 192.168.1.254
Host is up (0.0020s latency).
MAC Address: ZZ:ZZ:31:02:98:19 (Asustek Computer)
Nmap scan report for 192.168.1.34
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 1.88 seconds

Si aucun système d'exploitation n'est installé, vous pouvez utiliser un live cd linux, nmap est probablement disponible dans la plupart d'entre eux

neofutur
la source