예제 #1
0
    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())
예제 #2
0
    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()))
예제 #3
0
    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())
예제 #4
0
    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()))
예제 #5
0
 def bin2str(self, bina):
     return TypeConvertor.bin2hexstring(bina)