A simple host-based intrusion detection system with a PyQt GUI.
Project description
EZIDS 🛡️
A Lightweight Python Host Intrusion Detection System with GUI
EZIDS is a simple but functional host-based intrusion detection system (HIDS) built using Python and PyQt6. It monitors selected file paths for unexpected changes and reports suspicious activity using hashing and file watching. This project is designed to be educational, lightweight, and easy to extend or integrate into your own tools.
🔧 Features
- ✅ Real-time file monitoring
- ✅ Change detection via SHA256 hashing
- ✅ Persistent config and ignore lists
- ✅ GUI interface built with PyQt6
- ✅ Desktop-friendly cross-platform design (Linux-first)
- ✅ Easy install from TestPyPI
🚀 Installation
You can install it using pip like this:
pip install ezids
⚠️ Important: You may also need to manually install
PyQt6
pip install PyQt6
You may also need system libraries on some distros:
sudo apt install libx11-xcb1 libxcb-cursor0 libglu1-mesa
🖥️ Usage
After installation, just run:
ezids
The GUI will open, allowing you to:
- Configure monitored paths in settings(May get errors if you don't do this first.)
- Initialize hash baselines
- Start/stop monitoring
- View event logs
- Customize ignore lists
🗂️ Project Structure
ezids/
├── ezids/
│ ├── main.py # Entry point
│ ├── gui.py # PyQt6 GUI
│ ├── ids_core.py # Monitoring logic
│ └── resources/ # SVG icons for GUI
├── config.json # Saved config
├── monitor_paths.txt # Paths to monitor
├── ignore_files.txt # Glob patterns to ignore
├── requirements.txt
├── setup.py
└── README.md
🔍 How It Works
- On Init, the app generates SHA256 hashes for files in configured directories.
- On Start, a background thread monitors those directories.
- When changes are detected, hashes are recomputed and compared.
- Logs are generated for:
- Modified files
- Created/deleted files
- Ignored paths
- You can view all events in the GUI log window.
🧪 Developer Notes
Want to install from source?
git clone https://github.com/nolancoe/ezids.git
cd ezids
pip install .
Then run:
ezids
🛠️ Dependencies
- Python 3.10+
- PyQt6
- System:
libx11-xcb1,libxcb-cursor0,libglu1-mesa(for Linux Qt)
🤝 License
MIT License.
✍️ Author
Made with love and paranoia by Nolan Coe
🐦 [twitter.com/yourhandle]
🧠 [https://github.com/nolancoe]
🧱 Future Improvements
- Save/load config profiles
- Email alerts
- Headless (CLI-only) mode
- Signature-based detection
- Integration with systemd or tray icon
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ezids-1.0.1.tar.gz.
File metadata
- Download URL: ezids-1.0.1.tar.gz
- Upload date:
- Size: 12.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ea0c2d44acdaa8f64737a865671abbb9188047615d99cc7e0b7e6dc01ab3094
|
|
| MD5 |
2c9c14fd832782aed94d8488cf651730
|
|
| BLAKE2b-256 |
5d4d9b633d57625b48d385f6c05e7a48d7b2e4c4b44233f2c468e72db2ba44b9
|
File details
Details for the file ezids-1.0.1-py3-none-any.whl.
File metadata
- Download URL: ezids-1.0.1-py3-none-any.whl
- Upload date:
- Size: 16.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e7960edcdf976c30da2f7b0dfa901624c34661c512cdc86e78400d411f79a86
|
|
| MD5 |
d479d8005cf4d032a5afcf27587ff996
|
|
| BLAKE2b-256 |
654e81bb394d1bc437923e90df7906033955aae5f459093dcb7e1707d29e016c
|