問題タブ [pcap]
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.
tcp - libnid を使用した TCP ストリームのキャプチャとアセンブル
私は単純なスニファーツールを書いています。私は libpcap から始めましたが、TCP ストリーム情報を追跡することが有用であることに気づき、libnid について読み、実験するようになりました。
これは優れたツールですが、特定のストリームの TCP ハンドシェイク (SYN、SYN/ACK、ACK) を目撃しない場合、ストリームの内部ハッシュ テーブルに新しいレコードを作成しません。その結果、ハンドシェイクが発生する前にスニファを開始しない限り、多くのデータを表示できません。ドキュメントが少し不足しています。この制限を回避できるかどうかは誰にもわかりませんか?
c - インバウンドデータグラムを検出する C pcap
CI では、データグラム ソケット (AF_INET、SOCK_DGRAM) を INADDR_ANY にバインドします。次に、このソケットを定期的に使用してデータグラムを送受信し、pcap でパケットの流れを監視します。問題は、pcap を使用してパケットが着信か発信かを判断できないことです。
送受信と pcap 監視は別々のスレッドで実行されており、同期のため通信できません。送信されたパケットではなく、着信パケットのみを追跡したいのですが、どうすればそれができるかについて誰か考えがありますか?
宛先 IP アドレスをテストすることは既に考えていましたが、ローカル IP を取得する方法がわかりません。これが実行されているマシンには静的IPがなく、割り当てられたドメイン名ははるかに少なく、INADDR_ANYにバインドされたソケットではgetsocknameが機能しないようです。また、ioctl(sockfd, SIOCGIFCONF, &buffer) を使用してみましたが、どちらも機能しませんでした - buffer.ifc_len=0 を設定します。
filter - WinPcap で自分のパケットを無視するには?
WinPcap 経由でパケットを挿入すると、その瞬間にキャプチャされます。パケットをキャプチャしたくありません。魔女は自分で注射されました。最も簡単な方法は何ですか?
c# - C# の Pcap を使用したパケット ロギング
現在、C# 用の pcap ライブラリを使用していますが、IP ヘッダーと TCP/UDP/ECT ヘッダーを削除する組み込み関数があるかどうか疑問に思っていました。そうでない場合、そのようなヘッダーの削除をどのように達成したかを投稿できますか?
c - pcap のゼロ読み取りタイムアウト
-1 は pcap の有効な読み取りタイムアウトですか?
to_ms を -1 に設定するとpcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *errbuf);
、パケットが検出されるとすぐに返される - 事実上ゼロのタイムアウトになると誰かから言われました。ゼロのタイムアウトを設定する方法があることは非常に理にかなっていますが、-1 を無限にし、0 を 0 にしないのはなぜでしょうか? その方が論理的でしょう。さらに、-1 の to_ms 値が pcap に与える影響を確認できませんでした。
では、-1 は有効なタイムアウト値ですか? もしそうなら、それはどのような効果がありますか?そうでない場合、検出タイムアウトをゼロに設定する方法はありますか?
c# - C# 奇妙な問題のための Pcap ライブラリ
現在、PCAP C# ライブラリを使用しており、受信したパケットを変更していません。問題を次の図に示します。
http://img269.imageshack.us/img269/6549/wtfisthisshitx.jpg
左側は Wireshark (キャプチャされたパケットの正しいバージョン) で、右側は Pcapсфз ライブラリを使用した私のキャプチャです。c2s は属していません。他の誰かがこれを見たことがありますか?
パケットを受信するために使用しているコードは、Web サイトに掲載されている例とほぼ 100% 似ています。
c - libpcap を使用して 2 つのデバイスで同時にリッスンする
libpcap を使用して 2 つのデバイスでリッスンしようとしていますが、その方法がわかりません。デバイスを「任意」に設定しようとしましたが、機能しません。dhcp リレー エージェントを作成しようとしているので、eth0 と eth1 でリッスンする必要があります。
それぞれ異なるデバイスとハンドラーを持つ 2 つの pcap_loops を作成しようとしましたが、最初の pcap_loop のみが機能し、2 つ目は無視されます。
これを行う方法はありますか、それとも libpcap を離れて raw ソケットで実行する必要がありますか?
c++ - TCP パケットのペイロードを解析する方法
ペイロードを解析したい TCP パケットをキャプチャするために pcap を使用しています。私の戦略は次のとおりです。
- イーサネット ヘッダーを取得し、タイプ
ETHERTYPE_IP
(IP パケット)があるかどうかを確認します - IP パケットにプロトコル
IPPROTO_TCP
(TCP パケット)があるかどうかを確認する ペイロード サイズ > 0 を確認します
(size = ntohs(ip_header->total_length - ip->header_length*4 - sizeof(struct tcp_header))
。ペイロードを解析する (ホスト URL を取得する)
不一致が発生しているため、ペイロードの解析をまだ開始していません。以下は、 filter を使用してキャプチャされた 10 個の TCP パケットのペイロードの出力"host = www.google.com"
です。
パケット番号: 3 : TCP パケット: ソース ポート: 80 宛先ポート: 58723 パケットにデータがありません
パケット番号: 4 : TCP パケット: 送信元ポート: 58723 送信先ポート: 80 パケットにデータがありません
パケット番号: 5 : TCP パケット: Source Port: 58723 Dest Port: 80 Payload: GET / HTTP/1.1 Host: www.google.com User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-米国) AppleWebKit/533.19.4 (Gecko のような KHTML) バージョン/5.0.3 Safari/533.19.4 Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8 ,image/png, / ;q=0.5 Accept-Language: en-us Accept-Encoding: gzip, deflate Cookie: THICNT=25; SID=DQAAAKIAAAB2ktMrEftADifGm05WkZmlHQsiy1Z2v- 接続: キープアライブ
パケット番号: 6 : TCP パケット: ソース ポート: 80 宛先ポート: 58723 パケットにデータがありません
パケット番号: 7 : TCP パケット: ソース ポート: 80 宛先ポート: 58723ペイロード: \272نu\243\255\375\375}\336H\221\227\206\312~\322\317N\236\255A\343 #\226\370˙\245[\327`\306\nE\263\204\313\356\3268 )p\344\301_Y\255\267\240\222x\364
パケット番号: 8 : TCP パケット: ソース ポート: 58723 宛先ポート: 80 パケットにデータがありません
パケット番号: 9 : TCP パケット: ソース ポート: 80 送信先ポート: 58723ペイロード: HTTP/1.1 200 OK 日付: 2010 年 11 月 29 日月曜日 10:11:36 GMT 有効期限: -1 キャッシュ制御: プライベート、最大年齢 = 0 コンテントタイプ: text/html; charset=UTF-8 Content-Encoding: gzip サーバー: gws Content-Length: 8806 X-XSS-Protection: 1; モード=ブロック \213
ペイロードとポートに不一致があるのはなぜですか? 理想的には、パケット 5 のようなパケットのみを解析したいと考えています。7 や 9 のようなパケットを無視するにはどうすればよいですか?
c - Ruby/C/Makefile、-lpcap/#include で使用されるデフォルトの pcap.h ファイルは何ですか
Makefile を介してコンパイル/インストールされている C ソースに含まれている pcap.h ファイルを特定するにはどうすればよいですか?
具体的には、次の方法でインストールされる Ruby ライブラリ (pcaprub) です。
extconf.rb は次のとおりです。
c - pcapは新しい接続のみを取得します
pcapを使用してパケットキャプチャを実行する非常に単純なCプログラムを作成しました。つまり、それは私のネットワークアクティビティのごく一部を拾うだけです。(パターンは、新しいTCP接続でのみ取得するというものだと思います。)
たとえば、ブラウザまたはwgetを使用してGETリクエストを実行したとき、またはX-Chat IRCクライアントを起動して接続したときに、大量のパケットを取得します。
ただし、IRCクライアントを実行したままにすると、テキストメッセージに対応するパケットを取得しません。同様に、ホームネットワーク上のARPブロードキャスト、またはWebサイトにpingを実行するときにパケットにpingを実行しません。
なぜそれが私が送受信しているパケットのこの小さなサブセットだけを拾っているのか疑問に思います。これが私のコードです。フィードバックをいただければ幸いです。
コード: http: //pastebin.com/QDHRy6jM