2016-12-10 9 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. アクティブのpingスキャン?

私はあなたがパッシブARPスキャン技術で行きますと仮定します。

私がesp-open-rtos SDKプロジェクトの中ですでに行ってきたことは、ネットワークインターフェイス(esp_interface.clow_level_output()およびethernetif_input())の入出力機能をフックすることです。私はまた、これらの機能の中に入るデータに基づいてパケットスニッファを書きました(それは.pcapファイルをフラッシュに書き出します)。 lwIPスタック全体がesp-open-rtos内のオープンソースであるため、IPスタック(特にARPパケット機能についてはlwip/src/netif/etharp.c!を参照)にフックするのは非常に簡単です。結果を速くしたい場合は、このSDKを使用することをお勧めします。

適切なEspressif SDKの場合、ESPをプロミスキャスモードにして、受信したすべてのパケットに対してコールバック関数(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'をチェックすることができます。ゲーマー-cndg/3bc9c339980b7d60acbe035ede2498bd出力から '[IP-IN]のようになります。から239.255.255.250プロト11 '、' [IP-IN]に192.168.0.123: '、192.168.0.102プロト06'に192.168.0.121 [TCP -IN]ポート7637から8080へ '' [ETH-IN]:bc:5f:f4:5a:4a:0cからff:ff:ff:ff:ff:ffタイプARP Len 60'など –

関連する問題