from core import HackingTool, HackingToolsCollection, console
from tools.web_attack import Web2Attack

from rich.panel import Panel
from rich.text import Text
from rich.prompt import Prompt


class RouterSploit(HackingTool):
    TITLE = "RouterSploit"
    DESCRIPTION = "The RouterSploit Framework is an open-source exploitation " \
                  "framework dedicated to embedded devices"
    INSTALL_COMMANDS = [
        "git clone https://github.com/threat9/routersploit.git",
        "cd routersploit && sudo python3 -m pip install -r requirements.txt"
    ]
    RUN_COMMANDS = ["cd routersploit && sudo python3 rsf.py"]
    PROJECT_URL = "https://github.com/threat9/routersploit"


class WebSploit(HackingTool):
    TITLE = "WebSploit"
    SUPPORTED_OS = ["linux"]
    DESCRIPTION = "Websploit is an advanced MITM framework."
    INSTALL_COMMANDS = [
        "git clone https://github.com/The404Hacking/websploit.git;cd websploit/Setup;sudo chmod +x install.sh && sudo bash install.sh"
    ]
    RUN_COMMANDS = ["sudo websploit"]
    PROJECT_URL = "https://github.com/The404Hacking/websploit "


class Commix(HackingTool):
    TITLE = "Commix"
    DESCRIPTION = "Automated All-in-One OS command injection and exploitation " \
                  "tool.\nCommix can be used from web developers, penetration " \
                  "testers or even security researchers\n in order to test " \
                  "web-based applications with the view to find bugs,\n " \
                  "errors or vulnerabilities related to command injection " \
                  "attacks.\n Usage: python commix.py [option(s)]"
    INSTALL_COMMANDS = [
        "git clone https://github.com/commixproject/commix.git commix",
        # Bug 26 fix: was "sudo python setup.py install" (Python 2)
        "cd commix && pip install --user .",
    ]
    # Bug 26 fix: was "sudo python commix.py --wizard" (Python 2)
    RUN_COMMANDS = ["cd commix && sudo python3 commix.py --wizard"]
    PROJECT_URL = "https://github.com/commixproject/commix"

    def __init__(self):
        # Py3-4 fix: super(Commix, self) → super()
        super().__init__(runnable=False)


class ExploitFrameworkTools(HackingToolsCollection):
    TITLE = "Exploit framework"
    TOOLS = [
        RouterSploit(),
        WebSploit(),
        Commix(),
        Web2Attack()
    ]

if __name__ == "__main__":
    tools = ExploitFrameworkTools()
    tools.show_options()
