{"id":31848378,"url":"https://github.com/brenofariasdasilva/ddos-detector","last_synced_at":"2026-04-20T12:04:18.802Z","repository":{"id":318398192,"uuid":"1071127573","full_name":"BrenoFariasdaSilva/DDoS-Detector","owner":"BrenoFariasdaSilva","description":"A Framework for DDoS Attack Detection Using Hyperparameter Optimization, WGAN-GP–Based Data Augmentation, Feature Extraction via Genetic Algorithms, RFE, and PCA, with Individual and Ensemble Classifiers for Multi-Dataset Evaluation.","archived":false,"fork":false,"pushed_at":"2026-02-27T14:41:16.000Z","size":3230,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-27T16:40:11.053Z","etag":null,"topics":["cicddos2019","cicids2017","data-augmentation","dataset-compatibility","dataset-conversion","ddos","ddos-detection","drdos","feature-selection","gan","genetic-algorithm","hyperparameter-optimization","multi-dataset","pca","random-forest","rfe","stacking","telegram","wgan-gp"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BrenoFariasdaSilva.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-06T22:46:38.000Z","updated_at":"2026-02-27T14:41:12.000Z","dependencies_parsed_at":"2025-12-29T16:06:42.400Z","dependency_job_id":null,"html_url":"https://github.com/BrenoFariasdaSilva/DDoS-Detector","commit_stats":null,"previous_names":["brenofariasdasilva/ddos-detector"],"tags_count":23,"template":false,"template_full_name":"BrenoFariasdaSilva/Template-Project","purl":"pkg:github/BrenoFariasdaSilva/DDoS-Detector","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrenoFariasdaSilva%2FDDoS-Detector","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrenoFariasdaSilva%2FDDoS-Detector/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrenoFariasdaSilva%2FDDoS-Detector/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrenoFariasdaSilva%2FDDoS-Detector/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BrenoFariasdaSilva","download_url":"https://codeload.github.com/BrenoFariasdaSilva/DDoS-Detector/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrenoFariasdaSilva%2FDDoS-Detector/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30189722,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T17:33:53.563Z","status":"ssl_error","status_checked_at":"2026-03-06T17:33:51.678Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cicddos2019","cicids2017","data-augmentation","dataset-compatibility","dataset-conversion","ddos","ddos-detection","drdos","feature-selection","gan","genetic-algorithm","hyperparameter-optimization","multi-dataset","pca","random-forest","rfe","stacking","telegram","wgan-gp"],"created_at":"2025-10-12T10:24:42.556Z","updated_at":"2026-03-06T18:13:07.875Z","avatar_url":"https://github.com/BrenoFariasdaSilva.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \n# [DDoS-Detector.](https://github.com/BrenoFariasdaSilva/DDoS-Detector) \u003cimg src=\"https://github.com/BrenoFariasdaSilva/DDoS-Detector/blob/main/.assets/Icons/DDoS.png\"  width=\"4%\" height=\"4%\"\u003e\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \n---\n\nA machine learning framework for Distributed Denial of Service (DDoS) attack detection achieving **100% F1-score and 0% False Negative Rate (FNR)** on the `01-12/DrDoS_DNS.csv` subset of the CICDDoS2019 dataset, and demonstrating **100% F1-score** (multiple classifiers) on the `01-12/UDPLag.csv` subset. Features hyperparameter optimization across nine classifiers (Random Forest, SVM, XGBoost, Logistic Regression, KNN, Nearest Centroid, Gradient Boosting, LightGBM, and MLP), WGAN-GP for synthetic data generation, multi-method feature selection (Genetic Algorithms, RFE, PCA), and stacking ensemble evaluation. Validated on CICDDoS2019 benchmark datasets with full reproducibility and cross-platform support. The framework can also send progress updates and completion notifications (logs or short summaries) to a configured Telegram chat during long-running experiments.\n  \n---\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n![GitHub Code Size in Bytes](https://img.shields.io/github/languages/code-size/BrenoFariasdaSilva/DDoS-Detector)\n![Lines Of Code](https://raw.githubusercontent.com/BrenoFariasdaSilva/DDoS-Detector/image-data/badge.svg)\n![GitHub Commits](https://img.shields.io/github/commit-activity/t/BrenoFariasdaSilva/DDoS-Detector/main)\n![GitHub Last Commit](https://img.shields.io/github/last-commit/BrenoFariasdaSilva/DDoS-Detector)\n![GitHub Forks](https://img.shields.io/github/forks/BrenoFariasdaSilva/DDoS-Detector)\n![GitHub Language Count](https://img.shields.io/github/languages/count/BrenoFariasdaSilva/DDoS-Detector)\n![GitHub License](https://img.shields.io/github/license/BrenoFariasdaSilva/DDoS-Detector)\n![GitHub Stars](https://img.shields.io/github/stars/BrenoFariasdaSilva/DDoS-Detector)\n![GitHub Contributors](https://img.shields.io/github/contributors/BrenoFariasdaSilva/DDoS-Detector)\n![GitHub Created At](https://img.shields.io/github/created-at/BrenoFariasdaSilva/DDoS-Detector)\n![wakatime](https://wakatime.com/badge/github/BrenoFariasdaSilva/DDoS-Detector.svg)\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \n![RepoBeats Statistics](https://repobeats.axiom.co/api/embed/deca67a753c6ad283c2b87e95f2b676767739706.svg \"Repobeats analytics image\")\n\n\u003c/div\u003e\n\n## Table of Contents\n- [DDoS-Detector. ](#ddos-detector-)\n  - [Table of Contents](#table-of-contents)\n  - [Introduction](#introduction)\n    - [Project Architecture](#project-architecture)\n    - [Key Technical Features](#key-technical-features)\n    - [Workflow Integration](#workflow-integration)\n  - [Setup](#setup)\n    - [Git](#git)\n        - [Linux](#linux)\n        - [macOS](#macos)\n        - [Windows](#windows)\n    - [Clone the Repository](#clone-the-repository)\n    - [Python, Pip and Venv](#python-pip-and-venv)\n      - [Linux](#linux-1)\n      - [macOS](#macos-1)\n      - [Windows](#windows-1)\n    - [Make](#make)\n      - [Linux](#linux-2)\n      - [macOS](#macos-2)\n      - [Windows](#windows-2)\n    - [Dependencies/Requirements](#dependenciesrequirements)\n    - [Datasets](#datasets)\n  - [Results](#results)\n    - [Feature Selection Performance (`DrDoS_DNS`)](#feature-selection-performance-drdos_dns)\n    - [Hyperparameter Optimization (`UDPLag`)](#hyperparameter-optimization-udplag)\n  - [How to Cite?](#how-to-cite)\n  - [Contributing](#contributing)\n  - [Collaborators](#collaborators)\n  - [License](#license)\n    - [Apache License 2.0](#apache-license-20)\n\n## Introduction\n\nThis project provides a complete end-to-end machine learning pipeline for DDoS (Distributed Denial of Service) attack detection and classification using network flow data. The framework integrates state-of-the-art techniques for data preprocessing, feature engineering, model optimization, and evaluation to achieve robust and accurate intrusion detection across multiple benchmark datasets.\n\n### Project Architecture\n\nThe system is organized into several interconnected modules, each addressing a critical aspect of the machine learning workflow:\n\n**1. Data Preparation and Exploration**\n- **Dataset Converter** (`dataset_converter.py`): Multi-format conversion utility supporting ARFF, CSV, Parquet, and TXT formats. Performs lightweight structural cleaning and maintains directory hierarchy during conversion.\n- **Dataset Descriptor** (`dataset_descriptor.py`): Generates comprehensive metadata reports including feature types, missing values, class distributions, and 2D t-SNE visualizations for data separability analysis. Produces cross-dataset compatibility reports comparing feature unions and intersections.\n\n**2. Feature Engineering**\n- **Genetic Algorithm** (`genetic_algorithm.py`): DEAP-based binary-mask genetic algorithm for optimal feature selection. Uses RandomForest-based fitness evaluation with multi-objective metrics (accuracy, precision, recall, F1, FPR, FNR). Supports population sweeps and exports consolidated results with feature importance rankings.\n- **Recursive Feature Elimination** (`rfe.py`): Automated RFE workflow using RandomForestClassifier to iteratively eliminate less important features. Exports structured run results with feature rankings and performance metrics.\n- **Principal Component Analysis** (`pca.py`): PCA-based dimensionality reduction with configurable component counts. Performs 10-fold Stratified CV evaluation and saves PCA objects for reproducibility.\n\n**3. Data Augmentation**\n- **WGAN-GP** (`wgangp.py`): Wasserstein Generative Adversarial Network with Gradient Penalty for generating synthetic network flow data. Implements conditional generation with residual blocks (DRCGAN-style architecture) for multi-class attack scenarios. Produces high-quality synthetic samples to balance datasets and augment training data.\n\n**4. Model Optimization and Evaluation**\n- **Hyperparameter Optimization** (`hyperparameters_optimization.py`): Comprehensive hyperparameter tuning for nine classifiers (Random Forest, SVM, XGBoost, Logistic Regression, KNN, Nearest Centroid, Gradient Boosting, LightGBM, MLP). Features parallel evaluation with ThreadPoolExecutor, progress caching, memory-safe worker allocation, and detailed metric tracking (F1, accuracy, precision, recall, MCC, Cohen's kappa, ROC-AUC, FPR, FNR, TPR, TNR).\n- **Stacking Ensemble** (`stacking.py`): Evaluates individual classifiers and stacking meta-classifiers across GA, RFE, and PCA feature sets. Produces consolidated CSV results with hardware metadata for reproducibility.\n\n**5. Utilities and Infrastructure**\n- **Logger** (`Logger.py`): Dual-channel logger preserving ANSI color codes for terminal output while maintaining clean log files.\n- **Telegram Bot** (`telegram_bot.py`): Notification system for long-running experiments, supporting message splitting for Telegram's character limits. It can send progress updates, status summaries and completion notifications (logs or short reports) to a configured Telegram chat during script execution.\n- **Makefile**: Automation for all pipeline stages with cross-platform support (Windows, Linux, macOS) and detached execution modes.\n\n### Key Technical Features\n\n- **Multi-Dataset Support**: Designed for CICDDoS2019, CIC-IDS-2017, and compatible datasets with shared feature definitions\n- **Feature Reusability**: GA-selected features can be reused across compatible datasets without retraining\n- **Comprehensive Metrics**: Tracks standard metrics (accuracy, precision, recall, F1) plus confusion-based rates (FPR, FNR, TPR, TNR), MCC, Cohen's kappa, and ROC-AUC\n- **Progress Persistence**: Checkpoint saving and caching for resumable long-running optimizations\n- **Hardware Awareness**: Automatic detection of CPU model, cores, RAM, GPU availability (ThunderSVM), and memory-safe parallel worker allocation\n- **Cross-Platform**: Unified codebase with OS-specific adaptations for sound notifications, path handling, and system information retrieval\n\n### Workflow Integration\n\nThe typical pipeline execution follows this sequence:\n\n1. **Download/Convert Datasets**: Obtain raw data using `download_datasets.sh` or convert existing formats with `dataset_converter.py`\n2. **Describe Datasets**: Generate metadata reports and t-SNE visualizations using `dataset_descriptor.py`\n3. **Feature Selection**: Run `genetic_algorithm.py`, `rfe.py`, and `pca.py` to extract optimal feature subsets\n4. **Hyperparameter Tuning**: Optimize individual classifiers with `hyperparameters_optimization.py` using GA-selected features\n5. **Ensemble Evaluation**: Compare stacking and individual models across feature sets with `stacking.py`\n6. **Optional Augmentation**: Generate synthetic samples using `wgangp.py` for dataset balancing\n7. **Results Analysis**: Consolidated CSV outputs in `Feature_Analysis/` and `Classifiers_Hyperparameters/` directories\n\nThis modular architecture enables researchers to execute the complete pipeline end-to-end or run individual components for targeted analysis.\n\n## Setup\n\nThis section provides instructions for installing Git, Python, Pip, Make, then to clone the repository (if not done yet) and all required project dependencies. \n\n### Git\n\n`git` is a distributed version control system that is widely used for tracking changes in source code during software development. In this project, `git` is used to download and manage the analyzed repositories, as well as to clone the project and its submodules. To install `git`, follow the instructions below based on your operating system:\n\n##### Linux\n\nTo install `git` on Linux, run:\n\n```bash\nsudo apt install git -y # For Debian-based distributions (e.g., Ubuntu)\n```\n\n##### macOS\n\nIf you don't have Homebrew installed, you can install it by running the following command in your terminal:\n\n```bash\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\n```\n\nTo install `git` on MacOS, you can use Homebrew:\n\n```bash\nbrew install git\n```\n\n##### Windows\n\nOn Windows, you can download `git` from the official website [here](https://git-scm.com/downloads) and follow the installation instructions provided there.\n\n### Clone the Repository\n\nNow that git is installed, it's time to clone this repository with all required submodules, use:\n\n``` bash\ngit clone --recurse-submodules https://github.com/BrenoFariasdaSilva/DDoS-Detector.git\n```\n\nIf you clone without submodules (not recommended):\n\n``` bash\ngit clone https://github.com/BrenoFariasdaSilva/DDoS-Detector\n```\n\nTo initialize submodules manually:\n\n``` bash\ncd DDoS-Detector # Only if not in the repository root directory yet\ngit submodule init\ngit submodule update\n```\n\n### Python, Pip and Venv\n\nYou must have Python 3, Pip, and the `venv` module installed.\n\n#### Linux\n\n``` bash\nsudo apt install python3 python3-pip python3-venv -y\n```\n\n#### macOS\n\n``` bash\nbrew install python3\n```\n\n#### Windows\n\nIf you do not have Chocolatey installed, you can install it by running the following command in an **elevated PowerShell (Run as Administrator)**:\n\n```powershell\nSet-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))\n```\n\nOnce Chocolatey is installed, you can install Python using:\n\n``` bash\nchoco install python3\n```\n\nOr download the installer from the official website [here](https://www.python.org/downloads/windows/) and follow the installation instructions provided there. Make sure to check the option \"Add Python to PATH\" during installation ans restart your terminal/computer.\n\n### Make \n\n`Make` is used to run automated tasks defined in the project's Makefile, such as setting up environments, executing scripts, and managing Python dependencies.\n\n#### Linux\n\n``` bash\nsudo apt install make -y\n```\n\n#### macOS\n\n``` bash\nbrew install make\n```\n\n#### Windows\n\nAvailable via Cygwin, MSYS2, or WSL.\n\n### Dependencies/Requirements\n\n1. Install the project dependencies with the following command:\n\n   ```bash\n   cd DDoS-Detector # Only if not in the repository root directory yet\n   make dependencies\n   ```\n\n   This command will create a virtual environment in the `.venv` folder and install all required dependencies listed in the `requirements.txt` file.\n\n### Datasets\n\nThis repository includes a shell script `download_datasets.sh` (at the repository root) that can automatically download and extract several datasets used by the project. The current script downloads and extracts:\n\n   - CICDDoS2019 (two CSV ZIPs: `CSV-01-12.zip` and `CSV-03-11.zip`) into `Datasets/CICDDoS2019`\n   - CIC-IDS-2017 (the labelled flows ZIP) into `Datasets/CICIDS2017`\n\n   The script behavior:\n   - Creates the main `Datasets` directory if it does not exist.\n   - For each configured dataset it creates the target directory (from `DATASET_DIRS`).\n   - Downloads the configured ZIP file(s) with `wget -c` (resumable downloads).\n   - Extracts each ZIP using `unzip -o` into the dataset directory.\n\n   Requirements: `wget` and `unzip` must be installed and available on your PATH, and you must have an active internet connection.\n\n   Usage (from the repository root):\n\n   ```bash\n   make download_datasets\n   ```\n\n   After successful run the files will be available under the `Datasets` subfolders, for example:\n\n   - `Datasets/CICDDoS2019/CSV-01-12.zip` (unzipped CSV files will be inside this directory)\n   - `Datasets/CICDDoS2019/CSV-03-11.zip`\n   - `Datasets/CICIDS2017/GeneratedLabelledFlows.zip`\n\n   Note: the ZIP filenames and the exact extraction layout depend on the upstream archive contents; check the target folder after extraction.\n\n   Configuring the script\n   - The script is driven by two associative arrays at the top of `download_datasets.sh`:\n     - `DATASET_URLS`: maps a short dataset key to the download URL.\n     - `DATASET_DIRS`: maps the same dataset key to the local target directory under `Datasets/`.\n\n   - To select which datasets the script downloads, edit `download_datasets.sh` and comment/uncomment the relevant entries in `DATASET_URLS` (or remove entries you don't want). The script iterates over the keys present in `DATASET_URLS` and downloads whatever is configured there.\n\n   - To change where a dataset is extracted, update the corresponding value in `DATASET_DIRS` for that key. Example:\n\n   ```bash\n   # in download_datasets.sh\n   DATASET_URLS=( [CICDDoS2019_CSV_01_12]=\"http://.../CSV-01-12.zip\" )\n   DATASET_DIRS=( [CICDDoS2019_CSV_01_12]=\"Datasets/CICDDoS2019\" )\n   ```\n\n   - To add another dataset: add a new key to `DATASET_URLS` with its URL, and add the same key to `DATASET_DIRS` with the desired target folder. Save the file and re-run `./download_datasets.sh`.\n\n1. **Manually downloaded datasets**\n\n   If you prefer to download datasets manually, create the `Datasets` directory (if needed):\n\n   ```bash\n   mkdir -p Datasets\n   ```\n\n   Then create a subfolder per dataset and place the downloaded CSV(s) or extracted files there. Example structure:\n\n   ```text\n   Datasets/\n      CICDDoS2019/\n         CSV-01-12/ # Extracted CSVs from the first archive\n         CSV-03-11/ # Extracted CSVs from the second archive\n      CICIDS2017/\n         TrafficLabelling/ # Extracted CSVs\n   ```\n\n   Primary datasets used in this project:\n\n   - https://www.unb.ca/cic/datasets/ddos-2019.html (CICDDoS2019)\n   - https://www.unb.ca/cic/datasets/ids-2017.html (CIC-IDS-2017)\n\n   These datasets were chosen because they share similar feature definitions. This allows feature subsets extracted via the Genetic Algorithm to be reused across multiple datasets, avoiding the need to retrain models from scratch for each dataset/file.\n\n2. **Using other datasets**\n\n   You may use additional datasets as long as they are compatible with the project's preprocessing pipeline. Good sources include:\n\n   - Kaggle: https://www.kaggle.com/datasets\n   - UCI: https://archive.ics.uci.edu/ml/index.php\n\n   Ensure any new dataset is adapted to match the expected CSV format, column names (features), and label conventions used by the project. If necessary, use the provided dataset utilities (e.g., `dataset_converter.py` / `dataset_descriptor.py`) to convert or normalize new datasets to the project's expected format.\n\n## Results\n\nThe following results demonstrate the framework's performance on the **CICDDoS2019** dataset, specifically the `DrDoS_DNS` and `UDPLag` subsets (01-12 capture).\n\n### Feature Selection Performance (`DrDoS_DNS`)\n\nThe table below compares three feature selection strategies using a **Random Forest** classifier. The **Genetic Algorithm (GA)** identified a subset of 36 features that achieved optimal performance (0% FNR) significantly faster than PCA (which required 48 components) and with better minority-class detection than RFE (which missed 0.46% of attacks).\n\n| Metric                        | RFE (10 Features) | PCA (48 Components) | Genetic Algorithm (36 Features) |\n| :---------------------------- | :---------------: | :-----------------: | :-----------------------------: |\n| **Accuracy**                  |      100.00%      |       100.00%       |           **100.00%**           |\n| **Precision**                 |      100.00%      |       100.00%       |           **100.00%**           |\n| **Recall**                    |      100.00%      |       100.00%       |           **100.00%**           |\n| **F1-Score**                  |      100.00%      |       100.00%       |           **100.00%**           |\n| **False Negative Rate (FNR)** |       0.46%       |        0.00%        |            **0.00%**            |\n| **Execution Time**            |      53.89s       |      2849.85s       |           **30.63s**            |\n\n### Hyperparameter Optimization (`UDPLag`)\n\nThe table below summarizes the best configurations and performance metrics for various classifiers on the `UDPLag` subset, using the 30 features selected by the Genetic Algorithm. Several models achieved perfect classification on this highly imbalanced multi-class subset.\n\n| Model                   |  F1-Score   |  Accuracy   | Execution Time | Best Parameters (Partial)                     |\n| :---------------------- | :---------: | :---------: | :------------: | :-------------------------------------------- |\n| **Random Forest**       | **100.00%** | **100.00%** |     1.27s      | `n_estimators=50`, `max_depth=30`             |\n| **XGBoost**             | **100.00%** | **100.00%** |     0.46s      | `n_estimators=50`, `max_depth=10`             |\n| **LightGBM**            | **100.00%** | **100.00%** |     0.90s      | `n_estimators=50`, `num_leaves=31`            |\n| **Gradient Boosting**   | **100.00%** | **100.00%** |     55.04s     | `n_estimators=200`, `max_depth=7`             |\n| **KNN**                 | **100.00%** | **100.00%** |     60.49s     | `n_neighbors=9`, `weights=distance`           |\n| **MLP**                 |   99.98%    |   99.98%    |     7.18s      | `hidden_layer_sizes=[100]`, `activation=relu` |\n| **Logistic Regression** |   99.88%    |   99.89%    |     4.22s      | `C=100`, `solver=lbfgs`                       |\n| **Nearest Centroid**    |   99.50%    |   99.43%    |     0.22s      | `metric=manhattan`                            |\n\n**📊 For detailed experimental results, performance benchmarks, and feature listings, please see [RESULTS.md](RESULTS.md).**\n\n## How to Cite?\n\nIf you use the DDoS-Detector in your research, please cite it using the following BibTeX entry:\n\n```\n@misc{softwareDDoS-Detector:2025,\n  title = {A Framework for DDoS Attack Detection Using Hyperparameter Optimization, WGAN-GP–Based Data Augmentation, Feature Extraction via Genetic Algorithms, RFE, and PCA, with Ensemble Classifiers and Multi-Dataset Evaluation},\n  author = {Breno Farias da Silva},\n  year = {2025},\n  howpublished = {https://github.com/BrenoFariasdaSilva/DDoS-Detector},\n  note = {Accessed on October 6, 2026}\n}\n```\n\nAdditionally, a `main.bib` file is available in the root directory of this repository, in which contains the BibTeX entry for this project.\n\nIf you find this repository valuable, please don't forget to give it a ⭐ to show your support! Contributions are highly encouraged, whether by creating issues for feedback or submitting pull requests (PRs) to improve the project. For details on how to contribute, please refer to the [Contributing](#contributing) section below.\n\nThank you for your support and for recognizing the contribution of this tool to your work!\n\n## Contributing\n\nContributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**. If you have suggestions for improving the code, your insights will be highly welcome.\nIn order to contribute to this project, please follow the guidelines below or read the [CONTRIBUTING.md](CONTRIBUTING.md) file for more details on how to contribute to this project, as it contains information about the commit standards and the entire pull request process.\nPlease follow these guidelines to make your contributions smooth and effective:\n\n1. **Set Up Your Environment**: Ensure you've followed the setup instructions in the [Setup](#setup) section to prepare your development environment.\n\n2. **Make Your Changes**:\n   - **Create a Branch**: `git checkout -b feature/YourFeatureName`\n   - **Implement Your Changes**: Make sure to test your changes thoroughly.\n   - **Commit Your Changes**: Use clear commit messages, for example:\n     - For new features: `git commit -m \"FEAT: Add some AmazingFeature\"`\n     - For bug fixes: `git commit -m \"FIX: Resolve Issue #123\"`\n     - For documentation: `git commit -m \"DOCS: Update README with new instructions\"`\n     - For refactorings: `git commit -m \"REFACTOR: Enhance component for better aspect\"`\n     - For snapshots: `git commit -m \"SNAPSHOT: Temporary commit to save the current state for later reference\"`\n   - See more about crafting commit messages in the [CONTRIBUTING.md](CONTRIBUTING.md) file.\n\n3. **Submit Your Contribution**:\n   - **Push Your Changes**: `git push origin feature/YourFeatureName`\n   - **Open a Pull Request (PR)**: Navigate to the repository on GitHub and open a PR with a detailed description of your changes.\n\n4. **Stay Engaged**: Respond to any feedback from the project maintainers and make necessary adjustments to your PR.\n\n5. **Celebrate**: Once your PR is merged, celebrate your contribution to the project!\n\n## Collaborators\n\nWe thank the following people who contributed to this project:\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003ca href=\"https://github.com/BrenoFariasdaSilva\" title=\"Breno Farias da Silva (Founder)\"\u003e\n        \u003cimg src=\"https://github.com/BrenoFariasdaSilva.png\" width=\"100px;\" alt=\"Breno Farias da Silva (Founder)\"/\u003e\u003cbr\u003e\n        \u003csub\u003e\n          \u003cb\u003eBreno Farias da Silva\u003c/b\u003e\n        \u003c/sub\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## License\n\n### Apache License 2.0\n\nThis project is licensed under the [Apache License 2.0](LICENSE). This license permits use, modification, distribution, and sublicense of the code for both private and commercial purposes, provided that the original copyright notice and a disclaimer of warranty are included in all copies or substantial portions of the software. It also requires a clear attribution back to the original author(s) of the repository. For more details, see the [LICENSE](LICENSE) file in this repository.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrenofariasdasilva%2Fddos-detector","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrenofariasdasilva%2Fddos-detector","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrenofariasdasilva%2Fddos-detector/lists"}