問題タブ [tcpdump]
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.
python - Python 2.6 の問題: tcpdump サブプロセスからの出力のキャプチャ
Python から tcpdump/grep パイプラインの出力を取得しようとしています。Mac OS 10.6.7 で Python 2.6 を使用しています。
dmesg /grep で試してみると、呼び出し元は予想どおりサブプロセスから出力を受け取ります。
tcpdump /grep で試してみると、select は何も返しません。
私は何を間違っていますか?
security - tcpdump を使用して WPA/WPA2-PSK を live-decrypt する方法は?
ここで私の問題:
ネットワークに接続している場合 (つまり、WPA/WPA2-PSK を知っている場合)、ネットワーク内の他のデバイスからキャプチャしたトラフィックを復号化できるようにしたいと考えています。(WEP が使用されている場合、tcpdump はこれを自動的に行います)。
私の知る限り、WPA は WiFi の各クライアントに対してセッション キーのようなものを使用しますが、これが可能であることは知っています。(これが tcpdump で可能でない場合、これを「手動で」行う方法は?)
助けてくれてありがとう!
security - Mac OS Xでどのプロセスパケットが発生したかを知るにはどうすればよいですか?
すべてのアプリケーションを閉じると、tcpdumpは、私のMacが散発的に少数のIPにパケットを送信していることを明らかにします。それらは、データペイロードがなく、異常なTCPシーケンス番号(秘密チャネルなど)を持つパケットのバーストです。コマンドラインまたはプログラムのいずれかからこれらのパケットを発信しているプロセスを特定する方法はありますか?
注:私はipfwを使用して宛先IPを出力フィルター処理したので、データの漏えいについて心配する必要はありません。
merge - Pcap キャプチャ マージの問題
2 つの pcap ファイルがあります
と
それらをマージしたいのですが、カプセル化が異なります。私が使用する場合
また
Wireshark は 2 つ前のファイルを認識せず、それぞれcap1_wlan0.pcap
のパケットまたはのパケットを表示cap1_stego0.pcap
しraw packet data
ます。また、「tcpslice」を使用してイーサネット層を削除するとcap1_wlan0.pcap
(カプセル化された両方のファイルを持つためrawip
)、認識されていないパケット データが表示されます。
どのようにできるのか?pcap を異なるカプセル化とマージする方法、または eth->rawip または rawip->eth に変換する方法はありますか? ありがとうございました。
php - tcpdump を使用するように、php で flv リンクをキャプチャすることは可能ですか?
私はオンラインビデオコンバーターを作っています。flv リンクを取得するための youtube プラグインを作成することはできましたが、dailymotion などの他のプラグインを作成するのは難しいため、tcpdump などを使用してストリーミング URL をキャプチャすることは可能です。彼らがビデオを提供する方法を変更した場合、プラグインはどうなりますか?
c - popenを使用する場合のtcpdumpからの出力のサイレンシング
tcpdumpによってキャプチャされたパケットを分析するプログラムをCで作成しています。私のプログラムではpopen
、以下に示すように、パケットをキャプチャして生データをstdoutにダンプするtcpdumpプロセスへのパイプを開くために使用します。
ただし、tcpdumpからの警告とエラーメッセージは、コンソールに表示されるstderrに直接送信されます。どういうわけかこれらを隠したいので、私のプログラムからの出力だけが表示されます。
私が試した1つの方法は、tcpdumpコマンドに追加2>&1
することでしたが、プログラムはtcpdumpの警告/エラーと生のパケットデータを区別する必要がありました。
tcpdumpからのstderr出力を無音にする簡単な方法はありますか?
tcpdump - tcpdump を使用して完全な snaplen キャプチャを表示するにはどうすればよいですか?
tcpdump を使用すると、キャプチャのすべてのデータを表示できないようです。具体的には、フレームの先頭から 6 バイトが欠落しているようですが、その理由を誰かが説明できるかどうか疑問に思っています。
説明のために、ホストのみのネットワーク構成で VMWare に Ubuntu インスタンスをセットアップします。トラフィックを生成するには、VMWare ゲートウェイに ping を実行します...私の場合:
次に、データをキャプチャして印刷します。
この時点で予想されるように、表示される合計バイト数は 64 ではありません。データリンク ヘッダーは隠され、IP バイトが最初に表示されます (つまり、「4500」)。データリンク ヘッダー バイトを表示するには、別の x を追加します。
より多くのバイトが表示されるようになりました。これらはイーサネット フレーム ヘッダーの 14 バイトだと思います (dest、source MAC + ethertype = 14 バイト)。これに対応して、IP ヘッダーは 14 バイト下から始まります。
しかし、なぜまだ 6 バイトが欠落しているのでしょうか? 58 バイトしか表示されていないことに注意してください。64 バイトが表示されると予想していました。
packet-capture - libpcap パケット受信関数で定期的にタイムアウトする方法
タイムアウト付きの Pcap を使用してリッスンしているstackoverflow.com でこの投稿を見つけました
私は同様の (しかし異なる) 問題に直面しています: libpcap パケット受信関数を使用してキャプチャされたパケットを受信するときに定期的にタイムアウトする GENERIC (プラットフォームに依存しない) メソッドは何ですか? 実際、pcap_dispatch(pcap_t...) / pcap_next_ex(pcap_t...) から定期的にタイムアウトできるかどうか疑問に思っています。それが可能であれば、従来の select(...timeout) 関数 ( http://linux.die.net/man/2/select ) を使用するのと同じように使用できます。
さらに、公式 Web ページ ( http://www.tcpdump.org/pcap3_man.html ) から、元のタイムアウト メカニズムにはバグがあり、プラットフォーム固有であると見なされていることがわかりました (私のプログラムは別の Linux で実行される可能性があり、これは悪いことです)。 Unix ボックス):
"... ... to_ms は、読み取りタイムアウトをミリ秒単位で指定します。読み取りタイムアウトは、パケットが検出されたときに読み取りが必ずしもすぐに返されるわけではなく、許可されるまである程度の時間待機するように調整するために使用されます。より多くのパケットが到着し、1 回の操作で OS カーネルから複数のパケットを読み取る必要があります.すべてのプラットフォームが読み取りタイムアウトをサポートしているわけではありません.サポートしていないプラットフォームでは、読み取りタイムアウトは無視されます... ...
注: ライブ キャプチャを読み取る場合、読み取りがタイムアウトしたときに pcap_dispatch() が返されるとは限りません。一部のプラットフォームでは読み取りタイムアウトがサポートされておらず、他のプラットフォームでは、少なくとも 1 つのパケットが到着するまでタイマーが開始されません。これは、たとえば対話型アプリケーションで、パケット キャプチャ ループがユーザー入力を定期的に「ポーリング」できるようにするために、読み取りタイムアウトを使用しないことを意味します。 ……」
したがって、以下のように GENERIC (プラットフォームに依存しない) タイムアウト メカニズムを自分で実装する必要があるのではないでしょうか?
- pcap_open_live() で pcap_t 構造体を作成します。
- pcap_setnonblock(pcap_t...) でノンブロッキング モードに設定します。
- 次のように、登録された OS タイマーを使用して、この非ブロッキング pcap_t をポーリングします。
OS timer_x を登録し、timer_x をリセットします。
ながら(1) {
if(timer_x time out) {定期的に実行する必要があることを実行します。timer_x をリセット;}
pcap_dispatch(pcap_t...)/pcap_next_ex(pcap_t...) を呼び出して pcap_t をポーリングし、いくつかのパケットを受信します。
これらのパケットで何かをします。
}//while(1) の終わり
よろしく、
DC
histogram - Wireshark またはその他のツールを使用して RTT ヒストグラムをプロットする
私は小規模なオフィス ネットワークを使用しており、インターネット リンクの遅延が非常に大きくなっています。単純なネットワーク トポロジがあります。ubuntu サーバー 10.10 を実行するルーターとして構成されたコンピューター、2 つのネットワーク カード (1 つはインターネット リンク、もう 1 つはオフィス ネットワーク)、および 20 台のコンピューターを接続するスイッチです。ルーターで収集された膨大な tcpdump ログがあり、すべてのTCP ストリームの RTT 時間のヒストグラムをプロットして、この遅延の問題に対する最適な解決策を見つけようとしています。それで、誰かがwiresharkまたは他のツールを使用してそれを行う方法を教えてもらえますか?
network-programming - 正しいパケット長を見つける方法は?
minを指定したSENDIPツールを使用して、LAN内の別のマシンで3種類のパケットを送信しています。長さ=8バイトおよび最大長=512バイト..
しかし....
udpパケット(最小長)を送信し、tcpdumpを使用してキャプチャすると、ポインタの長さ=70バイトが表示されます。
udpパケット(最小長)を送信すると、tcpdumpはポインターの長さ=574バイトを示します。
icmpパケット(最小長)を送信すると、tcpdumpは最初の2つのパケットの長さを80として表示し、残りのすべてのパケットの長さを66バイトとして表示します。
私がtcpdumpを介して取得しているポインターの長さは、パケットで指定されたヘッダー情報を使用することです。
sendipとtcpdumpの結果に不一致があるのはなぜですか?