2017-10-02 12 views

答えて

1

新しいレイヤーを構築する方法についてのscapyマニュアルについていくつかの調査を行いましたが、私はこのコードを書いています。私はscapyのmplsコードからいくつかの例を取っ​​た。私はそれをテストして、パケットにPW Ethernet Control Wordを追加するようです。

from scapy.packet import Packet, bind_layers, Padding 
from scapy.fields import IntField 
from scapy.layers.inet import IP 
from scapy.layers.inet6 import IPv6 

class PseudowireControlWord(Packet): 

    name = "PseudowireControlWord" 
    fields_desc = [IntField("SeqNumber", 0)] 

    def guess_payload_class(self, payload): 
     if len(payload) >= 1: 
      ip_version = (ord(payload[0]) >> 4) & 0xF 
      if ip_version == 4: 
       return IP 
      elif ip_version == 6: 
       return IPv6 
     return Padding 

はまた、私はguess_payload_class関数でscapyでmpls.pyコードに変更を加えました。私は次のコードを追加する必要があると思う:

elif ip_version == 0: 
    return PseudowireControlWord 
関連する問題