usi++ (UNIX Socket Interface) は、IP、IP6、ARP などのパケットを RAW または PACKET ソケットで直接送受信するための低レベルのネットワーク ライブラリです。また、ネットワークの監視や侵入テスト ツールの迅速な開発にも使用できます。 Layer2 DNET プロバイダーが必要な場合は、 libpcapとlibdnet必要です。
usi++ は GPL の下にあります。詳細については、「ファイルのコピー」を参照してください。
イーサネット MAC 用のデータ ファイルが含まれています。 arpwatchから取得しました。
USI++ は GPL であるため、絶対的な保証はありません。ご自身の責任で使用してください。
$ cd src
$ autoconf
$ ./configure
$ make
# make install
テスト用に複数のlibpcapインストールしている場合、生成されるMakefile単なる提案であることに注意してください。実際には、configure スクリプトは、どのインクルード パスまたは lib パスを選択するかを知ることができません。このような場合は、生成されたMakefile編集して正確に指すようにし、 config.hで必要な定義を設定/設定解除する必要があります。
pcap_set_immediate_mode()や mmapped パケット ソケットなどのさまざまな関数が最近登場したばかりなので、複数の libpcap をインストールすることは珍しいことではありません。
通常は次のようになります。
# c++ -std=c++11 foo.cc -lusi++ -lpcap -L/usr/local/lib -I/usr/local/include
dnetサポートを使用して usi++ をコンパイルした場合、(RAW ソケットだけでなく) データリンク層でもパケットを送信できるようになり、 -ldnetに対してリンクする必要もあります。新しいlibpcap にはすでにpcap_inject()含まれている可能性があるため、 libdnet を使用せずに usi++ をビルドすることもできます。この関数はデータリンク フレームを送信する移植可能な方法も提供するためです。
libusi++の HTML ドキュメント (doxygen 経由で生成) またはサンプルを参照してください。
Linux、BSD、OSX。
なし。
リンクレベルの処理が変更されました。現在、すべてのクラスは、データの送受信に使用される RX オブジェクトと TX オブジェクトを含む Layer2 {} から派生しています。クラス宣言は、対応する .h ファイル内にあります。これらのクラスは抽象クラスであるため、機能させるには独自のクラスを派生する必要があります。実装する必要がある関数の .h ファイルを確認してください。 USI++ には、パケットをキャプチャ/送信できるクラスPcap 、 TX_IP 、 TX_eth_dnetなどが付属しています。 USI++ 1.67 以下で動作するプログラムを通常どおり使用できるように、基本的な機能が提供されます。 RXとTX抽象化することで、 Layer2 sendpack()などのルーチンにアクセスできるようになります。さまざまなハードウェア (FDDI など) 用に独自の RX/TX ベースのクラスを自由に作成できます。実行時に RX/TX の動作を変更できるため、可能な限り柔軟です。たとえば、PPP を使用していることを検出してから、PPP トランスミッターをロードすることができます。楽しむ。