def execute(self): if len(self.args)<2: yield self.help() return case = self.environment._CASE scanners = [] for i in range(1,len(self.args)): scanners.extend(fnmatch.filter(Registry.SCANNERS.scanners, self.args[i])) scanners = ScannerUtils.fill_in_dependancies(scanners) Scanner.scan_inode(case, self.args[0], scanners, force = True, cookie=time.time())
def scan(self, fd, scanners, type, mime, cookie, **args): if "gzip" in type: new_path = "%s/%s" % (fd.urn, self.find_gzipped_filename(fd, type)) new_fd = CacheManager.AFF4_MANAGER.create_cache_fd(self.case, new_path) gz = gzip.GzipFile(fileobj=fd, mode='r') while 1: data = gz.read(1024*1024) if not data: break new_fd.write(data) new_fd.close() ## Now scan the new fd Scanner.scan_inode(self.case, new_fd.inode_id, scanners)
def run(self,case=None, inode_id=0, scanners=None, cookie=1, *args, **kwargs): if scanners: Scanner.scan_inode(case, inode_id, scanners, cookie)