Me gustaría buscar una dirección MAC dada en mi red, todo desde una secuencia de comandos de Python. Ya tengo un mapa de todas las direcciones IP activas en la red, pero no puedo encontrar la forma de extraer la dirección MAC. ¿Algunas ideas?Buscar host con dirección MAC usando Python
Respuesta
No creo que haya una forma integrada de obtenerlo de Python.
Mi pregunta es, ¿cómo está obteniendo la información IP de su red?
Para obtenerlo desde su máquina local, puede analizar ifconfig (unix) o ipconfig (windows) con poca dificultad.
Depende de su plataforma. Si usa * nix, puede usar el comando 'arp' para buscar la dirección MAC para una dirección IP dada (asumiendo IPv4). Si eso no funciona, puede hacer ping al dirección y luego mirar, o si tiene acceso a la red sin procesar (usando BPF o algún otro mecanismo), puede enviar sus propios paquetes ARP (pero eso probablemente sea excesivo).
Si quiere una solución de Python pura, Puede echar un vistazo al Scapy para crear paquetes (debe enviar una solicitud ARP e inspeccionar las respuestas). O si no le molesta invocar un programa externo, puede usar arping
(en sistemas Un * x, no conozco un equivalente de Windows).
Parece que no hay una forma nativa de hacer esto con Python. Su mejor opción sería analizar la salida de "ipconfig/all" en Windows, o "ifconfig" en Linux. Considere usar os.popen() con algunas expresiones regulares.
Desea analizar la salida de 'arp', pero la memoria caché ARP del kernel solo contendrá esas direcciones IP si esos hosts se han comunicado con el host donde se ejecuta la secuencia de comandos de Python.
ifconfig se puede utilizar para mostrar las direcciones MAC de las interfaces locales, pero no las de la LAN.
Mark Pilgrim describe cómo hacer esto en Windows para la máquina actual con el módulo de Netbios here. Puede obtener el módulo Netbios como parte del paquete Win32 disponible en python.org. Lamentablemente, en este momento no puedo encontrar los documentos en el módulo.
como pitón no estaba destinado a hacer frente a los problemas específicos de OS (se supone que debe ser interpretado y multiplataforma), i ejecutaría un comando externo para hacerlo:
en Unix el comando es ifconfig
si se ejecuta como una tubería se obtiene el resultado deseado:
import os
myPipe = os.popen2("/sbin/ifconfig","a")
print(myPipe[1].read())
This article, "enviar tramas Ethernet hechos a mano en Python (ARP por ejemplo)", parece ser exactamente lo que busca.
- 1. Obtener la dirección MAC de dispositivos usando Python
- 2. Java - encuentre el host por la dirección MAC
- 3. Obtener dirección MAC en Linux usando mono
- 4. Formato elegante para una dirección MAC en Python 3.2
- 5. Cómo obtener mi dirección MAC programáticamente con Ruby
- 6. Resolviendo la dirección IP del nombre de host con PowerShell
- 7. Obteniendo la dirección MAC
- 8. BSSID vs dirección MAC?
- 9. Buscar dirección IP en iphone
- 10. Buscar la versión de Mac OSX instalada usando AppleScript
- 11. Fallo de segmentación cuando al buscar el nombre de host y la dirección IP
- 12. ¿Cómo obtengo la dirección física (MAC) de una dirección IP usando C#?
- 13. Buscar la fecha del lunes con Python
- 14. Java: ir a buscar dirección URL con HTTPBasic autenticación
- 15. Obtener dirección MAC en la máquina local con Java
- 16. Subdominios usando Apache Virtual Host
- 17. Buscar dispositivos USB disponibles Mac OS X
- 18. iOS convierte CFUUID a dirección MAC
- 19. dirección de formato MAC en C#
- 20. jQuery/JavaScript dirección MAC de validación
- 21. Nombre de host de búsqueda Python desde IP con tiempo de espera de 1 segundo
- 22. Grabación de video con OpenCV + Python + Mac
- 23. Buscar todos los archivos CSV en un directorio usando Python
- 24. usando PEAR con MAC OS X
- 25. Cómo buscar ayuda usando la consola de Python
- 26. Dirección IP al nombre de host en Java?
- 27. ¿Cómo controlar el mouse en Mac usando Python?
- 28. Obtener el nombre de host de la dirección IP
- 29. Buscar y reemplazar valores en XML usando Python
- 30. Python buscar en un archivo remoto usando HTTP
Python tiene módulos específicos del sistema operativo, por lo que creo que su respuesta es engañosa. La manera pitónica de manejar esto sería un módulo para tener una interfaz independiente del sistema operativo que podría ser clasificada por complementos específicos del sistema operativo. – Walter