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 トランスミッターをロードすることができます。楽しむ。