問題タブ [libnet]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - パケット注入のための Libnet と Raw ソケット
GNU/Linux システムでのパケット インジェクションに関するいくつかの事柄について、経験豊富なネットワーク プログラマーの意見/アドバイスが必要です。私は、パケット インジェクションとスニッフィング用のオープン ソース C++ ライブラリに取り組んでいます。ライブラリはlibcrafterです。このページには、ライブラリがどのように機能するかを確認するためのいくつかの例があります。
私にはジレンマがあり、あなたの考えに感謝します。現在、ライブラリはネットワーク上でパケットを書き込む 2 つの方法を「提供」しています。まず、パケットが構築されます。
1) そして、Send() 関数で送信されます。
2) または RawSocketSend() 関数を使用する (これは、ベンチマークに使用している「実験的」関数ですが、ユーザーが利用できます):
ここで、sd はソケット記述子です。パケットにリンク層プロトコル (イーサネットなど) がある場合、sd は PACKET ソケット記述子である必要があります。そうでない場合は、RAW ソケット記述子にする必要があります。
パケットを送信する標準的で文書化された方法は、Send() メソッドを使用することです。現在、Send() メソッドはlibnetを使用してネットワーク上にパケットを書き込みます。
問題は、Send() 関数が RawSocketSend() よりもはるかに遅いことです... libcrafter がプロトコル フィールドを処理して libnet_build* を適切に使用する方法を適応させるために、私は常に多くのトリッキーで面倒なことをしなければなりません*関数 (パフォーマンスが低下します)。また、プロトコルを実装するたびに、libnet のドキュメントを確認する必要があり、開発プロセスが非常に退屈で遅くなります。そのため、パケット インジェクションに libnet を使用するのをやめ、Send() 関数内で RAW/PACKET ソケットを直接使用することを考えていました。
Libcrafter は、パケット クラフティング (チェックサム計算、バイト順、ヘッダー長など) のすべての面倒な作業を、ユーザーに対して透過的な方法で処理するように設計されています。また、RAW/PACKET ソケット (RawSocketSend 関数) を使用する最も一般的な GNU/Linux システム (Ubuntu、Fedora、Debian) では、すべて正常に動作します。
私が libnet を使用する唯一の理由は、移植性の問題です。しかし、libcrafter を GNU/Linux システム以外のシステムに移植する知識や意図はありません。
私の質問は次のとおりです。
- GNU/Linux のパケット注入ライブラリで RAW/PACKET ソケットを使用するのは賢明で安全ですか?
- libnet の使用をやめる場合、GNU/Linux ディストリビューション間の RAW/PACKET ソケットの移植性に関して考慮すべきいくつかの問題を知っていますか?
- RAW/PACKET ソケット インターフェイスは、カーネルの将来のバージョンで変更される可能性がありますか?
どうもありがとうございました :-)
ruby - libnet4r または類似の gem を使用した Ruby ネットワーク プログラミング
パケットを制御し、tcp パケットを作成できるようにするには、特定の gem が必要です (tcp パケットのビルドとインジェクション)。
実際、libnet4rはまさに私が必要とすることを行っていますが、Ruby 1.9.x では動作しなくなったようです。新しい名前の更新、またはこの lib の同じグレートジョブを行う同様の宝石はありますか?
c - Libnetの基本的な使用
libnetで提供されているサンプルソースを調べてきましたが、次の処理方法がわかりません。
これはtcpヘッダー構造のようですが、dstポートを変更したい場合は、#179で変更しますか、それとももっと良い方法がありますか?
また、これはコンパイルする正しい方法ですか?
gcc -Wall libnet-config --defines
arp-new-new.c libnet-config --libs
-lpcap -lnet
pcap - libnidsの維持された代替手段はありますか?
libnidsは2年前のようであり、現在の更新はありません。1G/秒を超える高速でパケットをドロップするように見えるため、libnidsまたはそれよりも優れたライブラリの代替ソリューションを知っている人がいますか?
さらに、64ビットのIPアドレスはサポートされていません。
clang - Libnet11 は手動で IPv6 パケットを構築します
Libnet11関数を使用しようとしています:
ネットワーク層にIPv6パケットを注入します。IPv6 パケットを作成し、Wireshark でキャプチャしました。Wireshark が報告: 不正な形式のパケット(Wireshark は、IPv6 の次のヘッダー値が正しくなく、私の意見ではペイロード サイズが大きすぎると言っています)
libnet11 (libnet_write_raw_ipv6()) を使用してIPv6 パケット (ICMPv6 拡張ヘッダーを使用) を手動で構築する方法を示す、最小限のコード例で誰かが私を助けてくれることを願っています。
最小限のコードは次のようになると思います。
コード例を見つけようとしましたが、成功しませんでした。前もって感謝します。
マーティン
send - libnet を使用して C で arp パケットを作成する
作成したフレームを送信する方法を知りたいです。
私は次のものを持っています:
int arp_send(libnet_t *l, int op, u_char *sha, in_addr_t spa, u_char *tha, in_addr_t tpa) {
libnet_ptag_t t;
}
ネット上で、何もないところから arp パケットを作成するコードを見つけました。「送信」コマンドが見つからないため、リターン以外はすべて理解しています。
ありがとうございました。
c - cmake(およびkdevelop)でlibnetを使用する方法は?
私が持っている質問はばかげているかもしれませんが、私はkdevelopとcmakeに慣れていないので、それらがどのように機能するかを理解するのは非常に困難です。私がセットアップしようとしたプロジェクトは、libnet1.1ライブラリを使用しています。私の質問は、cmakeにこのライブラリをコンパイルしてリンクさせ、正しく使用できるようにするにはどうすればよいですか?
これが私がすでに試したことです:
ご協力ありがとうございました!
windows - Windows で Python 2.7 用に libnet をコンパイルする方法
Windows XP で python 2.7 を使用しています。libnet が必要ですが、 python 2.7 ではサポートされていません。cygwin gnuでpythonを使用せず、mingw32を使用してコンパイルできなかったため、cygwinを使用してコンパイルしようとしました.cygwinのgnuにmingw32をインストールする方法はありますか. VC コンパイルについて読んだことがありますが、まったく理解できませんでした。w3afフレームワーク[scapyが必要[libnet-およびpython 2.7が必要]]に必要ですw3afフレームワークをWindowsで実行しようとしています[winではサポートされていないため]