A lightweight, cross-platform (Windows-focused) network auditing tool built with Python, KivyMD, and Scapy. This application performs ARP broadcasting to discover active devices on a local network and enriches the data with manufacturer information via MAC OUI lookup.
- Why This Project Exists
- Screenshot
- Features
- Project Structure
- How To Run
- Installation
- Challenges Faced
- Roadmap Features
- Notes
This project was created to explore low-level network discovery using Scapy while building a modern desktop interface with KivyMD. The goal was to provide a lightweight network auditing tool that can quickly identify active devices and their manufacturers on a local network.
- Target network range input.
- One-click ARP network discovery.
- Real-time device enumeration.
- IP and MAC address identification.
- Manufacturer detection via OUI lookups.
- Online status visibility.
-
Real-time Network Discovery: Discover IP and MAC addresses within a specified CIDR range (e.g., /24).
-
Manufacturer Identification: Automatically identifies device vendors (Apple, Samsung, etc.) using the MacVendors API.
-
Multi-threaded Execution: Scans run in a background thread to keep the UI responsive and "jank-free."
-
Modern UI: Clean Material Design interface with pagination and sorting.
-
Production Logging: Integrated with Loguru for detailed, colour-coded terminal output and persistent log files.
network_security_scanner/
βββ venv/
βββ main.py # Primary application logic and UI
βββ screenshots # Screenshots
βββ requirements.txt # Project dependencies
βββ .gitignore # Files to exclude from Git
βββ scanner_debug.log # Auto-generated log file
βββ README.md
Prerequisites Python 3.10+
-
Npcap: Required for Scapy to send/receive raw packets on Windows.
-
Administrator Privileges: You must run your terminal/IDE as Administrator to allow Scapy to access the network interface.
Clone the repo:
git clone https://github.com/reory/network-security-scanner.git
cd network-security-scanner- Python 3.10+
- Windows 10 / 11
- Npcap
- Administrator privileges
python -m venv venv .\venv\Scripts\activate
pip install -r requirements.txt
python main.py
-
KivyMD Versioning: Navigating the transition between KivyMD 1.2.0 (Stable) and 2.0.0 (Dev). I opted for 1.2.0 to ensure MDDataTable stability.
-
Windows Interface Routing: Overcame issues where Scapy would target disconnected adapters by implementing conf.route to auto-detect the active Gateway interface.
-
UI Threading: Learned to use Kivy's Clock.schedule_once to safely update the UI from a background scanning thread, preventing application freezes.
- Custom Light/Dark Mode toggle
- Export scans to CSV
- Export scans to PDF reports
- Local OUI vendor database
- Device history tracking
- Port scanning module
- Scheduled network scans
- Hostname resolution
- Scan comparison reports
-
Permissions: If the app hangs on "Scanning," ensure you are running as Administrator.
-
API Limits: Important The vendor lookup uses a free API which may rate-limit requests if scanning very large networks.
-
Happy coding, reach out if you want to contribute.π
- Built by Roy Peters π
