Exemplo n.º 1
0
    def test_show(self):
        instance, validated = abouchet.show_dumpname(
            self.classname, self.memdumpname, self.known_heaps[0][0])
        self.assertTrue(validated)
        self.assertIsInstance(instance, object)
        self.assertEquals(instance.Signature, 0xeeffeeff)
        self.assertEquals(instance.VirtualMemoryThreshold, 0xfe00)
        self.assertEquals(instance.FrontEndHeapType, 0)

        if True:
            instance, validated = abouchet.show_dumpname(
                self.classname, self.memdumpname, self.known_heaps[0][0] + 1)
            self.assertFalse(validated)
            self.assertIsInstance(instance, object)
            self.assertNotEquals(instance.Signature, 0xeeffeeff)
            self.assertEquals(instance.Signature, 0xeeffee)  # 1 byte off
            self.assertNotEquals(instance.VirtualMemoryThreshold, 0xfe00)
            self.assertEquals(instance.VirtualMemoryThreshold, 0xff0000fe)

        return
 def test_show(self):
     instance, validated = abouchet.show_dumpname(
         self.classname, self.memdumpname, long(
             self.validAddress, 16))
     self.assertIsInstance(instance, object)
     self.assertEquals(instance.connection_in, 3)
     # print instance.__dict__
     #self.assertEquals(instance.VirtualMemoryThreshold, 0xfe00)
     #self.assertEquals(instance.FrontEndHeapType, 0)
     # self.assertTrue(validated)
     return
    def test_refresh(self):
        from test.src import ctypes7
        self.assertEquals(len(ctypes7.struct_Node.expectedValues.keys()), 2)
        # string
        retstr = abouchet.show_dumpname(
            self.classname,
            self.memdumpname,
            self.address,
            rtype='string')
        self.assertIn("3735928559L,", retstr)  # 0xdeadbeef
        self.assertIn("struct_Node at 0x%x>" % (self.address), retstr)
        self.assertIn('"ptr2": 0x%08x' % (self.address), retstr)

        # python
        node, validated = abouchet.show_dumpname(
            self.classname, self.memdumpname, self.address, rtype='python')
        self.assertEquals(validated, True)
        self.assertEquals(node.val1, 0xdeadbeef)
        #self.assertEquals(node.ptr2, self.address)
        self.assertIsNone(node.ptr2)
    def test_show(self):
        instance, validated = abouchet.show_dumpname(
            self.classname, self.memdumpname, self.known_heaps[0][0])
        self.assertTrue(validated)
        self.assertIsInstance(instance, object)
        self.assertEquals(instance.connection_in, 3)
        self.assertEquals(instance.connection_out, 3)
        self.assertEquals(instance.receive_context.evp.cipher.block_size, 16)
        self.assertEquals(instance.receive_context.evp.cipher.key_len, 16)
        self.assertEquals(instance.receive_context.evp.cipher.iv_len, 16)
        self.assertEquals(instance.receive_context.evp.key_len, 16)
        self.assertEquals(instance.receive_context.cipher.name, 'aes128-ctr')
        self.assertEquals(instance.receive_context.cipher.block_size, 16)
        self.assertEquals(instance.receive_context.cipher.key_len, 16)

        self.assertEquals(instance.send_context.evp.cipher.block_size, 16)
        self.assertEquals(instance.send_context.evp.cipher.key_len, 16)
        self.assertEquals(instance.send_context.evp.cipher.iv_len, 16)
        self.assertEquals(instance.send_context.evp.key_len, 16)
        self.assertEquals(instance.send_context.cipher.name, 'aes128-ctr')
        self.assertEquals(instance.send_context.cipher.block_size, 16)
        self.assertEquals(instance.send_context.cipher.key_len, 16)

        return
    def test_refresh(self):
        from test.src import ctypes6
        self.assertEquals(len(ctypes6.struct_Node.expectedValues.keys()), 2)
        # string
        retstr = abouchet.show_dumpname(self.usual_structname, self.memdumpname,
                                        self.address1, rtype='string')
        if True:
            import ctypes
            self.assertIn('CTypesProxy-8:8:16', '%s' % ctypes)
            self.assertEquals(ctypes.sizeof(ctypes.c_long), 8)

        self.assertIn(str(0x0aaaaaaa), retstr)  # 0xaaaaaaa/178956970L
        self.assertIn(str(0x0ffffff0), retstr)
        self.assertIn('"val2b": 0L,', retstr)
        self.assertIn('"val1b": 0L,', retstr)

        # usual->root.{f,b}link = &node1->list; # offset list is 8 bytes
        # 64 bits alignement
        node1_list_addr = hex(self.address2 + 8)
        self.assertIn(
            '"flink": { # <struct_entry at %s' %
            (node1_list_addr),
            retstr)
        self.assertIn(
            '"blink": { # <struct_entry at %s' %
            (node1_list_addr),
            retstr)

        # python
        usual, validated = abouchet.show_dumpname(self.usual_structname,
                                                  self.memdumpname,
                                                  self.address1, rtype='python')
        self.assertEquals(validated, True)
        self.assertEquals(usual.val1, 0x0aaaaaaa)
        self.assertEquals(usual.val2, 0x0ffffff0)
        self.assertEquals(usual.txt, 'This a string with a test this is a test '
                                     'string')

        # so now we got python objects
        # that is node 1
        self.assertIsNotNone(usual.root.flink)
        self.assertEquals(usual.root.flink, usual.root.blink)
        # that is node2
        self.assertEquals(usual.root.blink.flink, usual.root.flink.flink)
        # that is None (root.flink = root.blink)
        self.assertIsNone(usual.root.blink.blink)
        self.assertIsNone(usual.root.flink.blink)
        # that is None per design UT
        self.assertIsNone(usual.root.blink.flink.flink)

        # python 2 struct Node
        node1, validated = abouchet.show_dumpname(self.node_structname,
                                                  self.memdumpname,
                                                  self.address2, rtype='python')
        self.assertEquals(validated, True)
        self.assertEquals(node1.val1, 0xdeadbeef)
        self.assertEquals(node1.val2, 0xffffffff)

        node2, validated = abouchet.show_dumpname(self.node_structname,
                                                  self.memdumpname,
                                                  self.address3, rtype='python')
        self.assertEquals(validated, True)
        self.assertEquals(node2.val1, 0xdeadbabe)
        self.assertEquals(node2.val2, 0xffffffff)

        self.assertIsNotNone(usual.root.flink)

        # but we have different instances/references between calls to
        # show_dumpname
        self.assertNotEquals(usual.root.flink, node1.list)
        self.assertNotEquals(usual.root.blink.flink, node2.list)

        if True:
            import ctypes
            self.assertIn('CTypesProxy-8:8:16', '%s' % ctypes)
            self.assertEquals(ctypes.sizeof(ctypes.c_long), 8)
    def test_refresh(self):
        # if you delete the Heap memorymap,
        # all references in the model are invalided

        # real problem: references left over by previous search.
        # solution: move the book into memory_mappings,

        from test.src import ctypes6
        self.assertEquals(len(ctypes6.struct_Node.expectedValues.keys()), 2)

        # string
        retstr = abouchet.show_dumpname(self.usual_structname, self.memdumpname,
                                        self.address1, rtype='string')
        if True:
            import ctypes
            self.assertIn('CTypesProxy-4:4:12', '%s' % ctypes)
            self.assertEquals(ctypes.sizeof(ctypes.c_long), 4)
        self.assertIn(str(0x0aaaaaaa), retstr)  # 0xaaaaaaa/178956970L
        self.assertIn(str(0x0ffffff0), retstr)
        self.assertIn('"val2b": 0L,', retstr)
        self.assertIn('"val1b": 0L,', retstr)
        # print retstr

        # usual->root.{f,b}link = &node1->list; # offset list is 4 bytes
        node1_list_addr = hex(self.address2 + 4)
        self.assertIn(
            '"flink": { # <struct_entry at %s' %
            (node1_list_addr),
            retstr)
        self.assertIn(
            '"blink": { # <struct_entry at %s' %
            (node1_list_addr),
            retstr)

        # python
        usual, validated = abouchet.show_dumpname(self.usual_structname,
                                                  self.memdumpname,
                                                  self.address1, rtype='python')
        self.assertEquals(validated, True)
        self.assertEquals(usual.val1, 0x0aaaaaaa)
        self.assertEquals(usual.val2, 0x0ffffff0)
        self.assertEquals(usual.txt, 'This a string with a test this is a test '
                                     'string')

        # so now we got python objects
        # that is node 1
        self.assertIsNotNone(usual.root.flink)
        self.assertEquals(usual.root.flink, usual.root.blink)
        # that is node2
        self.assertEquals(usual.root.blink.flink, usual.root.flink.flink)
        # that is None (root.flink = root.blink)
        self.assertIsNone(usual.root.blink.blink)
        self.assertIsNone(usual.root.flink.blink)
        # that is None per design UT
        self.assertIsNone(usual.root.blink.flink.flink)

        # python 2 struct Node
        node1, validated = abouchet.show_dumpname(self.node_structname,
                                                  self.memdumpname,
                                                  self.address2, rtype='python')
        self.assertEquals(validated, True)
        self.assertEquals(node1.val1, 0xdeadbeef)
        self.assertEquals(node1.val2, 0xffffffff)

        node2, validated = abouchet.show_dumpname(self.node_structname,
                                                  self.memdumpname,
                                                  self.address3, rtype='python')
        self.assertEquals(validated, True)
        self.assertEquals(node2.val1, 0xdeadbabe)
        self.assertEquals(node2.val2, 0xffffffff)

        self.assertIsNotNone(usual.root.flink)

        # but we have different instances/references between calls to
        # show_dumpname
        self.assertNotEquals(usual.root.flink, node1.list)
        self.assertNotEquals(usual.root.blink.flink, node2.list)

        # TODO the listmodel test should test if references have been loaded
        # without searching for them.
        if True:
            import ctypes
            self.assertIn('CTypesProxy-4:4:12', '%s' % ctypes)
            self.assertEquals(ctypes.sizeof(ctypes.c_long), 4)