예제 #1
0
 def openExistingProject(self,
                         projectName: str,
                         projectType: str = "legion") -> Project:
     self.logger.info(f"Opening existing project: {projectName}...")
     database = self.__createDatabase(projectName)
     workingDirectory = f"{ntpath.dirname(projectName)}/"
     outputFolder, _ = self.__determineOutputFolder(projectName,
                                                    projectType)
     runningFolder = self.shell.create_temporary_directory(
         suffix="-running", prefix=projectType + '-', directory="./tmp/")
     (usernameWordList, passwordWordList
      ) = self.__createUsernameAndPasswordWordLists(outputFolder)
     projectProperties = ProjectProperties(
         projectName=projectName,
         workingDirectory=workingDirectory,
         projectType=projectType,
         isTemporary=False,
         outputFolder=outputFolder,
         runningFolder=runningFolder,
         usernamesWordList=usernameWordList,
         passwordWordList=passwordWordList,
         storeWordListsOnExit=True)
     repositoryContainer = self.repositoryFactory.buildRepositories(
         database)
     return Project(projectProperties, repositoryContainer, database)
예제 #2
0
 def setStoreWordListsOnExit(project: Project,
                             storeWordListsOnExit: bool) -> None:
     projectProperties = ProjectProperties(
         projectName=project.properties.projectName,
         workingDirectory=project.properties.workingDirectory,
         projectType=project.properties.projectType,
         isTemporary=project.properties.isTemporary,
         outputFolder=project.properties.outputFolder,
         runningFolder=project.properties.runningFolder,
         usernamesWordList=project.properties.usernamesWordList,
         passwordWordList=project.properties.passwordWordList,
         storeWordListsOnExit=storeWordListsOnExit)
     project.properties = projectProperties
예제 #3
0
    def createNewProject(self, projectType: str, isTemp: bool) -> Project:
        database = self.__createDatabase()
        workingDirectory = self.shell.get_current_working_directory()

        # to store tool output of finished processes
        outputFolder = self.shell.create_temporary_directory(
            prefix="legion-", suffix="-tool-output", directory="./tmp/")

        # to store tool output of running processes
        runningFolder = self.shell.create_temporary_directory(
            prefix="legion-", suffix="-running", directory="./tmp/")

        self.shell.create_directory_recursively(
            f"{outputFolder}/screenshots")  # to store screenshots
        self.shell.create_directory_recursively(
            getNmapRunningFolder(runningFolder))  # to store nmap output
        self.shell.create_directory_recursively(
            f"{runningFolder}/hydra")  # to store hydra output
        self.shell.create_directory_recursively(
            f"{runningFolder}/dnsmap")  # to store dnsmap output

        (usernameWordList, passwordWordList
         ) = self.__createUsernameAndPasswordWordLists(outputFolder)
        repositoryContainer = self.repositoryFactory.buildRepositories(
            database)

        projectName = database.name
        projectProperties = ProjectProperties(projectName,
                                              workingDirectory,
                                              projectType,
                                              isTemp,
                                              outputFolder,
                                              runningFolder,
                                              usernameWordList,
                                              passwordWordList,
                                              storeWordListsOnExit=True)
        return Project(projectProperties, repositoryContainer, database)