def __init__(self, ci_item, parent=None): super(ClassInstanceItemView, self).__init__(parent) self._ci_item = ci_item try: txt = dump_instance(ci_item.ci) except: txt = traceback.format_exc() self.addTab(FixedWidthTextView(txt), "Instance details") self.addTab(FixedWidthTextView(dump_layout(ci_item.cd, ci_item.cl)), "Definition details") # TODO: hack get_parsers() until we have a unified repo/config vv = VstructViewWidget(get_parsers(), self._ci_item.structs, self._ci_item.data) self.addTab(vv, "Structures") hv = HexViewWidget(self._ci_item.data) self.addTab(hv, "Hex view")
def main(type_, path, namespaceName, className, key_specifier=None): if type_ not in ("xp", "win7"): raise RuntimeError("Invalid mapping type: {:s}".format(type_)) c = CIM(type_, path) index = Index(c.cim_type, c.logical_index_store) o = ObjectResolver(c, index) cd = o.get_cd(namespaceName, className) cl = o.get_cl(namespaceName, className) instances = [] if key_specifier: key_values = key_specifier.split(",") key = InstanceKey() for key_value in key_values: if "=" not in key_value: raise RuntimeError("Invalid key specifier: " + str(key_value)) k, _, v = key_value.partition("=") key[k] = v print(str(key)) ci = o.get_ci(namespaceName, className, key) instances.append(ci) else: for instance in o.get_cd_children_ci(namespaceName, className): ci = o.get_ci(namespaceName, className, instance.instance_key) instances.append(ci) for instance in instances: print("%s" % "=" * 80) #print(compute_instance_hash(index, instance)) try: print( dump_instance(instance, encoding='ascii', encoding_errors='ignore')) except: print("ERROR: failed to dump class instance!") print(traceback.format_exc())
def main(type_, path, namespaceName, className, key_specifier=None): if type_ not in ("xp", "win7"): raise RuntimeError("Invalid mapping type: {:s}".format(type_)) c = CIM(type_, path) index = Index(c.cim_type, c.logical_index_store) o = ObjectResolver(c, index) cd = o.get_cd(namespaceName, className) cl = o.get_cl(namespaceName, className) instances = [] if key_specifier: key_values = key_specifier.split(",") key = InstanceKey() for key_value in key_values: if "=" not in key_value: raise RuntimeError("Invalid key specifier: " + str(key_value)) k, _, v = key_value.partition("=") key[k] = v print(str(key)) ci = o.get_ci(namespaceName, className, key) instances.append(ci) else: for instance in o.get_cd_children_ci(namespaceName, className): ci = o.get_ci(namespaceName, className, instance.instance_key) instances.append(ci) for instance in instances: print("%s" % "=" * 80) #print(compute_instance_hash(index, instance)) try: print(dump_instance(instance)) except: print("ERROR: failed to dump class instance!") print(traceback.format_exc())