**以前のリビジョンの文書です**
dpkt
- パケット操作用。
- Python 2.7.1でビルド
- <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>
