2016-12-10 4 views
1

Arduino/C++에서 프로그래밍하는 ESP8266 장치가 있습니다.네트워크에서 장치 검색

ESP8266과 같은 네트워크에있는 장치를 어떻게 든 검색 할 수 있다면 흥미가 있습니다. 랩톱에서 ARP 브로드 캐스트를 듣기 만하면 되겠지만 ESP8266 SDK (또는 다른 '해킹'방식)이 가능한지 모르겠습니다..

답변

1

로우 레벨 패킷에 관심이 있다면 실제로 네트워크 인터페이스의 입력 및 출력 기능을 연결할 수 있습니다. 그것은 당신이 당신의 장치 - 발견이 어떻게 행해지 길 원하는지에 달려 있습니다. 그것은이어야한다

  1. 활성 포트 스캔 (nmap -sS -p0-65000 192.168.0.0/24)
  2. 패시브 ARP는 모든
  3. 조합을 스캔 (nmap -sn 192.168.0.0/24)
  4. 활성 핑 스캔?

수동 ARP 검사 기술을 사용한다고 가정 해 보겠습니다. I 이미 ESP-오픈 RTOS SDK 프로젝트 내부에서 수행 것을

네트워크 인터페이스 (esp_interface.c, low_level_output()ethernetif_input())의 입력 및 출력 기능을 후크이다. 나는 또한 패킷 스니퍼를 썼다.이 스니퍼는 당신이이 함수들 안에서 얻은 데이터를 기반으로한다. (플래시에 .pcap 파일을 쓴다.) lwIP 스택 전체가 esp-open-rtos 내부의 오픈 소스이기 때문에 IP 스택 (특히 ARP 패킷 기능은 lwip/src/netif/etharp.c!을 참조하십시오)에 연결하는 것은 매우 쉽습니다. 빠른 결과를 얻으려면이 SDK를 사용하는 것이 좋습니다. .

적절한 Espressif SDK의 경우 ESP를 promiscious 모드로 설정하고 수신 된 모든 패킷에 콜백 기능 (wifi_promiscuous_rx_cb 기능)을 부여 할 수 있습니다. 그런 다음 원하는대로이 패킷을 분석 할 수 있습니다. 중요한 기능은 wifi_promiscuous_enable(bool enable)wifi_set_promiscuous_rx_cb(wifi_promiscuous_rx_cb)입니다. 이것들은 공인 된 ESP-RTOS 문서 https://espressif.com/sites/default/files/documentation/20b-esp8266_rtos_sdk_api_reference_v1.4.0_0.pdf (72 및 73 페이지)에 설명되어 있습니다. 그러나이 SDK를 사용하면 IP 스택에 연결할 수 없기 때문에 실제로 패킷 분석을해야합니다.

이 두 가지는 모두 해킹되지만 "ARP 방송을 듣고 싶다"는 특성을 감안할 때 다른 방법은 없습니다. 다른 방법으로는 능동 ping 검색이 가능합니다. esp-open-rtos에서는 lwIP를 사용하고, Espressif SDK에서는 espconn 기능을 사용해야합니다.

+0

나는 이미 "누가 신경 쓰는지, SDK에 연결해 볼까?"라고 생각했지만 어디에서 시작해야하는지, 또는 빌드하는 방법을 알지 못했습니다. 그래서 모든 패킷이 ethernetif_input을 통해 전송되는 동안 low_level_output을 통해 전송 될 것인가? 그렇다면 놀라움이 틀림 없다.) –

+1

@ original.roland 정말 그렇다. https://gist.github.com/에서 수정 한 'esp_interface'를 확인할 수있다. gamer-cndg/3bc9c339980b7d60acbe035ede2498bd. [IP-IN] From : 192.168.0.123 ~ 239.255.255.250 Proto 11', [IP-IN] From : 192.168.0.121 ~ 192.168.0.102 Proto 06', [TCP -IN] 포트 7637에서 8080''[ETH-IN] : bc : 5f : f4 : 5a : 4a : 0c에서 ff : ff : ff : ff : ff : ff 유형 ARP Len 60' 등 –