Пример #1
0
    def __init__(self,
                 specimens: sl.SpecimenLoader,
                 layer: int = -1,
                 relativeToIP: bool = False,
                 failOnUndissectable=True,
                 debug=False):
        self.specimens = specimens
        self.messages = specimens.messagePool  # type: OrderedDict[AbstractMessage, netzob.RawMessage]
        """:type messages: OrderedDict[AbstractMessage, RawMessage]"""
        self.baselayer = specimens.getBaseLayerOfPCAP()
        self.debug = debug

        # Cache messages that already have been parsed and labeled
        self._messageCache = dict()  # type: Dict[netzob.RawMessage, ]
        self._targetlayer = layer
        self._relativeToIP = relativeToIP
        self._failOnUndissectable = failOnUndissectable

        self._dissections = self._dissectAndLabel(self.messages.values())
Пример #2
0
    #     pms.update(ParsedMessage.parseMultiple([p]))
    # pms = list(pms.values())

    # Single messages with ParsedMessage constructor test:   Dissection ran in 58.39 seconds.
    # pms = list()
    # for p in pkt:
    #     pms.append(ParsedMessage(p))
    ###########################

    # # Multiple messages with ParsedMessage.parseMultiple test:   Dissection ran in 1.55 seconds.
    if args.targetlayer:
        pms = ParsedMessage.parseMultiple(
            pkt,
            args.targetlayer,
            args.relativeToIP,
            linktype=specimens.getBaseLayerOfPCAP())
    else:
        pms = ParsedMessage.parseMultiple(
            pkt, linktype=specimens.getBaseLayerOfPCAP())
    pms = list(pms.values())

    print("Dissection ran in {:3.2f} seconds.".format(time.time() - st))
    for pm in pms:  # type: ParsedMessage
        pm.printUnknownTypes()

        ###########################
        # Output of dissected messages as usage example
        ###########################
        # print(pm.getFieldNames())
        # # Simple field value print
        # for fv in pm.getFieldValues():