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)