Files
krawl.es/src/server_errors.py

66 lines
1.8 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
import random
from wordlists import get_wordlists
def generate_server_error() -> tuple[str, str]:
wl = get_wordlists()
server_errors = wl.server_errors
2026-01-23 22:00:21 +01:00
if not server_errors:
return ("500 Internal Server Error", "text/html")
2026-01-23 22:00:21 +01:00
server_type = random.choice(list(server_errors.keys()))
server_config = server_errors[server_type]
2026-01-23 22:00:21 +01:00
error_codes = {
400: "Bad Request",
401: "Unauthorized",
403: "Forbidden",
404: "Not Found",
500: "Internal Server Error",
502: "Bad Gateway",
2026-01-23 22:00:21 +01:00
503: "Service Unavailable",
}
2026-01-23 22:00:21 +01:00
code = random.choice(list(error_codes.keys()))
message = error_codes[code]
2026-01-23 22:00:21 +01:00
template = server_config.get("template", "")
version = random.choice(server_config.get("versions", ["1.0"]))
html = template.replace("{code}", str(code))
html = html.replace("{message}", message)
html = html.replace("{version}", version)
if server_type == "apache":
os = random.choice(server_config.get("os", ["Ubuntu"]))
html = html.replace("{os}", os)
html = html.replace("{host}", "localhost")
return (html, "text/html")
def get_server_header(server_type: str = None) -> str:
wl = get_wordlists()
server_errors = wl.server_errors
2026-01-23 22:00:21 +01:00
if not server_errors:
return "nginx/1.18.0"
2026-01-23 22:00:21 +01:00
if not server_type:
server_type = random.choice(list(server_errors.keys()))
2026-01-23 22:00:21 +01:00
server_config = server_errors.get(server_type, {})
2026-01-23 22:00:21 +01:00
version = random.choice(server_config.get("versions", ["1.0"]))
server_headers = {
2026-01-23 22:00:21 +01:00
"nginx": f"nginx/{version}",
"apache": f"Apache/{version}",
"iis": f"Microsoft-IIS/{version}",
"tomcat": f"Apache-Coyote/1.1",
}
2026-01-23 22:00:21 +01:00
return server_headers.get(server_type, "nginx/1.18.0")