Beispiel #1
0
 def __init__(self,
              project,
              symbols,
              explodeSymbols,
              doInternalSlick,
              defaultFormat,
              unitSize,
              cb_status=None):
     self.symbols = symbols
     self.project = project
     self.doInternalSlick = doInternalSlick
     self.cb_status = cb_status
     self.defaultFormat = defaultFormat
     self.unitSize = unitSize
     self.log = logging.getLogger(
         'netzob.Inference.Vocabulary.AsciiAlign.py')
     self.server = ""
     if explodeSymbols is False:
         self.symbols = symbols
     else:
         #Create a symbol for each message and reset to constant the tokens
         self.symbols = []
         i_symbol = 1
         for symbol in symbols:
             for m in symbol.getMessages():
                 for t in m.getPattern()[1]:
                     t.setType("constant")
                 tmpSymbol = Symbol(str(uuid.uuid4()),
                                    "Symbol " + str(i_symbol), project)
                 tmpSymbol.setPattern(m.getPattern())
                 tmpSymbol.addMessage(m)
                 self.symbols.append(tmpSymbol)
                 i_symbol += 1
Beispiel #2
0
    def mergeEffectiveRowCol(self, i_maximum, j_maximum):
        # Extract symbols i and j
        if i_maximum > j_maximum:
            symbol1 = self.symbols.pop(i_maximum)
            symbol2 = self.symbols.pop(j_maximum)
        else:
            symbol1 = self.symbols.pop(j_maximum)
            symbol2 = self.symbols.pop(i_maximum)

        # Merge the symbols i and j
        messages = []
        messages.extend(symbol1.getMessages())
        messages.extend(symbol2.getMessages())

        newSymbol = Symbol(str(uuid.uuid4()), symbol1.getName(), self.project)
        newSymbol.setPattern(self.mergePattern(symbol1.getPattern(), symbol2.getPattern()))
#        self.log.debug("Patterns to merge: {0} with {1}: Give Result {2}".format(symbol1.getPatternString(), symbol2.getPatternString(), newSymbol.getPatternString()))
        newSymbol.setPattern(
            self.mergePattern(symbol1.getPattern(), symbol2.getPattern()))
        #        self.log.debug("Patterns to merge: {0} with {1}: Give Result {2}".format(symbol1.getPatternString(), symbol2.getPatternString(), newSymbol.getPatternString()))
        for message in messages:
            newSymbol.addMessage(message)

        # Append th new symbol to the "symbols" structure
        self.symbols.append(newSymbol)
Beispiel #3
0
 def __init__(self,
              project,
              symbols,
              explodeSymbols,
              doInternalSlick,
              defaultFormat,
              unitSize,
              cb_status=None):
     self.symbols = symbols
     self.project = project
     self.doInternalSlick = doInternalSlick
     self.cb_status = cb_status
     self.defaultFormat = defaultFormat
     self.unitSize = unitSize
     self.log = logging.getLogger(
         'netzob.Inference.Vocabulary.AsciiAlign.py')
     self.server = ""
     if explodeSymbols is False:
         self.symbols = symbols
     else:
         #Create a symbol for each message and reset to constant the tokens
         self.symbols = []
         i_symbol = 1
         for symbol in symbols:
             for m in symbol.getMessages():
                 for t in m.getPattern()[1]:
                     t.setType("constant")
                 tmpSymbol = Symbol(
                     str(uuid.uuid4()), "Symbol " + str(i_symbol), project)
                 tmpSymbol.setPattern(m.getPattern())
                 tmpSymbol.addMessage(m)
                 self.symbols.append(tmpSymbol)
                 i_symbol += 1
Beispiel #4
0
    def mergeEffectiveRowCol(self, i_maximum, j_maximum):
        # Extract symbols i and j
        if i_maximum > j_maximum:
            symbol1 = self.symbols.pop(i_maximum)
            symbol2 = self.symbols.pop(j_maximum)
        else:
            symbol1 = self.symbols.pop(j_maximum)
            symbol2 = self.symbols.pop(i_maximum)

        # Merge the symbols i and j
        messages = []
        messages.extend(symbol1.getMessages())
        messages.extend(symbol2.getMessages())

        newSymbol = Symbol(str(uuid.uuid4()), symbol1.getName(), self.project)
        newSymbol.setPattern(self.mergePattern(symbol1.getPattern(), symbol2.getPattern()))
#        self.log.debug("Patterns to merge: {0} with {1}: Give Result {2}".format(symbol1.getPatternString(), symbol2.getPatternString(), newSymbol.getPatternString()))
        for message in messages:
            newSymbol.addMessage(message)

        # Append th new symbol to the "symbols" structure
        self.symbols.append(newSymbol)