WinIDS - Windows Intrusion Detection System
A machine learning and reinforcement learning-based intrusion detection system designed for Windows environments with real-time monitoring capabilities.
Features
- 🔍 Real-time network traffic monitoring
- 🧠 Neural network-based intrusion detection
- 🤖 Reinforcement learning for adaptive thresholds
- 🚨 Detect multiple attack types: DOS, Probe, R2L, U2R
- 📊 Professional dashboard with visualizations
- 🛡️ Traffic generation and simulation capabilities
- 🔄 Bridge and Monitor components for flexible deployment
- 📈 Self-learning capabilities through RL feedback
Installation
From PyPI
pip install WinIDS
From Source
git clone https://github.com/yourusername/WinIDS.git
cd WinIDS
pip install -e .
Quick Start
WinIDS provides both command-line tools and Python library components.
Using Command-line Tools
-
Start the Monitor:
WinIDS-monitor --host localhost --port 5000
-
Start the Bridge (traffic generator):
WinIDS-bridge --monitor-host localhost --monitor-port 5000
-
Launch the Dashboard:
WinIDS-dashboard
-
Test with Attack Panel (optional):
WinIDS-attack-panel
Using as a Python Library
from WinIDS import FastIDS, IDSBridge, IDSMonitor
# Create and start the monitor
monitor = IDSMonitor(host="localhost", port=5000)
monitor.start()
# Create and start the bridge
bridge = IDSBridge(monitor_host="localhost", monitor_port=5000)
bridge.start()
# Create and start the IDS with reinforcement learning
ids = FastIDS(model_path="models/best_fast_model.h5",
norm_params_path="models/normalization_params.json",
use_rl=True)
ids.connect_to_bridge()
ids.start()
# Get current stats
stats = ids.get_stats()
print(f"Uptime: {stats['uptime']}s, Packets: {stats['total_packets']}, Alerts: {stats['alerts']}")
# Stop components when done
ids.stop()
bridge.stop()
monitor.stop()
Components
FastIDS
The core intrusion detection engine using neural network models with reinforcement learning capabilities.
from WinIDS import FastIDS
ids = FastIDS(
model_path="models/best_fast_model.h5",
norm_params_path="models/normalization_params.json",
threshold=0.7,
bridge_host="localhost",
bridge_port=5000,
use_rl=True,
rl_model_dir="./rl_models",
rl_training_mode=True
)
IDSMonitor
Connection manager between the bridge and the IDS system.
from WinIDS import IDSMonitor
monitor = IDSMonitor(
host="localhost",
port=5000,
check_interval=1.0,
traffic_file="data/traffic_log.json",
disable_attacks=False
)
IDSBridge
Traffic generator that connects to the monitor.
from WinIDS import IDSBridge
bridge = IDSBridge(
monitor_host="localhost",
monitor_port=5000,
data_file="data/training_data.csv",
synthetic=True
)
ProDashboard
Graphical user interface for the IDS system.
from WinIDS import ProDashboard, FastIDS
ids = FastIDS(model_path="models/best_fast_model.h5", use_rl=True)
dashboard = ProDashboard(ids, dark_mode=True)
dashboard.run()
AttackPanel
Tool for generating test attacks.
from WinIDS import AttackPanel
panel = AttackPanel(
bridge_host="localhost",
bridge_port=5000,
dark_mode=True
)
panel.run()
Reinforcement Learning
WinIDS uses reinforcement learning to continuously adapt and optimize its detection capabilities:
Adaptive Thresholds
The RL agent automatically adjusts detection thresholds based on:
- Historical attack patterns
- False positive rates
- System performance
from WinIDS import FastIDS
# Create an IDS with reinforcement learning enabled
ids = FastIDS(
model_path="models/best_fast_model.h5",
use_rl=True,
rl_model_dir="./custom_rl_models"
)
# RL will automatically adjust thresholds based on traffic patterns
ids.start()
Feedback Mechanism
You can provide explicit feedback to improve detection:
# Example of providing feedback to the RL system
feedback = {
"alert_id": "alert-1234",
"is_attack": True, # True if this was indeed an attack, False if false positive
"confidence": 0.85
}
# Send feedback (handled internally by the IDS)
bridge.send_feedback(feedback)
Custom RL Model Directory
Specify where to store trained RL models:
WinIDS-dashboard --rl-model-dir /path/to/rl_models
Attack Simulation
WinIDS includes an attack simulator for testing the IDS system:
from WinIDS.attack_simulator import simulate_attack
# Simulate a DOS attack with 75% intensity for 10 seconds
attack_data = simulate_attack(attack_type="dos", intensity=0.75, duration=10)
# Simulate a probe attack
probe_attack = simulate_attack(attack_type="probe", intensity=0.5, duration=5)
Training Custom Models
WinIDS provides scripts for training custom models:
python -m WinIDS.scripts.train_model --dataset your_data.csv --model-output models/custom_model.h5
Command-line Options
WinIDS-dashboard
usage: WinIDS-dashboard [-h] [--model MODEL] [--norm-params NORM_PARAMS]
[--threshold THRESHOLD] [--bridge-host BRIDGE_HOST]
[--bridge-port BRIDGE_PORT] [--light-mode]
[--disable-attacks] [--disable-rl]
[--rl-model-dir RL_MODEL_DIR] [--disable-rl-training]
WinIDS-bridge
usage: WinIDS-bridge [-h] [--monitor-host MONITOR_HOST]
[--monitor-port MONITOR_PORT] [--interval INTERVAL]
[--synthetic] [--data-file DATA_FILE]
WinIDS-monitor
usage: WinIDS-monitor [-h] [--host HOST] [--port PORT]
[--check-interval CHECK_INTERVAL]
[--traffic-file TRAFFIC_FILE] [--disable-attacks]
WinIDS-attack-panel
usage: WinIDS-attack-panel [-h] [--bridge-host BRIDGE_HOST]
[--bridge-port BRIDGE_PORT] [--light-mode]
How Reinforcement Learning Works in WinIDS
WinIDS implements a Deep Q-Network (DQN) approach to optimize intrusion detection:
-
State: The current system state includes metrics like false positive rate, attack distribution, and current threshold.
-
Actions: The RL agent can adjust detection thresholds up or down with varying degrees.
-
Rewards: The system receives rewards for:
- Successfully detecting real attacks
- Avoiding false positives
- Maintaining an optimal balance between security and performance
-
Training: The agent continuously learns from interactions with the network traffic and feedback.
-
Adaptation: The system automatically adjusts to changing network conditions and attack patterns.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Acknowledgements
- Special thanks to all contributors
- Built with TensorFlow, NumPy, and other open-source libraries
Release files for WinIDS 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| winids-0.1.1.tar.gz | 40.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| winids-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 85.0 kB
Release files / winids-0.1.1.tar.gz
| Download URL | winids-0.1.1.tar.gz |
|---|---|
| Size | 40.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fb6a2cd27a11634e6418071d2a5cdf23057e607b64f72c94ae4e98e2aa601543
|
|
BLAKE2b-256 checksum How to use checksums |
8a4252fd1ab2139756e7edf4782aea9b6ae91c974e9552b5ff51d53ad6300149
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.8.0
|
Release files / winids-0.1.1-py3-none-any.whl
| Download URL | winids-0.1.1-py3-none-any.whl |
|---|---|
| Size | 45.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9a600e5c96bcae4569761cc39cd0043b54454efaa59501b81038e8ca52e23f8a
|
|
BLAKE2b-256 checksum How to use checksums |
59de4863175eef2a8e45d81f441f5e9f32df2a7e77fb552b81200f271125eba0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.8.0
|