def toXML(self, root, namespace): """toXML: Create the xml tree associated to this variable. """ self.log.debug("[ {0}: toXML:".format(self.toString())) xmlVariable = etree.SubElement(root, "{" + namespace + "}variable") xmlVariable.set("id", str(self.getID())) xmlVariable.set("name", str(self.getName())) xmlVariable.set("{http://www.w3.org/2001/XMLSchema-instance}type", "netzob:ComputedRelationVariable") xmlVariable.set("mutable", str(self.isMutable())) xmlVariable.set("learnable", str(self.isLearnable())) # sized xmlSized = etree.SubElement(xmlVariable, "{" + namespace + "}sized") xmlSized.text = str( self.relationType.getAssociatedDataType().isSized()) # type xmlType = etree.SubElement(xmlVariable, "{" + namespace + "}type") xmlType.text = self.relationType.getType() # Definition of the referenced variable ID. xmlRefID = etree.SubElement(xmlVariable, "{" + namespace + "}ref") xmlRefID.text = str(self.pointedID) self.log.debug("Variable {0}. ]".format(self.getName())) # minChars xmlMinChars = etree.SubElement(xmlVariable, "{" + namespace + "}minChars") xmlMinChars.text = str( self.relationType.getAssociatedDataType().getMinChars()) # maxChars xmlMaxChars = etree.SubElement(xmlVariable, "{" + namespace + "}maxChars") xmlMaxChars.text = str( self.relationType.getAssociatedDataType().getMaxChars()) # delimiter xmlDelimiter = etree.SubElement(xmlVariable, "{" + namespace + "}delimiter") xmlDelimiter.text = str( TypeConvertor.bin2hexstring( self.relationType.getAssociatedDataType().getDelimiter())) # factor xmlFactor = etree.SubElement(xmlVariable, "{" + namespace + "}factor") xmlFactor.text = str(self.relationType.getFactor()) # offset xmlOffset = etree.SubElement(xmlVariable, "{" + namespace + "}offset") xmlOffset.text = str(self.relationType.getOffset())
def toXML(self, root, namespace): """toXML: Creates the xml tree associated to this variable. """ self.log.debug("- {0}: toXML:".format(self.toString())) xmlVariable = etree.SubElement(root, "{" + namespace + "}variable") xmlVariable.set("id", str(self.getID())) xmlVariable.set("name", str(self.getName())) xmlVariable.set("{http://www.w3.org/2001/XMLSchema-instance}type", "netzob:DataVariable") xmlVariable.set("mutable", str(self.isMutable())) xmlVariable.set("learnable", str(self.isLearnable())) # sized xmlSized = etree.SubElement(xmlVariable, "{" + namespace + "}sized") xmlSized.text = str(self.type.isSized()) # type xmlType = etree.SubElement(xmlVariable, "{" + namespace + "}type") xmlType.text = self.type.getType() # originalValue (can be None) if self.originalValue is not None and self.isMutable( ) is not None: # We do not memorize random values. xmlOriginalValue = etree.SubElement( xmlVariable, "{" + namespace + "}originalValue") # We memorize the current value as the future original value. # I assume that the user want the last current value (that he may have hand-edited) of the variable to be memorized. xmlOriginalValue.text = self.type.bin2str(self.currentValue) # minChars xmlMinChars = etree.SubElement(xmlVariable, "{" + namespace + "}minChars") xmlMinChars.text = str(self.type.getMinChars()) # maxBits xmlMaxChars = etree.SubElement(xmlVariable, "{" + namespace + "}maxChars") xmlMaxChars.text = str(self.type.getMaxChars()) # delimiter xmlDelimiter = etree.SubElement(xmlVariable, "{" + namespace + "}delimiter") xmlDelimiter.text = str( TypeConvertor.bin2hexstring(self.type.getDelimiter()))
def toXML(self, root, namespace): """toXML: Create the xml tree associated to this variable. """ self.log.debug("[ {0}: toXML:".format(self.toString())) xmlVariable = etree.SubElement(root, "{" + namespace + "}variable") xmlVariable.set("id", str(self.getID())) xmlVariable.set("name", str(self.getName())) xmlVariable.set("{http://www.w3.org/2001/XMLSchema-instance}type", "netzob:ComputedRelationVariable") xmlVariable.set("mutable", str(self.isMutable())) xmlVariable.set("learnable", str(self.isLearnable())) # sized xmlSized = etree.SubElement(xmlVariable, "{" + namespace + "}sized") xmlSized.text = str(self.relationType.getAssociatedDataType().isSized()) # type xmlType = etree.SubElement(xmlVariable, "{" + namespace + "}type") xmlType.text = self.relationType.getType() # Definition of the referenced variable ID. xmlRefID = etree.SubElement(xmlVariable, "{" + namespace + "}ref") xmlRefID.text = str(self.pointedID) self.log.debug("Variable {0}. ]".format(self.getName())) # minChars xmlMinChars = etree.SubElement(xmlVariable, "{" + namespace + "}minChars") xmlMinChars.text = str(self.relationType.getAssociatedDataType().getMinChars()) # maxChars xmlMaxChars = etree.SubElement(xmlVariable, "{" + namespace + "}maxChars") xmlMaxChars.text = str(self.relationType.getAssociatedDataType().getMaxChars()) # delimiter xmlDelimiter = etree.SubElement(xmlVariable, "{" + namespace + "}delimiter") xmlDelimiter.text = str(TypeConvertor.bin2hexstring(self.relationType.getAssociatedDataType().getDelimiter())) # factor xmlFactor = etree.SubElement(xmlVariable, "{" + namespace + "}factor") xmlFactor.text = str(self.relationType.getFactor()) # offset xmlOffset = etree.SubElement(xmlVariable, "{" + namespace + "}offset") xmlOffset.text = str(self.relationType.getOffset())
def toXML(self, root, namespace): """toXML: Creates the xml tree associated to this variable. """ self.log.debug("- {0}: toXML:".format(self.toString())) xmlVariable = etree.SubElement(root, "{" + namespace + "}variable") xmlVariable.set("id", str(self.getID())) xmlVariable.set("name", str(self.getName())) xmlVariable.set("{http://www.w3.org/2001/XMLSchema-instance}type", "netzob:DataVariable") xmlVariable.set("mutable", str(self.isMutable())) xmlVariable.set("learnable", str(self.isLearnable())) # sized xmlSized = etree.SubElement(xmlVariable, "{" + namespace + "}sized") xmlSized.text = str(self.type.isSized()) # type xmlType = etree.SubElement(xmlVariable, "{" + namespace + "}type") xmlType.text = self.type.getType() # originalValue (can be None) if self.originalValue is not None and self.isMutable() is not None: # We do not memorize random values. xmlOriginalValue = etree.SubElement(xmlVariable, "{" + namespace + "}originalValue") # We memorize the current value as the future original value. # I assume that the user want the last current value (that he may have hand-edited) of the variable to be memorized. xmlOriginalValue.text = self.type.bin2str(self.currentValue) # minChars xmlMinChars = etree.SubElement(xmlVariable, "{" + namespace + "}minChars") xmlMinChars.text = str(self.type.getMinChars()) # maxBits xmlMaxChars = etree.SubElement(xmlVariable, "{" + namespace + "}maxChars") xmlMaxChars.text = str(self.type.getMaxChars()) # delimiter xmlDelimiter = etree.SubElement(xmlVariable, "{" + namespace + "}delimiter") xmlDelimiter.text = str(TypeConvertor.bin2hexstring(self.type.getDelimiter()))
def bin2str(self, bina): return TypeConvertor.bin2hexstring(bina)