なかなか無い

ネットワークから重複したIPアドレスを探し出す方法は無いかと探してみたのだけれど。


Linux/BSD/UNIXであれば、arpingの-D(Duplicate Address Detection)オプションが、使えるようだ。

OpenBSDだと、pkg_add arpingで一発インストール。とっても便利です。


で、本題。


Windows版(当然WinPCAPを使って)のARPingというのが見つからない。
※実際にはARPingはあるのだが、Cygwinが必須だったりする。libpcapに依存している部分が多くて、なかなかネイティブ環境では動かない・・・というか大部分作り直しになるのかも。


類似ツールも探してるのだけど、なかなか、無い。
ネットワーク監視ソフトのいくつかは実装しているようなのだけれど。。。


ま、重複を検出といっても、それほどたいしたことではなくて、ARPリクエストを投げてスニファでARPリプライをモニタしていれば、簡単に見つかるのだけど。(余談だが、WiresharkでモニタしてるとErrorで検出してくれる。便利)


結局、ARPを投げてしばらく(1秒程度)ネットワークをスニッフィングするだけのユーティリティを作る必要がありそうだ・・・と調べてみたけど、WindowsのAPI(Winsock2)ではARPは扱えない。だから、結局WinPcapは必須だったりする。

それ以前に、Windows環境(Visual Studio C++でトライしてみたけど)って、、、とっても作りにくいのですが。。。

うーん。Perl+WinPcap環境(Net::Pcap)とか、Java+WinPcap環境(jNetPcap)とかで考えたほうが簡単か?
地味にPerlも5.8以降ではスレッド(iThread)が使えるようになってるから、こうしたネットワークのアプリも作れたりするし・・・。(旧Threadのサポートは5.005以降だっけ?) でも、ActivePerlのPPMにはNet::PcapUtilsが無い(^^;
※Java+WinPcapって選択肢は無いものと思ってたけど、あるようだ。・・・いや、確かにJavaっぽくは無いけど(^^;


飛び道具を使うのはしばらく我慢して、、、C++で頑張ってみたほうが・・・良いのか?
あーあ。ちょっと面倒だなー。