Skip to content

Repository files navigation

🛡️ Sentinel Antivirus

Python PyQt5 License Platform

A modern PyQt5-based antivirus desktop application with real-time scanning, quarantine management, and comprehensive protection modules.

Installation • Documentation • Features • Contributing


✨ Features

  • 🔍 Real-time Scanning - Quick, Full, and Custom scan types with heuristic detection
  • 📦 Quarantine System - Isolate and manage detected threats with restore/delete options
  • 🛡️ Protection Modules - Toggleable File Shield, Web Shield, Email Guard, Firewall, and more
  • 📝 Activity Logging - Real-time activity log with threat detection events
  • 💾 Persistent Settings - Configuration persistence across application restarts
  • 🧪 EICAR Detection - Standard EICAR test file detection for verification
  • 🎨 Modern UI - Clean, dark-themed interface inspired by Avast/AVG

📸 Screenshots

Status Page

Main dashboard with scan controls, module toggles, and activity log.

Scans Page

Scan type selection, live progress, results table, and scan history.

Quarantine Page

View and manage quarantined files with restore/delete actions.

Settings Page

Configure auto-quarantine, exclusions, and update definitions.

🚀 Installation

Prerequisites

  • Python 3.8 or higher
  • Windows 10 or later

Quick Start

# Clone the repository
git clone https://github.com/zikani/simple_antivirus.git
cd sentinel-antivirus

# Install dependencies
pip install -r requirements.txt

# Run the application
python main.py

For detailed installation instructions, see the Installation Guide.

📖 Documentation

🏗️ Project Structure

sentinel/
├── main.py                      # Entry point
├── requirements.txt             # Dependencies
├── README.md                    # This file
├── docs/                        # Documentation
│   ├── INSTALLATION.md
│   ├── ARCHITECTURE.md
│   ├── API.md
│   └── CONTRIBUTING.md
├── config/
│   └── default_config.json      # Default settings
├── data/
│   └── signatures.json          # Detection signatures
├── sentinel/
│   ├── app.py                   # Application bootstrap
│   ├── core/
│   │   ├── constants.py         # UI constants and colors
│   │   ├── models.py            # Data models
│   │   ├── settings.py          # Settings persistence
│   │   ├── database.py          # SQLite database
│   │   ├── signatures.py        # Signature detection
│   │   ├── scanner.py           # Scan engine (QThread)
│   │   ├── quarantine.py        # Quarantine management
│   │   ├── modules.py           # Module state management
│   │   └── logger.py            # Activity logging
│   ├── ui/
│   │   ├── styles.py            # UI stylesheet
│   │   ├── widgets/
│   │   │   ├── toggle_switch.py
│   │   │   ├── status_ring.py
│   │   │   ├── common.py        # Shared widgets
│   │   │   └── placeholder_page.py
│   │   ├── pages/
│   │   │   ├── status_page.py
│   │   │   ├── scans_page.py
│   │   │   ├── quarantine_page.py
│   │   │   └── settings_page.py
│   │   └── main_window.py       # Main window
│   └── utils/
│       └── paths.py             # Path helpers

🔬 Detection Rules

Sentinel uses multiple detection methods:

  1. EICAR Standard Test String - Detects the standard EICAR test file
  2. Hash Blacklist - Matches files against known threat hashes (configurable in data/signatures.json)
  3. Suspicious Extensions - Flags files with dangerous extensions (.exe.js, .scr, double extensions)
  4. Heuristic Detection - Identifies small executables in high-risk folders (Downloads, Temp)

🧪 EICAR Test File

To verify Sentinel's detection capabilities, you can create an EICAR test file:

  1. Create a new text file (e.g., eicar_test.txt)
  2. Paste the following string:
    X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
    
  3. Save the file in your Downloads folder
  4. Run a Quick scan from the Status page
  5. Sentinel will detect this as a TestThreat (safe to use for testing)

Note: The EICAR test string is harmless and is used by antivirus vendors worldwide to verify detection capabilities.

💾 Data Storage

  • Configuration: %APPDATA%\Sentinel\config.json
  • Database: %APPDATA%\Sentinel\sentinel.db
  • Quarantine: %APPDATA%\Sentinel\quarantine\

📄 Pages

  • Status - Main dashboard with scan controls, module toggles, and activity log
  • Scans - Scan type selection, live progress, results table, and scan history
  • Quarantine - View and manage quarantined files with restore/delete actions
  • Settings - Configure auto-quarantine, exclusions, and update definitions
  • Firewall/Performance/Privacy/VPN - Premium features (placeholder pages)

🛠️ Dependencies

PyQt5>=5.15
pytest>=7.0

🤝 Contributing

Contributions are welcome! Please read the Contributing Guide for details on our code of conduct and the process for submitting pull requests.

📝 License

This is a demonstration/educational project. Not intended for production use as a real antivirus solution.

⚠️ Disclaimer

Sentinel Antivirus is a educational/demonstration project. It is not intended for production use as a real antivirus solution. The detection methods are simplified and should not be relied upon for actual security protection.

🙏 Acknowledgments

  • UI design inspired by Avast/AVG antivirus interfaces
  • PyQt5 for the excellent GUI framework
  • EICAR test file standard for verification capabilities

Built with ❤️ using PyQt5

⬆ Back to top

About

Modern PyQt6 desktop antivirus and threat monitoring suite with real-time protection and malware analytics.

Topics

Resources

Contributing

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages