A network scanning tool with CVE detection built as a learning project.
This project was built to apply and experiment with concepts related to network scanning, service detection, and vulnerability analysis. The goal was to understand how tools like Nmap and CVE databases work together in practice rather than to build a production-ready scanner.
Make sure the following are installed before running the project:
- Python 3.9 or higher
- Nmap (required for scanning)
- Python dependencies listed in
requirements.txt
Note: Installing python-nmap alone is not sufficient. The actual Nmap program must be installed and available in the system PATH. Nmap must be installed separately and is not installed through pip.
git clone https://github.com/rufaidaafrin/vulnerability-analysis-tool.git
cd vulnerability-analysis-tool
pip install -r requirements.txt
Install Nmap
Download and install Nmap from the official website:
https://nmap.org/download.html
During installation, ensure that the option to add Nmap to PATH is enabled.
Verify installation:
nmap --version
Running the Application
python src/gui.py
This command will open the Network Vulnerability Scanner GUI.
Usage
Enter a target IP address (for testing, 127.0.0.1 can be used).
Click the Start Scan button.
Wait for the scan to complete.
Depending on the system and scan configuration, results may take 1–3 minutes to appear. Scanning a large port range may take longer.
Common Issues
If the scan appears to hang or takes too long, try running the command prompt as Administrator.
Ensure Nmap is correctly installed and accessible from the command line.
Scans may take longer on Windows due to system permissions.
Notes
This project is intended for learning and experimentation. It focuses on understanding security workflows, debugging, and integrating multiple tools rather than providing a complete vulnerability assessment solution.
- How Nmap performs port/service scanning and how to drive it programmatically from Python
- Correlating detected services and versions against CVE data to flag known vulnerabilities
- Building a GUI to wrap a security scanning tool for usability
- Handling cross-platform quirks (PATH setup, admin permissions on Windows) when shelling out to external tools
- Structuring code to separate scanning logic from the UI layer