問題タブ [pcapy]
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 - pcapy/imppacket の IPv6 デコーダー
pcapy / impacketライブラリを使用して、Python でネットワーク パケットをデコードします。IPv4 パケットの構文を認識している IP デコーダーがありますが、明らかに IPv6 デコーダーはありません。
誰かがそれを手に入れますか?
非公開の通信で、Impacket のメンテナーは、 Scapyから始める方が良いかもしれないと言います
python - pcapy/imppacket でパケットデータを変更する
ホストAからホストBへの特定のポートでネットワーク上を飛んでいるパケットを傍受するLinux上のPythonで小さなプログラムを書いています。ホストCは中間者として機能するため、すべてのトラフィックはホストCを通過します(arp中毒方法)。画面上のすべてのデータを見ることができるように、インターセプトで部分を正常に書きましたが、ヘッダーデータを変更せずにパケットデータを変更したい (もちろん、チェックサムは変更されます)。pcapy/imppacket で傍受されたパケットを使用してこれを達成するにはどうすればよいですか?
少し曖昧かもしれませんが、主なアイデアを以下に示します。
1. ホスト A がホスト B に「Hello」を送信します (ホスト A と B は、トラフィックがホスト C を通過するように arp スプーフィングされます)。
2. ホスト C はホスト A から「Hello」を取得します (デフォルトでは、ホスト C は「Hello」をホスト B にリダイレクトしますが、別のものが必要です - ポイント 3 を参照)
3. ホスト C は「Hello」を「Bye」に変更し、リダイレクトします(カーネルの ip_forward?) をホスト B に送信します。
4. ホスト B は「さようなら」を受け取ります。
おそらく、これを達成するためにいくつかのLinuxメカニズムを使用する方法がありますか? 今、私は立ち往生しており、アイデアをいただければ幸いです。
python - パケットの 16 進ダンプからプレーン テキストを抽出するにはどうすればよいですか?
pycapy と Impacket を使用して、ネットワーク トラフィックを記録および分析するスクリプトを作成しています。出力は次のようになります。
私がやりたいことは、これからデータ、具体的には TCP WindowFull と ZeroWindow を抽出することです。これらの 16 進ダンプをプレーン テキストに変換して、分析のために Python にフィードバックできるようにするにはどうすればよいでしょうか? スタンドアロン アプリケーションを作成しようとしているため、WireShark を使用したくありません。
python - pcapy impacket を使用した Python のパケット スニファー
pcapy と impacket を使用してパケット スニファーを作成しようとしています。私はデータ抽出段階で立ち往生しています。残念ながら、imppacket は適切に文書化されていません。少なくとも私は見つけることができませんでした。ドキュメントの場所や、キャプチャしたパケットからデータを抽出するために使用できる関数を誰か教えてもらえますか?
編集
私の現在のコード
サンプル出力
私がやりたいことは、より多くのデータを抽出することです。たとえば、URL を抽出します (パケットに URL がある場合)
python - Impacket の使用中に VLAN で ICMPv6 パケットを送信する
やあみんな私はかなり拘束されています私はこの機能を持っています
この機能の概要を簡単に説明すると、RA パケットを作成してネットワークで送信していることがわかります。ここでの問題は、VLAN を使用して RA パケットを送信できないように見えることです。
から始まる追加のコードeth = ImpacketPacket.Ethernet()
は、VLAN を持つヘッダーを作成し、それをインスタンス IPV6 を持つ ip の親として作成したことを示します。
私の問題は、コードを実行するたびに、送信される結果のパケットが不明 (0) になることです。これは、パケットが破損しているか、理解できないことを意味します。
私はこの問題にほぼ1週間悩まされており、送信するためにさまざまな方法を試しました. 何がバグなのかわかりません。eth の代わりに icmp を使用してパケットを送信すると、正常に動作します`
python - dpkt ライターでライブ キャプチャのヘッダーのタイムスタンプを使用するにはどうすればよいですか?
私が書いているパケット キャプチャ ユーティリティで問題が発生しています。現在、pcapy を使用してライブ バイトストリームを開き、dpkt を使用してパケットをデコードしています。dpkt.Writer オブジェクトで動作する .pcap ファイルにもパケットを書き込みたいのですが、pcap ファイルに記録されるタイムスタンプは、ライターがパケットを pcap ファイルに書き込んだときのものであり、ネットワーク インターフェイスがまたはカーネルがメッセージを受信しました。
ドキュメントから、書き込み時にライターが使用する ts を提供できることは理解していますが、受信したパケットのヘッダーからそれを抽出する方法がわかりません。ファイルの読み取りからタイムスタンプを出力する方法を示す例から、バイトストリームから受け取ったタプルの最初の値を単純に出力できるように見えますが、そうすると次のエラーが発生します。
TypeError: int() 引数は、「Pkthdr」ではなく、文字列、バイトのようなオブジェクト、または数値でなければなりません
エラーは明らかです。間違いなく Pkthdr オブジェクトでタイムスタンプ属性を見つける必要がありますが、「ヘッダー」を解析する方法を説明するドキュメント/例が pcapy プロジェクトまたは dpkt のいずれにも見つかりません。
ライブ キャプチャに pypcap ライブラリも使用しようとしましたが、出力は同じです。dpkt はまだ python3 を完全にサポートしていない可能性があることを読んだので、python 2.7.5 でも同じコードを試みましたが、どちらのバージョンでも同じ結果になりました
pcap のタイムスタンプが書き込み時のものであることを証明するために、同じパケットを再度書き込む前にスリープ期間を追加しました。2 つのヘッダーのタイムスタンプに約 1 秒の差があることがわかります。
私は pcapy にも dpkt にもあまり依存していないので、より良い方法があればこれらのライブラリのいずれかを切り替えても構わないと思っていますが、もう少し経験のある人が掘り下げる方法を教えてくれるのではないかと感じています。 Pkthdr オブジェクト、タイムスタンプを str として抽出し、pcap への書き込み時に「ts」引数として挿入します。
編集: pcapy モジュールの pkthdr オブジェクトのソース コードを調べたところ、便利なものが見つかりました: オブジェクトからタイムスタンプを取得するための「getts」という関数があるようです:
私のpythonコードでは、次のように関数を呼び出しました:
そして、ヘッダーの秒とマイクロ秒を含むタプルを返しました (例: (1555710256, 942645))。次のステップは、これを単一の数値に連結し、dpkt ライター ts に入力することです。うまくいけばすぐに実際の例を投稿します