Amritha.D.B (24BCE5064) Mokshita.C.V(24BCE1094) Smrithi.S(24BCE1698)
The Wi-Fi Network Scanner is a Python-based project built using Flask, Scapy, and Nmap to detect all active devices connected to a local network (LAN or Wi-Fi hotspot).
It displays key details such as:
- Device IP address
- MAC address
- Vendor/Manufacturer name
- Network Topology Visualization – shows how devices are connected within the local network.
This tool demonstrates practical network discovery, packet-level scanning, and web-based visualization concepts — ideal for cybersecurity, IoT, and computer networks coursework.
- 🔍 Real-time device scanning within your network
- 🌐 Web interface built using Flask
- 🧠 Automatic subnet detection (e.g., 192.168.0.0/24)
- 🧭 Topology Visualization of connected devices
- ⚙️ Combines Nmap & ARP scanning for high accuracy
- 💻 Cross-platform compatibility (macOS, Windows, Linux)
wifi-scanner/
│
├── app.py # Flask backend server
├── scanner.py # Network scanning logic (Nmap + ARP)
├── static/
│ ├── index.html # Web interface for scanning & viewing devices
└── README.md # Project documentation
- The user accesses the web interface served by Flask.
- When “Scan Network” is clicked, the browser sends a request to
/api/scan. scanner.py:- Detects your subnet
- Runs Nmap and ARP requests to find connected devices
- Retrieves IP, MAC, and Vendor details
- Returns the data to Flask for rendering in the UI
- The result is shown dynamically on the web page — including a graphical network topology of all connected devices.
Ensure the folder structure looks like this:
wifi-scanner/
│── app.py
│── scanner.py
│── static/
│ ├── index.html
cd wifi-scanner
python3 -m venv venv
source venv/bin/activatepip install flask scapy python-nmapsudo python3 app.py(sudo is required for network scanning permissions)
If you get:
Port 5055 already in use
Run:
sudo lsof -i :5055
sudo kill -9 <PID>
sudo python3 app.pyhttp://127.0.0.1:5055
or from another device on the same network:
http://<your_mac_ip>:5055
If scanning via a mobile hotspot, ensure all devices are in the same local network.
Many hotspots isolate devices, preventing detection. Follow one of the setups below 👇
- Go to System Settings → General → Sharing
- Enable Internet Sharing
- Share your connection from: Wi-Fi / iPhone USB
- Share to computers using: Wi-Fi
- Click Wi-Fi Options → set:
- Network Name:
MyMacHotspot - Security:
WPA2 Personal - Password:
12345678
- Network Name:
- Turn ON Internet Sharing
- Connect your phone/laptop to this hotspot
- Run the scanner again — devices will now be discoverable 🎯
- Connect Mac + other devices to the same hotspot
- Disable network privacy filters:
- On iPhone:
Settings → Wi-Fi → (i) → turn off Private Wi-Fi Address and Limit IP Tracking - On Mac:
System Settings → Network → Wi-Fi → (i) → disable Limit IP Address Tracking
- On iPhone:
- Click Renew DHCP Lease on your Mac’s Wi-Fi settings.
- Find your Mac’s IP:
ipconfig getifaddr en0
- Run:
sudo python3 app.py
- Open in browser:
or
http://127.0.0.1:5055http://<your_mac_ip>:5055
Some mobile hotspots block LAN discovery — if scan results are empty, switch to Option A.
| Issue | Cause | Fix |
|---|---|---|
| No devices found | Mobile hotspot isolation | Use Internet Sharing mode |
| Port 5055 busy | Flask instance still running | sudo lsof -i :5055 → sudo kill -9 <PID> |
| Permission denied | Missing sudo | Run sudo python3 app.py |
| Vendor shows as "Unknown" | Vendor DB incomplete | Update Nmap or add manually |