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)
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
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)