def __check_app_directory(self, extension_dirs): """Checks each directory in self.dirs for stuff """ extensions = [] for root, dirs, files in walk(extension_dirs): for f in files: if f == 'manifest.json': manifest = path.join(root, f) name, version, extension = self.__process_manifest_json(manifest) if name[0] == '_': # Check locale for more friendlier name locale_paths = [ '_locales{0}en_US{0}messages.json'.format(self.os.SLASH), '_locales{0}en{0}messages.json'.format(self.os.SLASH)] for locale_path in locale_paths: locale_json = path.join(root, locale_path) if path.isfile(locale_json): with open(locale_json, 'rb') as f: locale_manifest = json.load(f) if 'appName' in locale_manifest: if 'message' in locale_manifest['appName']: name = locale_manifest['appName']['message'] elif 'extName' in locale_manifest: if 'message' in locale_manifest['extName']: name = locale_manifest['extName']['message'] elif 'app_name' in locale_manifest: if 'message' in locale_manifest['app_name']: name = locale_manifest['app_name']['message'] #e = Extension(self.os.CHROME_NAME, name, version, None, extension) e = Extension(name, version, None, extension) extensions.append(e.todict()) return extensions
def __init__(self): self.rootTreeNode = TreeNode(-1, 0, 'ROOT') self.allNodes = [] self.allTrees = [] self.allTrees_separated = [] self.moduleStatistic = {} self.extensionParse = Extension() self.treeNumber = 0 self.nodeNumber = 0
def extensions(self): """Main method which handles the processing of extentsions """ extensions = [] if self.find(): """Internet Explorer has a bunch of registry keys for extensions, so we'll hold two connections open for the querying""" hklm = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE) hkcu = _winreg.ConnectRegistry(None, _winreg.HKEY_CURRENT_USER) for registry_key in self.os.IE_REGKEYS: key = None idx = 0 if registry_key['hive_str'] == 'HKLM': hive = hklm elif registry_key['hive_str'] == 'HKCU': hive = hkcu try: key = _winreg.OpenKey(hive, registry_key['path']) while True: if registry_key['type'] == 'key': entry = _winreg.EnumKey(key, idx) clsid_key = '{}\\{}'.format(registry_key['path'], entry) """For registry keys of type 'key', we open the key and attempt to find a specific ClsidExtension value to use as the CLSID. If it fails, we just use the key name itself. """ clsid = self.__get_clsid(hive, clsid_key) if not clsid: clsid = entry else: clsid = _winreg.EnumValue(key, idx)[0] id, name, dll = self.__lookup_clsid(clsid) #e = Extension(self.os.IE_NAME, name, None, dll, id) e = Extension(name, None, dll, id) extensions.append(e.todict()) idx += 1 except WindowsError: pass else: print '[!] Could not find Internet Explorer Extensions!' return extensions
def __check_preferences_json(self, preferences): """Pulls Extension information out of the preferences file """ extensions = [] with open(preferences, 'rb') as f: prefs_json = json.load(f) extensions_json = prefs_json['extensions']['settings'] for extension in extensions_json.iterkeys(): name = None version = None if 'manifest' in extensions_json[extension]: name = extensions_json[extension]['manifest']['name'] version = extensions_json[extension]['manifest']['version'] #e = Extension(self.os.CHROME_NAME, name, version, None, extension) e = Extension(name, version, None, extension) extensions.append(e.todict()) return extensions
def __init__(self): self.allTreeNodes = [] self.allTrees = [] self.extensionParse = Extension() return