問題タブ [libpcap]
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.
libpcap - libpcap を使用して複数のデバイスでスニッフィングする方法は?
複数のデバイスでスニッフィングできるスニファを作成しようとしています。私のコードでは、プログラムはユーザーがスニッフィングしたいデバイスのリストを受け取ります。デバイスのリストを取得し、それを配列に格納してループスルーし、以下の関数のように pcap_t ハンドルを作成する関数に渡します。
ただし、for ループ内でこの関数を呼び出すと、pcap_loop コールバック関数でスタックしているように見えるため、1 つのデバイスでしかキャプチャできません。この結果、マルチスレッドを実行しようとしましたが、すべてのデバイスを開いてキャプチャするために使用する for ループがループを通過しましたが、pcap_loop コールバック関数は実行されていないようです。次のコードは、マルチスレッドの使用方法を示しています。
誰かが私が間違っていることを知っていますか?この問題を解決する方法について提案してもらえますか?
ありがとう、リン
libpcap - pcap_next_ex または pcap_next を使用する正しい方法 (libpcap)
プロジェクトでこの種のコードが使用されているのを見ました:
pcap_next_ex が返された後、パケット ステータスは TP_STATUS_KERNEL に設定されます。これは、buf がカーネルに返されたことを意味します。コード:
一部の高速環境では、メモリの問題が発生しますか?
pcap_next / pcap_next_ex を使用する正しい方法は何ですか?
ruby - C 構造体を FFI::Struct に変換する
FFI で pcap ライブラリから構造体をセットアップするのに苦労しています。
構造:
関連する Ruby コード
上記添付関数定義
テストコード (root として実行)
出力は
オフセットは私には正しいように見えますが、私の C は非常に錆びています。名前として lo と eth0 の 2 つのデバイスを期待していました。
linux - 宛先 MAC アドレスの判別方法
私のアプリケーションは CentOS 5.5 で実行されています。libpcap API を使用して raw パケットを送信する必要があります。
特定の IP アドレスへ MAC アドレスが特定のターゲットに属していることを確認するにはどうすればよいですか?
linux - libpcapを使用してマルチキャストグループに参加/脱退
マルチキャストストリームを受信する必要がありますが、CentOS5.5の送信元MACアドレスで着信パケットをフィルタリングします。libpcap
図書館を利用する予定です。を使用してマルチキャストグループに参加/脱退することは可能libpcap
ですか?はいの場合、それを行う方法は?
ありがとう
tcp - * char eth / ip / tcpパッカー表現からTCPオプション(tcphdr-> doffを超える)を取得する
http://www.tcpdump.org/sniffex.cをいじって、パケットオプションを取得します。
- data + struct ipは、(ポインタ)(unsigned char)メモリ内のTCPヘッダーを指します
- data + struct ip + thdr-> doff*4はTCPオプションの終わりを指します=データの始まり
次の構造を考えると、
また、TCPDumpコードには次のリファレンスがあります。
したがって、オプションが存在するパケットの一部を読み取るには、次のことを行う必要があります。
- パケットで指定された長さが構造体の長さよりも大きいと想定します
- (ethernet + ip + tcphdr)構造体の長さの後にNバイトを読み取りますか?
- それらのバイトを削除し、ペイロードを読み取ります。
正しい?実際のデータの代わりにランダムなペイロードのバイトシーケンスを読み取ることは、単に私を沸騰させます。
python - パケット作成//操作のための Python ライブラリ
私は現在、libpcap-python に取り組んでいますが、パケット データの変更に役立たない (方法がわからない) ことがわかりました。ネットワーク パケットを作成するために使用できるライブラリはありますか?
c - PPP インターフェイスからのキャプチャ パケットに関する質問
libpcap を使用して PPP インターフェイスからデータをキャプチャし、次のようにフィルターを追加しています。
しかし、コールバック関数でパケットを盗聴すると、ip パケットの形式が
不正解です。ヘッダー サイズが 20 バイトではありません。
そして、eth0 からパケットをキャプチャすると、すべて正常です。
では、libpcap を使用して PPP インターフェースから正しい IP パケットを取得する方法を誰が教えてくれますか?
c - libpcap でデバイスアドレスを見つける
コンピューターでデバイスのアドレスを見つけようとしています。これまでのところ、デバイスのリストを(pcap_findalldevsで)取得できましたが、それらのアドレスにアクセスする方法がわかりません。私はこのマンページを見ました - http://www.tcpdump.org/pcap3_man.html このようなものが書かれています
インターフェイスのアドレスのリストの最初の要素へのポインタをアドレス指定します
そして、これ
アドレスのリストの各要素は pcap_addr_t 型で、次のメンバーがあります。
だから私はこのコードを持っています
コンパイルは問題ありませんが、実行しようとすると次のようになります。
デバイス: 1. eth0 - (null) アドレス: 144.208.30.8 2. wlan0 - (null) アドレス: 128.213.30.8 セグメンテーション違反
3 番目のデバイスが USB でアドレスがないため、segfault は理解できますが、eth0 と wlan0 の IP が間違っており、一致しません。
私は何を間違っていますか?
c - libpcap を使用して 2 つのデバイスで同時にリッスンする
libpcap を使用して 2 つのデバイスでリッスンしようとしていますが、その方法がわかりません。デバイスを「任意」に設定しようとしましたが、機能しません。dhcp リレー エージェントを作成しようとしているので、eth0 と eth1 でリッスンする必要があります。
それぞれ異なるデバイスとハンドラーを持つ 2 つの pcap_loops を作成しようとしましたが、最初の pcap_loop のみが機能し、2 つ目は無視されます。
これを行う方法はありますか、それとも libpcap を離れて raw ソケットで実行する必要がありますか?