Exemplo n.º 1
0
 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
Exemplo n.º 2
0
 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
Exemplo n.º 4
0
    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