コード例 #1
0
 def saveHomeOption(self):
     # If saveHome == True --> Get 'savePath' Path
     savePath = self.getSavePath()
     if not FileUtils.exists(savePath):  # Check Existence
         FileUtils.createDirectory(savePath)
     if FileUtils.exists(
             savePath) and not FileUtils.isDir(savePath):  # Check Status
         self.output.error(
             "NOT Available ! {} is a File, Should be a Directory.\nPlease Check Again."
             .format(savePath))
         exit(1)
     if not FileUtils.canWrite(savePath):  # Check Writability
         self.output.error(
             "Directory {} is Not Writable.\nPlease Check Again.".format(
                 savePath))
         exit(1)
     return savePath
コード例 #2
0
ファイル: ArgumentParser.py プロジェクト: linxon/dirsearch
    def parseConfig(self):
        config = DefaultConfigParser()
        configPath = FileUtils.buildPath(os.path.expanduser('~'), ".dirsearch", "dirsearch.conf")

        if not FileUtils.exists(configPath):
            FileUtils.createDirectory(os.path.dirname(configPath))
            shutil.copyfile(FileUtils.buildPath(self.script_path, 'default.conf'), configPath)

        config.read(configPath)

        # General
        self.threadsCount = config.safe_getint("general", "threads", 10, list(range(1, 50)))
        self.excludeStatusCodes = config.safe_get("general", "exclude-status", None)
        self.redirect = config.safe_getboolean("general", "follow-redirects", False)
        self.recursive = config.safe_getboolean("general", "recursive", False)
        self.recursive_level_max = config.safe_getint("general", "recursive-level-max", 1)
        self.suppressEmpty = config.safe_getboolean("general", "suppress-empty", False)
        self.testFailPath = config.safe_get("general", "scanner-fail-path", "").strip()
        self.saveHome = config.safe_getboolean("general", "save-logs-home", False)

        # Reports
        self.autoSave = config.safe_getboolean("reports", "autosave-report", False)
        self.autoSaveFormat = config.safe_get("reports", "autosave-report-format", "plain", ["plain", "json", "simple"])
        # Dictionary
        self.wordlist = config.safe_get("dictionary", "wordlist",
                                        FileUtils.buildPath(self.script_path, "db", "dicc.txt"))
        self.lowercase = config.safe_getboolean("dictionary", "lowercase", False)
        self.forceExtensions = config.safe_get("dictionary", "force-extensions", False)

        # Connection
        self.useRandomAgents = config.safe_get("connection", "random-user-agents", False)
        self.useragent = config.safe_get("connection", "user-agent", None)
        self.delay = config.safe_get("connection", "delay", 0)
        self.timeout = config.safe_getint("connection", "timeout", 30)
        self.maxRetries = config.safe_getint("connection", "max-retries", 5)
        self.proxy = config.safe_get("connection", "http-proxy", None)
        self.httpmethod = config.safe_get("connection", "httpmethod", "get", ["get", "head", "post"])
        self.requestByHostname = config.safe_get("connection", "request-by-hostname", False)
コード例 #3
0
    def setupBatchReports(self):
        self.batch = True
        self.batchSession = "Batch-{0}".format(
            time.strftime('%y-%m-%d_%H-%M-%S'))
        self.batchDirectoryPath = FileUtils.createPath(
            self.savePath, "reports", self.batchSession)

        if not FileUtils.exists(self.batchDirectoryPath):
            FileUtils.createDirectory(self.batchDirectoryPath)
            if not FileUtils.exists(self.batchDirectoryPath):
                self.output.error("Cannot Create Batch Folder {}".format(
                    self.batchDirectoryPath))
                sys.exit(1)

        if FileUtils.canWrite(self.batchDirectoryPath):
            FileUtils.createDirectory(self.batchDirectoryPath)
            targetsFile = FileUtils.createPath(self.batchDirectoryPath,
                                               "Target-URL-List.txt")
            FileUtils.writeLines(targetsFile, self.arguments.urlList)
        else:
            self.output.error("Cannnot Write Batch Folder {}.".format(
                self.batchDirectoryPath))
            sys.exit(1)
コード例 #4
0
    def getReportsPath(self, requester):
        if self.arguments.autoSave:  # Default True
            basePath = ('/'
                        if requester.basePath is '' else requester.basePath)
            basePath = basePath.replace(os.path.sep, '.')[1:-1]

            # Generate File Name & Directory Path
            fileName = None
            directoryPath = None
            if self.batch:
                fileName = requester.host
                directoryPath = self.batchDirectoryPath
            else:
                fileName = ('{}_'.format(basePath)
                            if basePath is not '' else '')
                fileName += time.strftime('%y-%m-%d_%H-%M-%S')
                directoryPath = FileUtils.createPath(self.savePath, 'reports',
                                                     requester.host)

            if not FileUtils.exists(directoryPath):
                FileUtils.createDirectory(directoryPath)
                if not FileUtils.exists(directoryPath):
                    self.output.error("Cannot Create Reports Folder {}".format(
                        directoryPath))
                    sys.exit(1)

            # Generate Reports File Path
            outputFile = FileUtils.createPath(directoryPath, fileName)

            # Rename If Duplicate File is Found In Target Directory
            if FileUtils.exists(outputFile):
                i = 2
                while FileUtils.exists(outputFile + "_" + str(i)):
                    i += 1
                outputFile += "_" + str(i)

        return outputFile, directoryPath