Skip to main content

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

  1. On Init, the app generates SHA256 hashes for files in configured directories.
  2. On Start, a background thread monitors those directories.
  3. When changes are detected, hashes are recomputed and compared.
  4. Logs are generated for:
    • Modified files
    • Created/deleted files
    • Ignored paths
  5. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ezids-1.0.1.tar.gz (12.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ezids-1.0.1-py3-none-any.whl (16.7 kB view details)

Uploaded Python 3

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

Hashes for ezids-1.0.1.tar.gz
Algorithm Hash digest
SHA256 4ea0c2d44acdaa8f64737a865671abbb9188047615d99cc7e0b7e6dc01ab3094
MD5 2c9c14fd832782aed94d8488cf651730
BLAKE2b-256 5d4d9b633d57625b48d385f6c05e7a48d7b2e4c4b44233f2c468e72db2ba44b9

See more details on using hashes here.

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

Hashes for ezids-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3e7960edcdf976c30da2f7b0dfa901624c34661c512cdc86e78400d411f79a86
MD5 d479d8005cf4d032a5afcf27587ff996
BLAKE2b-256 654e81bb394d1bc437923e90df7906033955aae5f459093dcb7e1707d29e016c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page