Skip to content

AngusRWu/Driver-System-Inspection-Tool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Driver & System Inspection Tool

Overview

This project is a modular system inspection tool written in Python. It is designed to collect system information, scan driver data, analyze driver state, and generate reports in a structured and extensible way.

The project focuses on architecture and correctness, not privileged kernel access. All data collection is performed in user space and is safe to run on a personal computer.

Project Goals

  • Demonstrate clean modular software design

  • Simulate system software / driver inspection workflows

  • Handle missing or unavailable data safely

  • Separate responsibilities between collection, scanning, analysis, and reporting

  • Allow future extension (real driver versions, compatibility checks, export formats)

Architecture Overview

The project is divided into four modules, each with a single responsibility:

  • Collector → Scanner → Manager → Reporter

Module Breakdown


Module 1 — System Collector


Purpose: Collects basic operating system information.

Data Collected:

  • OS name

  • OS version

  • Kernel version

  • Timestamp of collection

This module assumes some information may not be available and handles that gracefully.


Module 2 — Driver Scanner


Purpose: Scans the operating system for driver-related information and converts raw data into structured objects.

Responsibilities:

  • Query the OS (user-space only)

  • Create Driver_Info objects

  • Treat unavailable values (such as driver version) as "unknown"

  • On Windows, this module uses the driverquery command to retrieve real driver names.


Module 3 — Driver Manager (Analyzer)


Purpose: Analyze scanned drivers and provide structured insight.

Capabilities:

  • Filter loaded drivers

  • Filter unloaded drivers

  • Detect drivers with unknown versions

  • Group drivers by visibility level

  • Generate a summary dictionary for reporting

This module does not scan and does not print — it only processes data.


Module 4 — Reporter


Purpose: Convert analyzed data into human-readable and structured reports.

Outputs:

  • Text-based report

  • Dictionary-based report

  • Risk assessment based on visibility, state, and missing data

  • This module is intended for:

  • Console output

Logging

Future UI or API integration

Folder Structure
src/

├── collector/
│ └── collector.py

├── driver_scanner/
│ ├── driver_info.py
│ └── scanner.py

├── analyzer/
│ └── driver_manager.py

├── reporter/
│ └── reporter.py

└── run.py

How to Run (Test on Your Own Computer) Requirements

  • Python 3.8+

  • Windows (for real driver scanning via driverquery)

Steps

  • Open a terminal

  • Navigate to the src directory:

  • cd src

Run the program:

python run.py


Example Output


=== MODULE 1: SYSTEM INFO ===


Windows


10


10.0.19045


2026-01-20 18:02:41


=== MODULE 2: DRIVER SCAN ===


Drivers scanned: 120


=== MODULE 3: ANALYSIS ===


{'total': 120, 'loaded': 120, 'unknown_version': 120, 'partial_visibility': 120}


=== MODULE 4: REPORT ===


Total Drivers: 120


Loaded Drivers: 120


Drivers with Unknown Version: 120
Partial Visibility Drivers: 120
Risk Level: At Risk

Design Notes

Missing or unavailable information is explicitly marked as "unknown"

Risk assessment is conservative and avoids assumptions

All modules are loosely coupled

Scanner can be replaced without affecting analysis or reporting

Designed to reflect real-world system tooling patterns

Future Improvements

Cross-platform driver scanning (Linux / macOS)

Driver version enrichment

Compatibility rule engine

JSON / CSV export

Logging instead of console output

Disclaimer

This project does not perform kernel-level inspection. All operations are user-space and intended for educational and architectural demonstration purposes.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages