問題タブ [dpkt]

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.

0 投票する
0 に答える
101 参照

python - Pythonで.pcapファイルからインターフェースの詳細を解析する

.pcap ファイルがあり、この出力からインターフェイスとその管理ステータスを抽出しようとしています。どの python モジュールを使用すればよいですか? 私は pypcapfile を試しましたが、うまくいきませんでした。dpkt も試しましたが、正しいハンドラーを使用してインターフェイスの詳細を抽出することができません。

私の dpkt リーダー o/p は次のとおりです。

ここに画像の説明を入力

0 投票する
1 に答える
1173 参照

python - PCAP ファイルから時刻を抽出し、CSV ファイルとして保存します

PCAP ファイルから ARP パケットのみの日時を抽出し、csv/txt として保存したいと考えています。私は抽出時間のために以下のコードを使用しました。印刷コマンドは時間とともに正常に機能しています。ただし、csv ファイルに保存する場合は、1 つの日付と 1 つの時刻 (例: 14:59:58) のみが csv ファイルに保存されます。pcapからARP時間を抽出してcsvに正しく保存するためのコードを変更することを提案できますか。ありがとうございました。

open("../data/" + filename + ".pcap", 'rb') を f: pcap = dpkt.pcap.Reader(f) として使用

def save_packets(packets,filename,tcp,ts, degree_sorted): with open(filename, 'w') as f: パケット内のパケットの場合: data = '' パケット内のアイテムの場合: data = data + str(item) + ' ,' f.write(data + tcp + datetime.datetime.utcfromtimestamp(ts).strftime("%m/%d/%Y, %H:%M:%S") + degree_sorted + '\n')

0 投票する
1 に答える
910 参照

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 に入力することです。うまくいけばすぐに実際の例を投稿します