# coding=utf-8
from core import HackingTool
from core import HackingToolsCollection
from tools.webattack import Web2Attack


class RouterSploit(HackingTool):
    TITLE = "RouterSploit"
    DESCRIPTION = "The RouterSploit Framework is an open-source exploitation " \
                  "framework dedicated to embedded devices"
    INSTALL_COMMANDS = [
        "sudo 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"
    DESCRIPTION = "Websploit is an advanced MITM framework."
    INSTALL_COMMANDS = [
        "sudo 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",
        "cd commix;sudo python setup.py install"
    ]
    RUN_COMMANDS = ["sudo python commix.py --wizard"]
    PROJECT_URL = "https://github.com/commixproject/commix"

    def __init__(self):
        super(Commix, self).__init__(runnable = False)


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