差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
programming:python:dpkt:start [2011/08/24 10:07]
127.0.0.1 外部編集
programming:python:dpkt:start [2021/05/22 18:41]
yuki 削除
ライン 3: ライン 3:
   * パケット操作用。   * パケット操作用。
     * http://​code.google.com/​p/​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
 +  * カプセル化されていて、そのプロトコルが実装前だけど実装するのが面倒なときは、以下のように必要部分だけstrで抜き出して処理する逃げ道もある。
 +    * <​code>​dpkt.ip.IP( str(udp.data)[4:​] )</​code>​
  
   * Python 2.7.1でビルド   * Python 2.7.1でビルド
ライン 12: ライン 22:
   * <​code>​import sys   * <​code>​import sys
 import dpkt import dpkt
 +
 +def ethaddr(addr):​
 +    addrcode = [chr(int(i)) for i in addr.split(':'​)]
 +    return ""​.join(addrcode)
  
 def ipv4addr(addr):​ def ipv4addr(addr):​
ライン 24: ライン 38:
     ip = dpkt.ip.IP(src=ipv4addr('​10.90.0.1'​),​ dst=ipv4addr('​10.90.0.2'​),​ p=47)     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 = dpkt.ethernet.Ethernet(type=dpkt.ethernet.ETH_TYPE_IP)
-    eth.src = '\x01\x02\x03\x04\x05\x06+    eth.src=ethaddr('01:​02:​03:​04:​05:​06') 
-    eth.dst = '\x05\x06\x07\x08\x09\x0a'+    eth.dst=ethaddr('01:​02:​03:​04:​05:​07')
  
     pcw = dpkt.pcap.Writer(open('​gre_'​+filename,'​wb'​))     pcw = dpkt.pcap.Writer(open('​gre_'​+filename,'​wb'​))
ライン 33: ライン 47:
         ip.sum = 0         ip.sum = 0
         ip.data = gre         ip.data = gre
-        ip.len = len(ip)+        ip.len = len(str(ip))
         eth.data = ip         eth.data = ip
         pcw.writepkt(eth,​ts)         pcw.writepkt(eth,​ts)
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0