class EthernetPacket(AbstractPacket):
    """
    classdocs
    """

    def __init__(self, context):

        self.__defaults = {
            "src_mac": "01:02:03:04:05:06",
            "dst_mac": "01:02:03:04:05:06",
            "ether_type": "0x801",
            "tag": "",
            "payload": "\x80" * 42,
        }

        context.update(self.__defaults)
        self.__context = context
        self.__common = PacketSenderCommon()

    def getShortDescription(self):
        return ""

    def getOptions(self):
        return ""

    def getFullDescription(self):
        return ""

    def getDefaults(self):
        return ""

    def setOption(self, key, value):
        pass

    def __generateMAC(self, strValue):
        return self.__common.generateMAC(strValue)

    def __generateSourceMAC(self):
        return self.__generateMAC(self.__context["src_mac"])

    def __generateDestMAC(self):
        return self.__generateMAC(self.__context["dst_mac"])

    def __generateTag(self):
        return ""

    def __generatePacketType(self):
        return self.__common.hexStr2int_16_networkOrder(self.__context["ether_type"])

    def __generatePayload(self):
        return self.__context["payload"]

    def __generateCRC(self, packet):
        return self.__common.hexString2crc32_networkOrder(packet)

    def generatePacket(self):
        resultPacket = (
            self.__generateDestMAC()
            + self.__generateSourceMAC()
            + self.__generateTag()
            + self.__generatePacketType()
            + self.__generatePayload()
        )
        resultPacket += self.__generateCRC(resultPacket)
        return resultPacket
Ejemplo n.º 2
0
class Packet_999(AbstractPacket):
    '''
    classdocs
    '''
    def __init__(self, context):
        
        self.__defaults = {'preamble' : 'DD:DD:DD:DD:DD:DD:DD:d5',
                           'sid' : '0xe001',
                           'tag' : '',
                           'payload' : "\x80" *2}
        
        context.update(self.__defaults)
        self.__context = context
        self.__common = PacketSenderCommon()
        
    def getShortDescription(self):
        return ""

    def getOptions(self):
        return ""

    def getFullDescription(self):
        return ""

    def getDefaults(self):
        return ""

    def setOption( self, key, value ):
        pass

    def generatePreamble(self, strValue):
        listOctets = strValue.split(':');
        resultPreamble = ""
        for octet in listOctets:
            resultPreamble += (chr(int( octet, 16)))
        return resultPreamble

    def __generatePreamble(self):
        return self.generatePreamble(self.__context['preamble'])

    def __generateTag(self):
        return ""

    def __generatePacketSid(self):
        return self.__common.hexStr2int_16_networkOrder(self.__context['sid'])
    

    def __generatePayload(self):
        return self.__context['payload']

    def __generateCRC(self, packet ):
        return self.__common.hexString2crc32_networkOrder(packet)
    
    def generatePacket(self):
        resultPacket = self.__generatePreamble() + \
                       self.__generatePacketSid() + \
                       self.__generateTag() + \
                       self.__generatePayload();
        resultPacket += self.__generateCRC( resultPacket );
        
        return resultPacket;