pcapファイルのパケットを編集しようとしています。
具体的には、特定のバイト列hogeを見つけたらfugaと書き換えて、すべてのパケットでその処理が終わったらファイルを保存するといった内容です。
wiresharkなどで手作業でやるのは大変なので、コードなどで自動で上の作業を行いたいです。
Pythonのdpktを試したのですが、immutableなbytes objectでしかパケットのバイト列を取得できないらしく、値の変更をすることができませんでした。
import dpkt def main(): readfile = 'input.pcap' writefile = 'output.pcap' pcr = dpkt.pcap.Reader(open(readfile,'rb')) pcw = dpkt.pcap.Writer(open(writefile,'wb')) packet_count = 0 for ts,buf in pcr: packet_count += 1 for i in range(len(buf)): if buf[i] == hoge: buf[i]=(fuga).to_bytes(2,'little') pcw.writepkt(buf,ts) pcw.close() if __name__ == '__main__': main()
エラー
typeerror: 'bytes' object does not support item assignment
dpktでパケットの変更を行う方法、あるいは何か他に良い方法・ツールなどがあれば、ご教示いただけますと幸いです
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/07 21:02