Exemple #1
0
def knockpy():
    info("\n\nRunning Knock \n")
    knockpyCmd = "python {} -c {}".format(
        os.path.join(script_path, "bin/knockpy/knockpy/knockpy.py"), domain)
    debug("\nRunning Command:  {}".format(knockpyCmd))
    os.system(knockpyCmd)
    rootdomainStrip = domain.replace(".", "_")
    knockpyFilenameInit = "{}_knock.csv".format(output_base)
    os.system("mv {}* {}".format(rootdomainStrip, knockpyFilenameInit))
    time.sleep(1)
    knockpySubs = []
    try:
        with open(knockpyFilenameInit, "rt") as f:
            reader = csv.reader(f, delimiter=",")
            for row in reader:
                knockpySubs.append(row[3])
        filenameKnocktxt = "{}.txt".format(knockpyFilenameInit)
        f1 = open(filenameKnocktxt, "w")
        for hosts in knockpySubs:
            hosts = "".join(hosts)
            f1.writelines("\n" + hosts)
        f1.close()
    except:
        error("\nKnock File Error\n")
    time.sleep(1)
Exemple #2
0
def distroIsSupported(pkg):
    color.debug(getDistro())
    if pkg['distros']:
        return (getDistro() in pkg['distros']) or (pkg['distros'] == ["all"])
    else:
        color.warn("Supported distros not specified, assuming this distro is supported.....")
        return True
Exemple #3
0
def isInMainRepo(pkgname, paths):
    if getCachedPackageMainRepoInfo(paths[2], paths[0], pkgname):
        color.debug("Found in main repo cache")
        return True
    else:
        color.debug("Not found in main repo cache")
        return False
Exemple #4
0
def writeFiles(name):
    """Writes info of all hosts from subhosts
    """
    subdomainCounter = 0
    subdomainAllFile = "{}-all.txt".format(output_base)
    fileExt = {
        "sublist3r": ".txt",
        "knock": ".csv.txt",
        "enumall": ".lst",
        "massdns": ".txt",
        "amass": ".txt",
        "subfinder": ".txt",
    }
    fileName = output_base + "_" + name + fileExt[name]

    debug("\n Opening %s File" % name)
    try:
        with open(fileName, "r") as f:
            SubHosts = f.read().splitlines()

        with open(subdomainAllFile, "a") as f:
            f.writelines("\n\n" + name)
            for hosts in SubHosts:
                hosts = "".join(hosts)
                f.writelines("\n" + hosts)
                subdomainCounter = subdomainCounter + 1
        os.remove(fileName)
        info("\n{} Subdomains discovered by {}".format(subdomainCounter, name))
    except:
        error("\nError Opening %s File!\n" % name)
    return subdomainCounter
Exemple #5
0
def subdomainfile():
    subdomainAllFile = "{}-all.txt".format(output_base)
    names = ["sublist3r", "knock", "enumall", "massdns", "amass", "subfinder"]

    for name in names:
        writeFiles(name)

    debug("\nCombining Domains Lists\n")
    with open(subdomainAllFile, "r") as domainList:
        uniqueDomains = set(domainList)
        domainList.close()
        subdomainUniqueFile = "{}-unique.txt".format(output_base)
        uniqueDomainsOut = open(subdomainUniqueFile, "w")
        for domains in uniqueDomains:
            domains = domains.replace("\n", "")
            if domains.endswith(domain):
                uniqueDomainsOut.writelines("https://{}\n".format(domains))
                if ports is not False:
                    uniqueDomainsOut.writelines(
                        "https://{}:8443\n".format(domains))
                if secure is False:
                    uniqueDomainsOut.writelines("http://{}\n".format(domains))
                    if ports is not False:
                        uniqueDomainsOut.writelines(
                            "http://{}:8080\n".format(domains))
    time.sleep(1)
    rootdomainStrip = domain.replace(".", "_")
    info("\nCleaning Up Old Files\n")
    try:
        os.system("rm {}*".format(domain))
        os.system("rm {}*".format(rootdomainStrip))
    except:
        error("\nError Removing Files!\n")
    if not noeyewitness:
        eyewitness(subdomainUniqueFile)
Exemple #6
0
def installPackage(flags, paths, args):
    if os.path.exists(args[0]):
        installLocalPackage(flags, paths, args)
        quit()
    
    if os.path.exists(f"{paths[0]}/{args[0].lower()}") and not flags.fresh:
        updatePackage(flags, paths, *args)
        quit()

    color.isDebug = flags.debug

    args[0] = args[0].lower()
    
    if not os.path.exists(f"{paths[2]}/R2Boyo25"):
        downloadMainRepo(paths[2])

    packagename = args[0]

    if ":" in packagename:
        branch = None
        commit = packagename.split(":")[-1]
        packagename = packagename.split(":")[0]
    elif packagename.count("/") > 1:
        branch = packagename.split("/")[-1]
        packagename = "/".join(packagename.split(":")[:-1])
        commit = None
    elif ( ":" in packagename ) and ( packagename.count("/") > 1 ):
        commit = packagename.split(":")[-1]
        packagename = packagename.split(":")[0]
        branch = packagename.split("/")[-1]
        packagename = "/".join(packagename.split(":")[:-1])
    else:
        branch = None
        commit = None
    
    args[0] = packagename

    color.note("Deleting old binaries and source files.....")
    deletePackage(paths[0], paths[1], args[0], paths, branch = branch, commit = commit)
    color.note("Downloading from github.....")
    color.debug(paths[0], "https://github.com/" + args[0], args[0])
    downloadPackage(paths[0], "https://github.com/" + args[0], args[0], branch = branch, commit = commit)
            
    if isInMainRepo(args[0], paths) and not isAvalonPackage(args[0], paths[0], args[0]):
        color.note("Package is not an Avalon package, but it is in the main repository... installing from there.....")
        moveMainRepoToAvalonFolder(paths[2], args[0], paths[0], paths)
    else:
        color.debug("Not in the main repo")
    
    checkReqs(paths, args[0])

    installDeps(flags, paths, args)

    if not flags.noinstall:
        color.note("Beginning compilation/installation.....")
        compilePackage(paths[0], paths[1], args[0], paths, flags)
        color.success("Done!")
    else:
        color.warn("-ni specified, skipping installation/compilation")
Exemple #7
0
def archIsSupported(pkg):
    color.debug(str(pkg))
    color.debug(getArch())
    if pkg['arches']:
        return (getArch() in pkg['arches']) or (pkg['arches'] == ["all"])
    else:
        color.warn("Supported arches not specified, assuming this arch is supported.....")
        return True
Exemple #8
0
def downloadMainRepo(cacheDir):
    #shutil.rmtree(cacheDir)
    if os.path.exists(f"{cacheDir}/R2Boyo25"):
        color.debug(f"cd {cacheDir}; git pull")
        os.system(f"cd {cacheDir}; git pull")
    else:
        color.debug(f"git clone --depth 1 https://github.com/r2boyo25/AvalonPMPackages \"{cacheDir}\" -q")
        os.system(f"git clone --depth 1 https://github.com/r2boyo25/AvalonPMPackages \"{cacheDir}\" -q")
Exemple #9
0
def getCachedPackageInfo(cacheFolder, srcFolder, pkgname):
    if getCachedPackageMainRepoInfo(cacheFolder, srcFolder, pkgname):
        return getCachedPackageMainRepoInfo(cacheFolder, srcFolder, pkgname)
    elif getCachedPackageRepoInfo(cacheFolder, srcFolder, pkgname):
        return getCachedPackageRepoInfo(cacheFolder, srcFolder, pkgname)
    else:
        color.debug("Not cached")
        return False
Exemple #10
0
def enumall():
    info("\n\nRunning Enumall \n")
    enumallCMD = "python {} {}".format(
        os.path.join(script_path, "bin/domain/enumall.py"), domain)
    debug("\nRunning Command: {}".format(enumallCMD))
    os.system(enumallCMD)
    info("\nenumall Complete")
    time.sleep(1)
Exemple #11
0
def copyFilesToFiles(paths, pkgname, files = ['all']):
    color.debug(str(files))
    if files != ['all']:
        for file in files:
            copyFile(paths[0] + '/' + pkgname + '/' + file, paths[4] + '/' + pkgname + '/' + file)
    else:
        for file in os.listdir(paths[0] + '/' + pkgname + '/'):
            copyFile(paths[0] + '/' + pkgname + '/' + file, paths[4] + '/' + pkgname + '/' + file)
Exemple #12
0
def getMainRepoPackageInfo(pkgname):
    r = requests.get(f'https://raw.githubusercontent.com/R2Boyo25/AvalonPMPackages/master/{pkgname}/package')
    color.debug(f'https://raw.githubusercontent.com/R2Boyo25/AvalonPMPackages/master/{pkgname}/package')    
    color.debug(r.text)
    if not "404" in r.text:
        return r.json()
    else:
        raise e404("Main")
Exemple #13
0
def installPipDeps(deps):
    try:
        deps['pip']
    except:
        return
    color.note('Found pip dependencies, installing.....')
    depss = " ".join( deps['pip'] )
    color.debug(f"pip3 install{' --user' if os.path.exists('/etc/portage') else ''} {depss}")
    os.system(f"pip3 install{' --user' if os.path.exists('/etc/portage') else ''} {depss}")
Exemple #14
0
def getPackageInfo(paths, pkgname, commit = None, branch = None):
    color.debug(pkgname)
    color.debug(str(paths))
    if getCachedPackageInfo(paths[2], paths[0], pkgname):
        return NPackage(getCachedPackageInfo(paths[2], paths[0], pkgname))
    else:
        try:
            return NPackage(getRepoPackageInfo(pkgname, commit = commit, branch = branch))
        except:
            return NPackage(getMainRepoPackageInfo(pkgname))
Exemple #15
0
def getCachedPackageRepoInfo(cacheFolder, srcFolder, pkgname):
    if os.path.exists(f"{srcFolder}/{pkgname}/.avalon/package"):
        #color.debug("Loading from src;", f"{srcFolder}/{pkgname}/.avalon/package")
        with open(f"{srcFolder}/{pkgname}/.avalon/package", 'r') as pkgfile:
            try:
                return json.loads(pkgfile.read())
            except Exception as e:
                color.debug("Content: " + pkgfile.read())
                raise e
    else:
        return False
Exemple #16
0
def getCachedPackageMainRepoInfo(cacheFolder, srcFolder, pkgname):
    #color.debug(f"{cacheFolder}/{pkgname}/package")
    #color.debug(case.case.getCaseInsensitivePath(f"{cacheFolder}/{pkgname}/package"))
    if os.path.exists(case.case.getCaseInsensitivePath(f"{cacheFolder}/{pkgname}/package")):
        #color.debug("Loading from main repo cache")
        with open(case.case.getCaseInsensitivePath(f"{cacheFolder}/{pkgname}/package"), 'r') as pkgfile:
            try:
                return json.loads(pkgfile.read())
            except Exception as e:
                color.debug(pkgfile.read())
                raise e
Exemple #17
0
def amass(rerun=0):
    if which("amass"):
        info("\n\nRunning Amass \n")
        amassFileName = "{}_amass.txt".format(output_base)
        amassCmd = "amass enum -d {} -o {}".format(domain, amassFileName)
        debug("\nRunning Command: {}".format(amassCmd))
        os.system(amassCmd)
        info("\nAmass Complete")
        time.sleep(1)
    else:
        warning("\n\nmass is not currently in your $PATH \n")
        if check_gopath("amass", "github.com/OWASP/Amass/...") and rerun != 1:
            amass(rerun=1)
Exemple #18
0
def subfinder(rerun=0):
    if which("subfinder"):
        info("\n\nRunning Subfinder \n")
        subfinderFileName = "{}_subfinder.txt".format(output_base)
        subfinderCmd = "subfinder -d {} -o {}".format(domain,
                                                      subfinderFileName)
        debug("\nRunning Command: {}".format(subfinderCmd))
        os.system(subfinderCmd)
        info("\nsubfinder Complete")
        time.sleep(1)
    else:
        warning("\n\nubfinder is not currently in your $PATH \n")
        if check_gopath("subfinder",
                        "github.com/subfinder/subfinder") and rerun != 1:
            subfinder(rerun=1)
Exemple #19
0
def sublist3r(brute=False):
    info("\n\nRunning Sublist3r \n")
    sublist3rFileName = "{}_sublist3r.txt".format(output_base)
    Subcmd = "python {} -v -t 15 {} -d {} -o {}".format(
        os.path.join(script_path, "bin/Sublist3r/sublist3r.py"),
        "-b" if brute else "",
        domain,
        sublist3rFileName,
    )
    debug("\nRunning Command: {}".format(Subcmd))
    os.system(Subcmd)
    info("\nSublist3r Complete")
    time.sleep(1)
    if brute:
        eyewitness(sublist3rFileName)
Exemple #20
0
def updatePackage(flags, paths, *args):
    "Update to newest version of a repo, then recompile + reinstall program"

    args = list(args)

    if len(args) == 0:
        args.append("r2boyo25/avalonpackagemanager")

    #if not os.path.exists(f"{paths[0]}/{args[0].lower()}"):
    #    installPackage(flags, paths, args)
    #    quit()

    if not os.path.exists(f"{paths[2]}/R2Boyo25"):
        downloadMainRepo(paths[2])

    color.isDebug = flags.debug

    args[0] = args[0].lower()

    #color.note("Deleting old binaries and source files.....")
    #deletePackage(paths[0], paths[1], args[0], paths, branch = branch, commit = commit)
    #rmFromBin(paths[1], packagename, paths)

    color.note("Pulling from github.....")
    #color.debug(paths[0], "https://github.com/" + args[0], args[0])

    if os.system(f"cd {paths[0]}/{args[0]}; git pull"):
        if os.system(f"cd {paths[0]}/{args[0]}; git reset --hard; git pull"):
            error("Git error")

    #downloadPackage(paths[0], "https://github.com/" + args[0], args[0], branch = branch, commit = commit)
            
    if isInMainRepo(args[0], paths):
        color.note("Package is not an Avalon package, but it is in the main repository... installing from there.....")
        moveMainRepoToAvalonFolder(paths[2], args[0], paths[0], paths)
    else:
        color.debug("Not in the main repo")
    
    checkReqs(paths, args[0])

    installDeps(flags, paths, args)

    if not flags.noinstall:
        color.note("Beginning compilation/installation.....")
        compilePackage(paths[0], paths[1], args[0], paths, flags)
        color.success("Done!")
    else:
        color.warn("-ni specified, skipping installation/compilation")
Exemple #21
0
def massdns():
    info("\n\nRunning massdns \n")
    word_file = os.path.join(
        script_path,
        "bin/sublst/all.txt" if bruteall else "bin/sublst/sl-domains.txt")
    massdnsCMD = "python {} {} {} | {} -r resolvers.txt -t A -o S -w {}-massdns.txt".format(
        os.path.join(script_path, "bin/subbrute/subbrute.py"),
        word_file,
        domain,
        os.path.join(script_path, "bin/massdns/bin/massdns"),
        output_base,
    )
    debug("\nRunning Command: {}".format(massdnsCMD))
    os.system(massdnsCMD)
    info("\nMasscan Complete")
    time.sleep(1)
Exemple #22
0
def downloadPackage(srcFolder, packageUrl, packagename = None, branch = None, commit = None):
    if not packagename: 
        packagename = packageUrl.lstrip("https://github.com/")
    color.debug(packagename)
    os.chdir(srcFolder)
    if commit and branch:
        os.system('git clone ' + packageUrl + ' ' + packagename + " -q")
        os.system(f"cd {packagename}; git reset --hard {commit}")
    elif branch:
        packagename = "/".join(packagename.split(":")[:-1])
        os.system('git clone --depth 1 ' + packageUrl + ' ' + packagename + " -q -b " + branch)
    elif commit:
        os.system('git clone ' + packageUrl + ' ' + packagename + " -q")
        os.system(f"cd {packagename}; git reset --hard {commit}")
    else:
        os.system('git clone --depth 1 ' + packageUrl + ' ' + packagename + " -q")
Exemple #23
0
def eyewitness(filename):
    info("\n\nRunning EyeWitness  \n")
    EWHTTPScriptIPS = "python {} -f {} {} --no-prompt --web  -d {}-{}-EW".format(
        os.path.join(script_path, "bin/EyeWitness/Python/EyeWitness.py"),
        filename,
        "--active-scan" if active else "",
        output_base,
        time.strftime("%m-%d-%y-%H-%M"),
    )
    if vpn:
        info(
            "\nIf not connected to VPN manually run the following command on reconnect:\n{}"
            .format(EWHTTPScriptIPS))
        vpncheck()
    debug("\nRunning Command: {}".format(EWHTTPScriptIPS))
    os.system(EWHTTPScriptIPS)
    print("\a")
Exemple #24
0
def installBuildDepDeps(deps):
    try:
        deps['build-dep']
    except:
        return
    if deps['build-dep']:
        color.note("Found build-dep (apt) dependencies, installing..... (this will require your password)")
        depss = " ".join( deps['build-dep'] )

        username = getpass.getuser()

        if username != 'root' and not username.startswith("u0_a"):
            color.debug(f'sudo apt build-dep -y {depss}')
            if os.system(f'sudo apt build-dep -y {depss}'):
                error("apt error")
        else:
            color.debug(f'apt build-dep -y {depss}')
            if os.system(f'apt build-dep -y {depss}'):
                error("apt error")
Exemple #25
0
def installAptDeps(deps):
    try:
        deps['apt']
    except:
        return
    if deps['apt']:
        filtered_deps = aptFilter(deps['apt'])
        if len(filtered_deps) > 0:
            color.note("Found apt dependencies, installing..... (this will require your password)")
            depss = " ".join(filtered_deps)

            username = getpass.getuser()

            if username != 'root' and not username.startswith("u0_a"):
                color.debug(f'sudo apt install -y {depss}')
                os.system(f'sudo apt install -y {depss}')
            else:
                color.debug(f'apt install -y {depss}')
                os.system(f'apt install -y {depss}')
Exemple #26
0
def runScript(script, *args):
    langs = {
        'py':'python3',
        'sh':'bash'
    }

    if os.path.exists('/etc/portage'):
        with open(script, "r") as r:
            e = r.read()
            with open(script, "w") as w:
                w.write(e.replace("pip3 install", "pip3 install --user").replace("pip install", "pip install --user"))

    argss = " ".join([f"{arg}" for arg in args])

    if script.split('.')[-1].lower() in langs:
        color.debug(f"{langs[script.split('.')[-1]]} {script} {argss}")
        return os.system(f"{langs[script.split('.')[-1]]} {script} {argss}")
    else:
        color.debug(f'{langs["sh"]} {script} {argss}')
        return os.system(f'{langs["sh"]} {script} {argss}')
Exemple #27
0
def redoBin(flags, paths, *args):
    "Redo making of symlinks without recompiling program"
    args = list(args)

    color.isDebug = flags.debug

    args[0] = args[0].lower()

    packagename = args[0]
    binFolder = paths[1]
    srcFolder = paths[0]
    pkg = getPackageInfo(paths, packagename)
    color.debug(packagename, binFolder, srcFolder, str(pkg))
    rmFromBin(binFolder, packagename, paths, pkg = pkg)

    if pkg['binfile']:

        mvBinToBin(binFolder, paths[4]+packagename, srcFolder + "/" + packagename + "/", pkg['binfile'], pkg['binname'])
        
    else:

        mvBinToBin(binFolder, paths[4]+packagename, srcFolder + "/" + packagename + "/", pkg['binname'], pkg['binname'])
Exemple #28
0
def moveMainRepoToAvalonFolder(cacheFolder, pkgname, srcFolder, paths):
    color.debug(pkgname)
    color.debug("Moving to .avalon folder")
    color.debug(srcFolder + "/" + pkgname + "/.avalon")
    shutil.rmtree(srcFolder + "/" + pkgname + "/.avalon", ignore_errors = True)
    if isInMainRepo(pkgname, paths):
        color.debug(case.case.getCaseInsensitivePath(cacheFolder + "/" + pkgname), srcFolder + "/" + pkgname + '/.avalon')
        shutil.copytree(case.case.getCaseInsensitivePath(cacheFolder + "/" + pkgname), srcFolder + "/" + pkgname + '/.avalon')
Exemple #29
0
def rmFromBin(binFolder, packagename, paths, pkg = None, commit = None, branch = None):
    color.debug("RMBIN:", packagename)
    if not pkg:
        pkg = getPackageInfo(paths, packagename, commit, branch)
    if 'binname' in pkg.keys():
        color.debug(f"{binFolder}/{pkg['binname']}")
        if os.path.exists(f"{binFolder}/{pkg['binname']}"):
            color.debug("Deleting", f"{binFolder}/{pkg['binname']}")
            os.remove(f"{binFolder}/{pkg['binname']}")
Exemple #30
0
def mvBinToBin(binFolder, fileFolder, srcFolder, binFile, binName):
    #if color.isDebug:
    #    error(str(binFolder), str(fileFolder), str(binFile), str(binName))
    try:
        shutil.copyfile(srcFolder + "/" + binFile, fileFolder+'/'+binName.split('/')[-1])
    except:
        pass

    if os.path.exists(binFolder + binName.split('/')[-1]) or os.path.lexists(binFolder + binName.split('/')[-1]):
        os.remove(binFolder + binName.split('/')[-1])
    
    #os.symlink(fileFolder+'/'+binName, binFolder + binName.split('/')[-1])
    os.symlink(fileFolder+'/'+binFile, binFolder + binName.split('/')[-1])

    #with open(binFolder + binName, 'w') as f:
    #    f.write(f'#!/bin/bash\nOWD="$(pwd)"\ncd {fileFolder}\n./{binName}\ncd $OWD')
    #st = os.stat(binFolder + '/' + binName.split('/')[-1])
    #os.chmod(binFolder + '/' + binName.split('/')[-1], st.st_mode ^ 111)
    
    #os.chmod(fileFolder + '/' + binName.split('/')[-1], 755)
    #color.debug(f"chmod +x {fileFolder + '/' + binName.split('/')[-1]}")
    #os.system(f"chmod +x {fileFolder + '/' + binName.split('/')[-1]}")
    color.debug(f"chmod +x {fileFolder + '/' + binFile}")
    os.system(f"chmod +x {fileFolder + '/' + binFile}")