def test_sapdiag_atoms(self): """Test dissection of Diag Items and Dynt Atom Items""" diag_items = SAPDiagItems(read_data_file('nw_703_login_screen_decompressed.data')) diag_packet = SAPDiag(message=diag_items.message) diag_atoms = diag_packet.get_item(0x12, 0x09, 0x02) for atom in diag_atoms: for atom_item in atom.item_value.items: self.assertIsInstance(atom_item, SAPDiagDyntAtomItem)
def test_sapdiag_items_lookup(self): """Test lookup and filtering of SAPDiagItems inside a SAPDiag packet""" sapdiag = SAPDiag() sapdiag_ses_item = SAPDiagItem(item_type="SES") sapdiag.message.append(sapdiag_ses_item) sapdiag_appl_item = SAPDiagItem(item_type="APPL", item_id="ST_USER", item_sid="RFC_PARENT_UUID") sapdiag.message.append(sapdiag_appl_item) self.assertIn(sapdiag_ses_item, sapdiag.get_item(0x1)) self.assertIn(sapdiag_ses_item, sapdiag.get_item("SES")) self.assertNotIn(sapdiag_ses_item, sapdiag.get_item(0x10)) self.assertNotIn(sapdiag_ses_item, sapdiag.get_item("APPL")) self.assertIn(sapdiag_appl_item, sapdiag.get_item(0x10)) self.assertIn(sapdiag_appl_item, sapdiag.get_item("APPL")) self.assertIn(sapdiag_appl_item, sapdiag.get_item("APPL", 0x04)) self.assertIn(sapdiag_appl_item, sapdiag.get_item("APPL", "ST_USER")) self.assertIn(sapdiag_appl_item, sapdiag.get_item("APPL", 0x04, 0x10)) self.assertIn(sapdiag_appl_item, sapdiag.get_item("APPL", "ST_USER", 0x10)) self.assertIn(sapdiag_appl_item, sapdiag.get_item("APPL", "ST_USER", "RFC_PARENT_UUID")) self.assertNotIn(sapdiag_appl_item, sapdiag.get_item(0x1)) self.assertNotIn(sapdiag_appl_item, sapdiag.get_item("APPL4")) self.assertNotIn(sapdiag_appl_item, sapdiag.get_item("APPL", 0x06)) self.assertNotIn(sapdiag_appl_item, sapdiag.get_item("APPL", "ST_R3INFO")) self.assertNotIn(sapdiag_appl_item, sapdiag.get_item("APPL", 0x04, 0x02)) self.assertNotIn(sapdiag_appl_item, sapdiag.get_item("APPL", "ST_USER", 0x02)) self.assertNotIn(sapdiag_appl_item, sapdiag.get_item("APPL", "ST_USER", "CONNECT")) self.assertListEqual([sapdiag_ses_item, sapdiag_appl_item], sapdiag.get_item([0x01, 0x10])) self.assertListEqual([sapdiag_ses_item, sapdiag_appl_item], sapdiag.get_item(["SES", "APPL"])) self.assertIn(sapdiag_appl_item, sapdiag.get_item(["APPL"], [0x04, 0x06])) self.assertIn(sapdiag_appl_item, sapdiag.get_item(["APPL"], ["ST_USER", "ST_R3INFO"])) self.assertIn(sapdiag_appl_item, sapdiag.get_item(["APPL"], 0x04, [0x02, 0x10])) self.assertIn( sapdiag_appl_item, sapdiag.get_item(["APPL"], "ST_USER", ["RFC_PARENT_UUID", "CONNECT"])) self.assertNotIn(sapdiag_appl_item, sapdiag.get_item(["SES", "APPL4"])) self.assertNotIn(sapdiag_appl_item, sapdiag.get_item(["APPL"], ["ST_R3INFO"])) self.assertNotIn(sapdiag_appl_item, sapdiag.get_item(["APPL"], ["ST_USER"], ["CONNECT"])) # Insert a wrong item and observe that the lookup still works sapdiag.message.append(Raw("\x00" * 10)) self.assertIn(sapdiag_ses_item, sapdiag.get_item("SES")) self.assertIn( sapdiag_appl_item, sapdiag.get_item(["APPL"], "ST_USER", ["RFC_PARENT_UUID", "CONNECT"]))
def test_sapdiag_items_lookup(self): """Test lookup and filtering of SAPDiagItems inside a SAPDiag packet""" sapdiag = SAPDiag() sapdiag_ses_item = SAPDiagItem(item_type="SES") sapdiag.message.append(sapdiag_ses_item) sapdiag_appl_item = SAPDiagItem(item_type="APPL", item_id="ST_USER", item_sid="RFC_PARENT_UUID") sapdiag.message.append(sapdiag_appl_item) self.assertIn(sapdiag_ses_item, sapdiag.get_item(0x1)) self.assertIn(sapdiag_ses_item, sapdiag.get_item("SES")) self.assertNotIn(sapdiag_ses_item, sapdiag.get_item(0x10)) self.assertNotIn(sapdiag_ses_item, sapdiag.get_item("APPL")) self.assertIn(sapdiag_appl_item, sapdiag.get_item(0x10)) self.assertIn(sapdiag_appl_item, sapdiag.get_item("APPL")) self.assertIn(sapdiag_appl_item, sapdiag.get_item("APPL", 0x04)) self.assertIn(sapdiag_appl_item, sapdiag.get_item("APPL", "ST_USER")) self.assertIn(sapdiag_appl_item, sapdiag.get_item("APPL", 0x04, 0x10)) self.assertIn(sapdiag_appl_item, sapdiag.get_item("APPL", "ST_USER", 0x10)) self.assertIn(sapdiag_appl_item, sapdiag.get_item("APPL", "ST_USER", "RFC_PARENT_UUID")) self.assertNotIn(sapdiag_appl_item, sapdiag.get_item(0x1)) self.assertNotIn(sapdiag_appl_item, sapdiag.get_item("APPL4")) self.assertNotIn(sapdiag_appl_item, sapdiag.get_item("APPL", 0x06)) self.assertNotIn(sapdiag_appl_item, sapdiag.get_item("APPL", "ST_R3INFO")) self.assertNotIn(sapdiag_appl_item, sapdiag.get_item("APPL", 0x04, 0x02)) self.assertNotIn(sapdiag_appl_item, sapdiag.get_item("APPL", "ST_USER", 0x02)) self.assertNotIn(sapdiag_appl_item, sapdiag.get_item("APPL", "ST_USER", "CONNECT")) self.assertListEqual([sapdiag_ses_item, sapdiag_appl_item], sapdiag.get_item([0x01, 0x10])) self.assertListEqual([sapdiag_ses_item, sapdiag_appl_item], sapdiag.get_item(["SES", "APPL"])) self.assertIn(sapdiag_appl_item, sapdiag.get_item(["APPL"], [0x04, 0x06])) self.assertIn(sapdiag_appl_item, sapdiag.get_item(["APPL"], ["ST_USER", "ST_R3INFO"])) self.assertIn(sapdiag_appl_item, sapdiag.get_item(["APPL"], 0x04, [0x02, 0x10])) self.assertIn(sapdiag_appl_item, sapdiag.get_item(["APPL"], "ST_USER", ["RFC_PARENT_UUID", "CONNECT"])) self.assertNotIn(sapdiag_appl_item, sapdiag.get_item(["SES", "APPL4"])) self.assertNotIn(sapdiag_appl_item, sapdiag.get_item(["APPL"], ["ST_R3INFO"])) self.assertNotIn(sapdiag_appl_item, sapdiag.get_item(["APPL"], ["ST_USER"], ["CONNECT"])) # Insert a wrong item and observe that the lookup still works sapdiag.message.append(Raw("\x00" * 10)) self.assertIn(sapdiag_ses_item, sapdiag.get_item("SES")) self.assertIn(sapdiag_appl_item, sapdiag.get_item(["APPL"], "ST_USER", ["RFC_PARENT_UUID", "CONNECT"]))