Cómo obtener la dirección IP de la dirección MAC utilizando el módulo wifi ESP8266

4

Estoy intentando usar mi esp8266 para descubrir varios dispositivos WiFi (sensores) en mi casa. Solo conozco la dirección MAC de estos dispositivos y necesito enviar paquetes TCP a su dirección IP. Usando RPi, puedo hacerlo usando el protocolo ethernet y ARP. Pero no puedo encontrar un comando similar en ESP8266. ¿Pueden ustedes informarme, ideas sobre cómo obtener una lista de direcciones IP de dispositivos desde el enrutador (similar a como ingresar 'arp -a' en Windows)? ¿O puedo encontrar directamente la dirección IP de un dispositivo desde su dirección MAC?

    
pregunta bonchenko

3 respuestas

3

Usa el protocolo ARP inverso. Consulte enlace . No sé si el módulo que está utilizando puede hacer esto o si tendrá que hacerlo usted mismo. La idea básica es enviar un paquete Ethernet a la dirección MAC en cuestión con el 8 en el campo OPER. El dispositivo en el otro extremo debe responder con la dirección IP completada correctamente y 9 en el campo OPER. También vea enlace . Esto depende del dispositivo en el otro extremo que admite InARP. Si no es así, no estoy seguro de si hay mucho de lo que puedas hacer al respecto. Otra cosa que podría intentar es emitir solicitudes ARP para cada IP en la subred y esperar que obtenga la respuesta que desea.

    
respondido por el alex.forencich
2

Esta es una pregunta de red general, no limitada a ningún microcontrolador.

La razón por la que puede ver la caché arp (la asignación entre direcciones IP y MAC) en su RPi o en cualquier otra computadora es que presumiblemente han estado encendidos durante un tiempo, han escuchado respuestas ARP de otras máquinas en la red, y los he guardado en caché.

Permítame reformular su pregunta: sin ningún otro IP en la red, y sabiendo la dirección MAC de otro dispositivo, ¿cómo puede encontrar su dirección IP?

La respuesta fácil es "escuchar de manera promiscua el tráfico y ver cuál es la dirección IP de origen en los paquetes que coinciden con la dirección MAC que te interesa (importante consejo de seguridad: en 802. * frames, destination La dirección MAC se envía primero, por razones que van más allá del alcance de esta publicación).

De lo contrario, cree manualmente un paquete ECHO ICMP para todos los servidores-esta-subred (255.255.255.255) y envíelo a la dirección MAC unicast de la máquina que le interesa. La respuesta vendrá de la dirección IP de unidifusión, y ahora lo sabrá.

Por supuesto, si la otra máquina está ejecutando IPv6, puede derivar la dirección IP local del enlace de la dirección mac, pero ya lo sabía :)

    
respondido por el user301372
0

No sé si esto es lo que estás buscando, ¿pero has intentado buscar los comandos AT para el ESP8266? He encontrado una lista de ellos aquí .

Usé uno de estos módulos con una placa de desarrollo Freescale K64F y me comuniqué con él a través de UART enviando esos comandos AT para configurarlo como un servidor y serví una página web. Si sigue esta ruta y los dispositivos se conectan a ella mientras está en modo servidor, creo que puede usar AT + CWLIF y obtener la información de los dispositivos conectados.

Pero no suena como si lo estuvieras usando de esta manera.

Otra cosa que puedo advertir es que si monitoreas la línea UART, si ves que aparece el "proveedor", es probable que el chip se reinicie. Dibuja un poco de corriente al transmitir.

    
respondido por el Jesse

Lea otras preguntas en las etiquetas