Spynet is a modular network scanning tool designed for IT professionals and hobbiest with an ever growing IT landscape in their homes. It performs ARP scans to detect live hosts on your network and then conducts SYN-based port scans on those hosts. The results are displayed in a live-updating, modern React dashboard with a dark theme.
In today's network and IOT landscape, staying on top of your network's status is essential. Spynet provides an up-to-date overview of active hosts, open ports, and device details (including MAC vendor information), helping you monitor your network in real time. Whether you’re a hobbiest or a network engineer, Spynet gives you the visibility you need to know your environment.
- ARP Scanning: Quickly discover live hosts on a specified network range.
- Port Scanning: Perform SYN-based port scans on discovered hosts.
- Live Dashboard: A React-based dashboard updates in real time via Socket.IO.
- MAC Vendor Lookup: Identify device vendors based on their MAC addresses.
Note: This version does not yet include some advanced features (see the TODO section below).
- Python 3.8+
- pip
- Node.js and npm
- sudo/administrator privileges (for raw socket operations)
-
Clone the repository:
git clone https://github.com/Rival420/spynet2.git cd spynet -
Create and activate a Python virtual environment:
python3 -m venv venv source venv/bin/activate -
Install required Python packages:
pip install -r requirements.txt
-
Start the Python server:
The server requires administrative privileges for raw socket access.
sudo ./venv/bin/python server.py
-
Navigate to the React app directory:
cd spynet -
Install Node dependencies:
npm install
-
Configure the API endpoint:
Create a
.envfile in the React project root with the following line:REACT_APP_API_ENDPOINT=http://<host>:5000
Adjust the IP address/port if needed.
-
Start the React development server:
npm start
Your dashboard should now be accessible (e.g., at
http://localhost:3000), and it will connect to your backend for live updates.
- Live Dashboard: Once both backend and frontend are running, the dashboard will show live hosts discovered by ARP scans, along with their MAC addresses, vendor information, and port scan status.
- On-Demand Scans: Click on a host in the dashboard to bring up controls to initiate additional port scans or banner grabbing for that specific host.
The following features are planned for future updates:
-
Database Integration:
Persist host scan data in a database (e.g., SQLite with SQLAlchemy) so that results are retained across reboots or server restarts. -
DHCP Flag for Dynamic IPs:
Allow setting a DHCP flag on certain IPs via the GUI so that these entries are refreshed (or removed) automatically after a configurable interval. -
Hostname Assignment:
Provide an option in the GUI for users to assign custom hostnames to devices for easier identification. -
GUI-Based Scanner Control:
Add controls in the React dashboard to start, stop, and pause scanning, and allow configuration of scanning parameters (like scan interval and port range) through the GUI. -
Fix Database fields to be persistent:
Some fields are not being correctly saved in the database which results in loss of info on a device when the service restarts. examples: DHCP flag, hostname, open ports -
UI Improvements:
I want the offline hosts to be available in another list and with a switch hide or show them -
Floating menu fix:
The Floating menu is working better but still up for some improvements for better UI experience.
Contributions are welcome! Feel free to fork the repository, open issues, or submit pull requests.