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 tshark
o tcpdump
produce 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>'
-e
También captura la trama de Ethernet.-l
vacía el búfer de salida estándar inmediatamente.-n
no resuelva los nombres de host-q
estar más tranquilo.- reemplácela
<your_mac>
por la dirección MAC de su interfaz local como se encuentra, por ejemplo , enip addr show
. - obviamente reemplácelo
eth0
con la interfaz correcta. Si está en Windows, utilicetshark -D
para enumerar todas las interfaces. - (Editar)En Linux, puede utilizar
tcpdump
en lugar de instalartshark
, que necesita la instalación de todo elwireshark
paquete.tcpdump
debe estar preinstalado en Ubuntu (está en el metapaqueteubuntu-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.
Instalar
bridge-utils
desde el repositorio.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.
Levanta el puente:
ifup br0
Verifique si está bien
brctl show
y vea la tabla MAC:brctl showmacs br0
Ganancia (?)
Respuesta2
Puede usar Wireshark para capturar todo el tráfico y filtrarlo por bootp, o usar -e
la 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