内容へ移動
[[
✎ programming:python:dpkt:start
]]
doku@ainoniwa
文書の表示
最近の変更
サイトマップ
ログイン
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== dpkt ====== * パケット操作用。 * http://code.google.com/p/dpkt/ * GRE周りがかなり怪しい実装になってる。unpackは上手く動作しないかも。 * TCP/IP,UDP/IP,ICMP辺りはそれなりに動くかも。 * IPv6 ESPヘッダは非対応だから、エラー吐くよ。 * IPv6は拡張ヘッダ周りでバグが残ってるぽいのでdiff当てて、python setup.py installやり直し。 * http://code.google.com/p/dpkt/issues/detail?id=67 * ICMPv6は別段デコードしないデータグラムを重複して返すかもしれない。これも書きなおしかも。 * http://code.google.com/p/dpkt/issues/detail?id=77 * Python 2.7.1でビルド * http://dpkt.googlecode.com/files/dpkt-1.7.tar.gz * <code>python setup.py config python setup.py install</code> * 例えば、「指定したpcapファイルのパケットを、GREでカプセル化して吐き出す」というのを適当に書くと以下のようになる。 * <code>import sys import dpkt def ethaddr(addr): addrcode = [chr(int(i)) for i in addr.split(':')] return "".join(addrcode) def ipv4addr(addr): addrcode = [chr(int(i)) for i in addr.split('.')] return "".join(addrcode) def main(): filename = "target.pcap" pcr = dpkt.pcap.Reader(open(filename)) gre = dpkt.gre.GRE() ip = dpkt.ip.IP(src=ipv4addr('10.90.0.1'), dst=ipv4addr('10.90.0.2'), p=47) eth = dpkt.ethernet.Ethernet(type=dpkt.ethernet.ETH_TYPE_IP) eth.src=ethaddr('01:02:03:04:05:06') eth.dst=ethaddr('07:08:09:0a:0b:0c') pcw = dpkt.pcap.Writer(open('gre_'+filename,'wb')) for ts, buf in pcr: eth_in = dpkt.ethernet.Ethernet(buf) gre.data = eth_in.data ip.sum = 0 ip.data = gre # ip.__len__でもいいと思うけど。 ip.len = len(str(ip)) eth.data = ip pcw.writepkt(eth,ts) pcw.close pass if __name__ == '__main__': main()</code>
文書の表示
以前のリビジョン
メディアマネージャー
文書の先頭へ