es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo ver a qué fabricante pertenece un rango/prefijo de direcciones MAC

Estoy buscando una manera de obtener de forma programática el nombre del proveedor propietario de una dirección MAC dentro de un bloque/rango que hayan adquirido. Preferiblemente mediante la consulta de una API o base de datos, sin importar el lenguaje. O si hay alguna otra forma en la que las aplicaciones lo hagan de la que no tengo conocimiento.

Por ejemplo, al ejecutar nmap -sn 192.168.1.0/24 con privilegios de root, se obtiene lo siguiente:

...
Informe de escaneo de Nmap para 192.168.1.111
Host está activo (latencia de 0.35s).
Dirección MAC: B8:27:EB:96:E0:0E (Raspberry Pi Foundation)
...

…y eso me indica que la Raspberry Pi Foundation “posee” esa dirección MAC, dentro del rango de prefijos que ellos poseen: B8:27:EB. Sin embargo, no estoy seguro de cómo nmap lo sabe, ni cómo podría averiguarlo por mi cuenta. Analizar la salida de nmap no es una solución ideal para mí. Esto es lo que encontré investigando en línea:

  • Esta pregunta de stackoverflow hace referencia a un sitio web que aparentemente hace esto, pero parece no haber sido actualizado desde 2013 y no expone ninguna API. Lo más importante es que no tiene el nuevo bloque de direcciones MAC que la Raspberry Pi Foundation reservó para sus nuevos modelos (bajo el nombre de Raspberry Pi Team o algo similar).
  • Descubrí que el IEEE maneja estos registros a través de su sitio web, pero parece ser solo para sus clientes y no pude encontrar un punto de acceso para su función de búsqueda.
  • En la misma página del IEEE mencionada anteriormente, parece que puedo obtener un archivo CSV de toda su base de datos. Sin embargo, esto parece ser demasiado grande y tendría que mantenerse actualizado constantemente. ¿Viene nmap con una base de datos actualizada generada localmente a partir de esos archivos?

Si no existe una API pública como la que estoy imaginando, haré una por diversión. Me gustaría saber primero si estoy pensando de manera incorrecta al respecto y si hay una manera oficial y “canónica” que no he encontrado. Cualquier ayuda sería apreciada, gracias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una posible solución para obtener programáticamente el nombre del proveedor que es dueño de una dirección MAC dentro de un bloque/rango que han adquirido es utilizar una base de datos o API que contenga esta información. Una de estas bases de datos es mantenida por IEEE. Sin embargo, la base de datos de IEEE está destinada a sus clientes y no proporciona un punto de acceso expuesto para su función de búsqueda.

    Otra opción es analizar la salida de una herramienta de escaneo como nmap. Aunque analizar la salida de nmap no es lo ideal, proporciona información sobre el proveedor que es dueño de una dirección MAC dentro de un rango de prefijo. Además, nmap puede tener una base de datos actualizada generada localmente a partir de los archivos CSV de IEEE.

    Si no existe una API pública, es posible crear una para uso personal. Sin embargo, requeriría un mantenimiento activo para asegurar que la base de datos sea precisa y esté actualizada.

Comments are closed.