def __init__(self, config, session, url=None, parentrequest=None, digestmanager=None, scanlogmanager=None): self.logger = Logger("Scanner") self.config = config self.session = session self.handler = scanhandlers.get(config.scanning.handler) if not url and not parentrequest: raise Exception("url or parentrequest must be provided!") elif not url: self.url = parentrequest.url else: self.url = url self.fileid = None self.parentrequest = parentrequest self.digestmanager = digestmanager self.scanlogmanager = scanlogmanager try: self.timeout = float(self.config.scanning.timeout) except: self.timeout = 0.1 self.headers = {} self.downloaded_filepath = '' self.downloaded_filesize = -1 # an invalid size and can safely be used for "unknown" self.objectage = None self.contenthash = '' self.scan = None self.closepeers = []
def __init__(self, config, session, container_mixin): super(ScanResultContainerManager, self).__init__(config, session, container_mixin) self.scanhandler = scanhandlers.get(config.scanning.handler) self.added_property_name = 'contained' self.timeout = config.container_manager.download_timeout self.singlesd = config.container_manager.process_single_sd in ['True', 'true'] if not self.loaded: # Discard default container from parent class; it had siginfo==None self.ourcontainer = None self._newcontainer(self._determineSiginfo())
def main(args): try: handler = scanhandlers.get(args.scanner) except ImportError: print "no such scanhandler!" print "available scanhandlers:" theglob = os.path.join(os.path.dirname(__file__), "socialscan/scanhandlers/*.py") for filename in glob.glob(theglob): filename = os.path.basename(filename) filename = filename.replace(".py", "") if filename == "__init__": continue print "\t", filename return print "Scanning %s with scanhandler %s" % (args.file_to_scan, args.scanner) malicious, cursiginfo = handler.scan(args.file_to_scan) print malicious, cursiginfo