2017-10-02 3 views

Répondre

1

J'ai fait quelques recherches sur le manuel de scapy sur la façon de construire de nouvelles couches et j'ai écrit ce code. J'ai pris un exemple du code mpls en scapy. Je l'ai testé et il semble ajouter le mot de contrôle PW Ethernet dans le paquet.

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 

J'ajouté également une modification dans le code mpls.py dans scapy dans la fonction guess_payload_class. Je pense que le code suivant doit être ajouté:

elif ip_version == 0: 
    return PseudowireControlWord