**以前のリビジョンの文書です**
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>