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
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)
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
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)