pcap ファイルは、Python (2.7.9) Requests ライブラリを使用して URL からダウンロードされます。
import requests
response = requests.get('http://example.com/path/1.pcap', stream=True)
ドキュメントによるresponse.raw
と、ファイルのようなオブジェクトであり、私の目標は、ダウンロードしたファイルをディスクに保存せずに処理することです。
私は最初にファイル解析用のScapy
とPyshark
ライブラリを見ましたが、それらの関数 (と) はファイル パス文字列を引数として受け入れます。from library はファイル オブジェクトを受け入れます。最初の試行でエラーが発生しました:.pcap
rdpcap
FileCapture
pcap.Reader
dpkt
pcap=dpkt.pcap.Reader(resonse.raw)
AttributeError: 'HTTPResponse' object has no attribute 'name'
名前属性が追加されました:
setattr(response.raw,'name', 'test.pcap')
その後、pcap=dpkt.pcap.Reader(resonse.raw)
エラーは発生しませんでしたが、pcap.readpkts()
失敗しました
io.UsupportedOperation: seek
そして実際にresponse.raw.seekable()
戻りますFalse
。
設定response.raw.decode_content = True
してみましたがダメでした。
私が試みている方法でオブジェクトを処理するための解決策はありますか? シーク可能な応答オブジェクトを取得するには、追加の要求パラメーターが必要になるのでしょうか?
ちなみに、レスポンスオブジェクトをファイル( shutil.copyfileobj(response.raw,file)
)に書き込めば、dpkt
その後はそのファイルの操作に成功します。