¿Obtener la dirección MAC de un dispositivo Ethernet conectado, sin etiquetar, no configurado ni configurable?

¿Obtener la dirección MAC de un dispositivo Ethernet conectado, sin etiquetar, no configurado ni configurable?

Suponga que tiene una placa integrada con Ethernet conectada al puerto Ethernet de su computadora portátil. No sabes nada sobre su configuración de red (todavía). Sabes que arranca, pero no tiene cabeza y solo tiene un puerto Ethernet. NO tiene una dirección IP (todavía).

¿Cómo se descubre la dirección MAC del dispositivo?

He mirado arp, arping, arp-scan, arpwatch. Lo único que encontré fue usar tshark y revisar el vómito manualmente.

Respuesta1

La ejecución simple tsharko tcpdumpproduce resultados desordenados, porque todo el tráfico que se origina en su máquina también se registra.

Intentar

tcpdump -i eth0 -lenq 'ether src not <your_mac>'
  • -eTambién captura la trama de Ethernet.
  • -lvacía el búfer de salida estándar inmediatamente.
  • -nno resuelva los nombres de host
  • -qestar más tranquilo.
  • reemplácela <your_mac>por la dirección MAC de su interfaz local como se encuentra, por ejemplo , en ip addr show.
  • obviamente reemplácelo eth0con la interfaz correcta. Si está en Windows, utilice tshark -Dpara enumerar todas las interfaces.
  • (Editar)En Linux, puede utilizar tcpdumpen lugar de instalar tshark, que necesita la instalación de todo el wiresharkpaquete. tcpdumpdebe estar preinstalado en Ubuntu (está en el metapaquete ubuntu-standard).

Alternativa:Si desea direcciones MAC de origen solo como salida, hágalo (inspirado y adaptado descaradamente por el comentario de los OP a continuación)

ETH=eth0;MAC=$(cat /sys/class/net/$ETH/address); tcpdump -lenq -i $ETH "ether src not $MAC" | awk '{print $2}'

Lo mejor es iniciar la captura sin un enlace y luego enchufar el cable.

No creo que haya forma de evitar el rastreo del tráfico. La razón por la que ARP falla es que el dispositivo no tiene dirección IP y no responde a las solicitudes de ARP.

Otra posible solución sería conectar el dispositivo a un conmutador administrado y leer la tabla de direcciones MAC, pero creo que esa no es una opción para usted.

En cualquier caso, para ser detectable, el dispositivo necesita enviaralgunotipo de tráfico Ethernet. Si tienes suerte, envía un descubrimiento DHCP/Bootp que puedes detectar.

(Editar)¿Por qué el host no tiene una tabla MAC como lo hace un conmutador? Bueno, no es necesario porque no es un interruptor. A diferencia de un switch, la decisión sobre qué interfaz emite una trama Ethernet se toma de antemano según la tabla de enrutamiento. El paquete IP se envuelve en una trama adecuada después de la búsqueda ARP.

Claro, puedes convertir tu máquina en un interruptor L2 adecuado. Puede crear un puente entre múltiples interfaces físicas. Jugué un poco con esto y resulta que puedes obtener una buena tabla MAC de esa manera.

  1. Instalar bridge-utilsdesde el repositorio.

  2. Cree un nuevo puente Ethernet en/etc/network/interfaces

     auto br0
     iface br0 inet static # dhcp goes as well
      address ...
      network ...
      bridge_ports eth0
      up /sbin/brctl setageing br0 300
      up /sbin/brctl stp br0 0
    

Esto define un "puente" (realmente no hay ningún puente, solo una interfaz) sin árbol de expansión stp br0 off. Las direcciones caducarán después de 300 años. Configúrelo a su gusto pero no demasiado bajo.

  1. Levanta el puente:ifup br0

  2. Verifique si está bien brctl showy vea la tabla MAC:

     brctl showmacs br0
    
  3. Ganancia (?)

Respuesta2

Puede usar Wireshark para capturar todo el tráfico y filtrarlo por bootp, o usar -ela opción para imprimir información de la capa de enlace y filtrar bootp con tcpdump:

http://www.tcpdump.org/tcpdump_man.html

sudo tcpdump -i any port bootps -e

información relacionada