Repository navigation
Development
MHDDoS/
├── start.py single-file CLI
├── config.json bot prefix, protocol default, proxy providers
├── requirements.txt Python dependencies
├── pyproject.toml Ruff format and lint settings
├── files/
│ ├── useragent.txt
│ ├── referers.txt
│ └── proxies/ downloaded and checked proxy lists
├── web/
│ ├── src/server.ts Express panel
│ ├── public/ Node panel UI
│ ├── app.py optional Flask panel
│ ├── templates/
│ ├── static/
│ └── scripts/ install and start launchers
└── .github/workflows/ Docker, CodeQL, release
| Tool | Use |
|---|---|
| Python 3.11+ | CLI and Flask panel |
| Ruff | Formatting and linting |
| Node.js 18+ | Web panel build |
| Docker | Image build and testing |
uvx ruff check start.py web/app.py
uvx ruff format --check start.py web/app.py
python -m py_compile start.py web/app.py
python start.py DOCTORFormat and auto-fix:
uvx ruff format start.py web/app.py
uvx ruff check start.py web/app.py --fixThe Ruff configuration is in pyproject.toml. It targets Python 3.11, uses a 100-column line length, and keeps Optional[...] style for compatibility with older editor inspections.
cd web
npm ci
npm run build
npm run servenpm start runs the TypeScript server through tsx. npm run build writes CommonJS output to web/dist.
A Layer 7 method needs:
- a name in
Methods.LAYER7_METHODS; - an entry in
HttpFlood.METHOD_NAMESif the name differs from the handler; - a handler that builds and sends the payload;
- a request-method mapping in
HttpFlood.GET_METHODS,POST_METHODS, orHEAD_METHODS; - a row in the README method table and in Methods.
A Layer 4 method needs:
- a name in
Methods.LAYER4_METHODS; - a handler name in
Layer4.METHOD_NAMES; - the handler itself;
- raw-socket registration if it uses one;
- proxy support only if the handler can use a proxy socket.
Keep payloads in the handler. The CLI parses method names and numbers; it does not validate payload logic.
Workers catch exceptions at the thread boundary, log the first failure, and retry with a short backoff. Do not add a broad except inside a hot loop; let FloodWorker.run handle it. Connection setup uses try/finally so a failed socket is always closed.
The project uses Ruff with:
- 100-column line length;
- double quotes;
- two blank lines between top-level definitions;
- one blank line between methods.
Run the formatter before committing. Do not hand-align tables or imports.
There is no test suite yet. Useful additions:
- payload builders (
Minecraft, HTTP methods, amplification packets); - CLI argument validation;
- proxy file parsing;
- worker backoff.
Until then, run DOCTOR, a short localhost run, and npm run build after changes.
Keep commits focused. A commit message should explain the reason, not list every changed line. Examples:
Pass web tasks over stdin
The panel now starts a fixed command and streams the spec to the child,
so request data never reaches argv.
MIT. See LICENSE in the repository.
MHDDoS is for authorized testing only. Use it on systems you own or have written permission to test.
Issues · Discussions · Releases · Contributing · MIT License
MHDDoS
Start here
Methods
Configuration
Interfaces
Help
Community
Project