差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
programming:python:dpkt:start [2011/11/01 22:30]
yuki
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でビルド
ライン 27: ライン 37:
     gre = dpkt.gre.GRE()     gre = dpkt.gre.GRE()
     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_IPsrc=ethaddr('​01:​02:​03:​04:​05:​06'​)dst=ethaddr('​07:08:09:0a:0b:0c'))+    eth = dpkt.ethernet.Ethernet(type=dpkt.ethernet.ETH_TYPE_IP
 +    eth.src=ethaddr('​01:​02:​03:​04:​05:​06'​) 
 +    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'​))
ライン 35: ライン 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