Upload 5 files
Browse files- Dockerfile +8 -24
- kali_server.py +1 -66
- mcp_server.py +1 -35
Dockerfile
CHANGED
|
@@ -20,14 +20,11 @@ RUN apt-get update && apt-get install -y \
|
|
| 20 |
wpscan \
|
| 21 |
enum4linux-ng \
|
| 22 |
aircrack-ng \
|
| 23 |
-
androguard \
|
| 24 |
bettercap \
|
| 25 |
binwalk \
|
| 26 |
hashcat \
|
| 27 |
-
impacket-scripts \
|
| 28 |
masscan \
|
| 29 |
radare2 \
|
| 30 |
-
routersploit \
|
| 31 |
sherlock \
|
| 32 |
wireshark \
|
| 33 |
zaproxy \
|
|
@@ -38,27 +35,14 @@ RUN apt-get update && apt-get install -y \
|
|
| 38 |
RUN pip3 install --break-system-packages \
|
| 39 |
androguard \
|
| 40 |
XSStrike \
|
| 41 |
-
dalfox
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
# Install TheFatRat (requires special handling)
|
| 50 |
-
RUN git clone https://github.com/Screetsec/TheFatRat.git /opt/TheFatRat && \
|
| 51 |
-
chmod +x /opt/TheFatRat/*.sh
|
| 52 |
-
|
| 53 |
-
# Install wifipumpkin3
|
| 54 |
-
RUN git clone https://github.com/P0cL4bs/wifipumpkin3.git /opt/wifipumpkin3 && \
|
| 55 |
-
cd /opt/wifipumpkin3 && \
|
| 56 |
-
python3 setup.py install
|
| 57 |
-
|
| 58 |
-
# Note: Skipping installation of large/complex tools like:
|
| 59 |
-
# - ghidra (very large, ~1GB)
|
| 60 |
-
# - Mobile-Security-Framework-MobSF (requires additional setup)
|
| 61 |
-
# These can be added later if specifically needed
|
| 62 |
|
| 63 |
# Set working directory
|
| 64 |
WORKDIR /app
|
|
|
|
| 20 |
wpscan \
|
| 21 |
enum4linux-ng \
|
| 22 |
aircrack-ng \
|
|
|
|
| 23 |
bettercap \
|
| 24 |
binwalk \
|
| 25 |
hashcat \
|
|
|
|
| 26 |
masscan \
|
| 27 |
radare2 \
|
|
|
|
| 28 |
sherlock \
|
| 29 |
wireshark \
|
| 30 |
zaproxy \
|
|
|
|
| 35 |
RUN pip3 install --break-system-packages \
|
| 36 |
androguard \
|
| 37 |
XSStrike \
|
| 38 |
+
dalfox \
|
| 39 |
+
impacket \
|
| 40 |
+
routersploit
|
| 41 |
+
|
| 42 |
+
# Note: Removed complex tools that cause build issues:
|
| 43 |
+
# - TheFatRat (cloned repo, complex setup)
|
| 44 |
+
# - wifipumpkin3 (setup.py issues)
|
| 45 |
+
# These can be installed manually if needed
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 46 |
|
| 47 |
# Set working directory
|
| 48 |
WORKDIR /app
|
kali_server.py
CHANGED
|
@@ -787,49 +787,7 @@ def sherlock():
|
|
| 787 |
"error": f"Server error: {str(e)}"
|
| 788 |
}), 500
|
| 789 |
|
| 790 |
-
@app.route("/api/tools/thefatrat", methods=["POST"])
|
| 791 |
-
def thefatrat():
|
| 792 |
-
"""Execute TheFatRat with the provided parameters."""
|
| 793 |
-
try:
|
| 794 |
-
params = request.json
|
| 795 |
-
additional_args = params.get("additional_args", "")
|
| 796 |
-
|
| 797 |
-
command = f"cd /opt/TheFatRat && ./fatrat {additional_args}"
|
| 798 |
-
|
| 799 |
-
result = execute_command(command)
|
| 800 |
-
return jsonify(result)
|
| 801 |
-
except Exception as e:
|
| 802 |
-
logger.error(f"Error in thefatrat endpoint: {str(e)}")
|
| 803 |
-
logger.error(traceback.format_exc())
|
| 804 |
-
return jsonify({
|
| 805 |
-
"error": f"Server error: {str(e)}"
|
| 806 |
-
}), 500
|
| 807 |
|
| 808 |
-
@app.route("/api/tools/wifipumpkin3", methods=["POST"])
|
| 809 |
-
def wifipumpkin3():
|
| 810 |
-
"""Execute wifipumpkin3 with the provided parameters."""
|
| 811 |
-
try:
|
| 812 |
-
params = request.json
|
| 813 |
-
interface = params.get("interface", "")
|
| 814 |
-
config = params.get("config", "")
|
| 815 |
-
additional_args = params.get("additional_args", "")
|
| 816 |
-
|
| 817 |
-
command = "wifipumpkin3"
|
| 818 |
-
if interface:
|
| 819 |
-
command += f" -i {interface}"
|
| 820 |
-
if config:
|
| 821 |
-
command += f" -c {config}"
|
| 822 |
-
if additional_args:
|
| 823 |
-
command += f" {additional_args}"
|
| 824 |
-
|
| 825 |
-
result = execute_command(command)
|
| 826 |
-
return jsonify(result)
|
| 827 |
-
except Exception as e:
|
| 828 |
-
logger.error(f"Error in wifipumpkin3 endpoint: {str(e)}")
|
| 829 |
-
logger.error(traceback.format_exc())
|
| 830 |
-
return jsonify({
|
| 831 |
-
"error": f"Server error: {str(e)}"
|
| 832 |
-
}), 500
|
| 833 |
|
| 834 |
@app.route("/api/tools/xsstrike", methods=["POST"])
|
| 835 |
def xsstrike():
|
|
@@ -1167,28 +1125,7 @@ def get_capabilities():
|
|
| 1167 |
"required": ["username"]
|
| 1168 |
}
|
| 1169 |
},
|
| 1170 |
-
|
| 1171 |
-
"name": "thefatrat_run",
|
| 1172 |
-
"description": "Execute TheFatRat payload generation tool",
|
| 1173 |
-
"parameters": {
|
| 1174 |
-
"type": "object",
|
| 1175 |
-
"properties": {
|
| 1176 |
-
"additional_args": {"type": "string", "default": ""}
|
| 1177 |
-
}
|
| 1178 |
-
}
|
| 1179 |
-
},
|
| 1180 |
-
{
|
| 1181 |
-
"name": "wifipumpkin3_run",
|
| 1182 |
-
"description": "Execute WifiPumpkin3 rogue AP tool",
|
| 1183 |
-
"parameters": {
|
| 1184 |
-
"type": "object",
|
| 1185 |
-
"properties": {
|
| 1186 |
-
"interface": {"type": "string", "default": ""},
|
| 1187 |
-
"config": {"type": "string", "default": ""},
|
| 1188 |
-
"additional_args": {"type": "string", "default": ""}
|
| 1189 |
-
}
|
| 1190 |
-
}
|
| 1191 |
-
},
|
| 1192 |
{
|
| 1193 |
"name": "xsstrike_scan",
|
| 1194 |
"description": "Execute XSStrike XSS vulnerability scanner",
|
|
@@ -1265,8 +1202,6 @@ def execute_tool(tool_name):
|
|
| 1265 |
"radare2_analyze": radare2,
|
| 1266 |
"routersploit_scan": routersploit,
|
| 1267 |
"sherlock_search": sherlock,
|
| 1268 |
-
"thefatrat_run": thefatrat,
|
| 1269 |
-
"wifipumpkin3_run": wifipumpkin3,
|
| 1270 |
"xsstrike_scan": xsstrike,
|
| 1271 |
"zaproxy_scan": zaproxy,
|
| 1272 |
"execute_command": generic_command,
|
|
|
|
| 787 |
"error": f"Server error: {str(e)}"
|
| 788 |
}), 500
|
| 789 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 790 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 791 |
|
| 792 |
@app.route("/api/tools/xsstrike", methods=["POST"])
|
| 793 |
def xsstrike():
|
|
|
|
| 1125 |
"required": ["username"]
|
| 1126 |
}
|
| 1127 |
},
|
| 1128 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1129 |
{
|
| 1130 |
"name": "xsstrike_scan",
|
| 1131 |
"description": "Execute XSStrike XSS vulnerability scanner",
|
|
|
|
| 1202 |
"radare2_analyze": radare2,
|
| 1203 |
"routersploit_scan": routersploit,
|
| 1204 |
"sherlock_search": sherlock,
|
|
|
|
|
|
|
| 1205 |
"xsstrike_scan": xsstrike,
|
| 1206 |
"zaproxy_scan": zaproxy,
|
| 1207 |
"execute_command": generic_command,
|
mcp_server.py
CHANGED
|
@@ -564,41 +564,7 @@ def setup_mcp_server(kali_client: KaliToolsClient) -> FastMCP:
|
|
| 564 |
}
|
| 565 |
return kali_client.safe_post("api/tools/sherlock", data)
|
| 566 |
|
| 567 |
-
|
| 568 |
-
def thefatrat_run(additional_args: str = "") -> Dict[str, Any]:
|
| 569 |
-
"""
|
| 570 |
-
Execute TheFatRat payload generation tool.
|
| 571 |
-
|
| 572 |
-
Args:
|
| 573 |
-
additional_args: Additional TheFatRat arguments
|
| 574 |
-
|
| 575 |
-
Returns:
|
| 576 |
-
Tool execution results
|
| 577 |
-
"""
|
| 578 |
-
data = {
|
| 579 |
-
"additional_args": additional_args
|
| 580 |
-
}
|
| 581 |
-
return kali_client.safe_post("api/tools/thefatrat", data)
|
| 582 |
-
|
| 583 |
-
@mcp.tool()
|
| 584 |
-
def wifipumpkin3_run(interface: str = "", config: str = "", additional_args: str = "") -> Dict[str, Any]:
|
| 585 |
-
"""
|
| 586 |
-
Execute WifiPumpkin3 rogue AP tool.
|
| 587 |
-
|
| 588 |
-
Args:
|
| 589 |
-
interface: Wireless interface
|
| 590 |
-
config: Configuration file
|
| 591 |
-
additional_args: Additional wifipumpkin3 arguments
|
| 592 |
-
|
| 593 |
-
Returns:
|
| 594 |
-
Tool execution results
|
| 595 |
-
"""
|
| 596 |
-
data = {
|
| 597 |
-
"interface": interface,
|
| 598 |
-
"config": config,
|
| 599 |
-
"additional_args": additional_args
|
| 600 |
-
}
|
| 601 |
-
return kali_client.safe_post("api/tools/wifipumpkin3", data)
|
| 602 |
|
| 603 |
@mcp.tool()
|
| 604 |
def xsstrike_scan(url: str, additional_args: str = "") -> Dict[str, Any]:
|
|
|
|
| 564 |
}
|
| 565 |
return kali_client.safe_post("api/tools/sherlock", data)
|
| 566 |
|
| 567 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 568 |
|
| 569 |
@mcp.tool()
|
| 570 |
def xsstrike_scan(url: str, additional_args: str = "") -> Dict[str, Any]:
|