Question

Je souhaite rechercher une adresse MAC donnée sur mon réseau, à partir d'un script Python. J'ai déjà une carte de toutes les adresses IP actives sur le réseau mais je n'arrive pas à comprendre comment glaner l'adresse MAC. Des idées?

Était-ce utile?

La solution

Vous avez besoin de ARP . La bibliothèque standard de Python ne contient pas de code pour cela. Vous devez donc appeler un programme externe (votre système d'exploitation peut disposer d'un utilitaire 'arp') ou créer vous-même les paquets (éventuellement avec un outil tel que Scapy .

Autres conseils

Cet article , " Envoi de cadres Ethernet fabriqués à la main en Python (ARP par exemple) ", semble être exactement ce que vous recherchez.

Je ne pense pas qu'il existe un moyen intégré de l'obtenir à partir de Python lui-même.

Ma question est la suivante: comment obtenez-vous les informations IP de votre réseau?

Pour l'obtenir depuis votre ordinateur local, vous pouvez analyser ifconfig (unix) ou ipconfig (windows) avec peu de difficulté.

Si vous souhaitez une solution purement Python, vous pouvez consulter Scapy pour paquets artisanaux (vous devez envoyer une demande ARP et inspecter les réponses). Ou bien, si vous n’êtes pas dérangé d’appeler un programme externe, vous pouvez utiliser arping (sur les systèmes Un * x, je ne connais pas d’équivalent Windows).

Il semble qu’il n’y ait pas de méthode native pour faire cela avec Python. Le mieux serait d’analyser le résultat de " ipconfig / all " sous Windows ou "ifconfig". sur Linux. Pensez à utiliser os.popen () avec des expressions rationnelles.

Cela dépend de votre plate-forme. Si vous utilisez * nix, vous pouvez utiliser la commande 'arp' pour rechercher l'adresse mac d'une adresse IP donnée (en supposant IPv4). Si cela ne fonctionne pas, vous pouvez envoyer une requête ping à l'adresse puis regarder, ou si vous avez accès au réseau brut (à l'aide de BPF ou d'un autre mécanisme), vous pouvez envoyer vos propres paquets ARP (mais cela risque d'être excessif).

Vous voudrez peut-être analyser le résultat de 'arp', mais le cache ARP du noyau ne contiendra ces adresses IP que si ces hôtes ont communiqué avec l'hôte sur lequel le script Python est exécuté.

ifconfig peut être utilisé pour afficher les adresses MAC des interfaces locales, mais pas celles du réseau local.

Mark Pilgrim explique comment effectuer cette opération sous Windows pour la machine en cours avec le module Netbios ici . Vous pouvez obtenir le module Netbios dans le package Win32 disponible sur python.org. Malheureusement pour le moment je ne trouve pas la documentation sur le module.

comme python n'était pas destiné à traiter les problèmes spécifiques à l'OS (il est censé être interprété et multiplate-forme), j'exécuterais une commande externe pour le faire:

sous Unix la commande est ifconfig

si vous l'exécutez en tant que pipe, vous obtenez le résultat souhaité:

import os
myPipe = os.popen2("/sbin/ifconfig","a")
print(myPipe[1].read())
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top