A lightweight web-based WiFi network visualization and analysis tool
Features β’ Installation β’ Usage β’ API β’ Contributing
- Interactive mapping of WiFi access points with real-time data
- Signal strength visualization with physics-based propagation modeling
- Frequency analysis supporting 2.4GHz and 5GHz bands
- Network clustering for performance at scale
- Mapbox Standard style with dynamic time-of-day lighting
- 3D buildings and terrain visualization
- Auto-fitting bounds that adapt to your data
- Point jittering to separate overlapping networks
- Multiple format support: WiGLE exports, GeoJSON, custom formats
- Real-time filtering by network visibility
- Signal range calculation based on RF propagation physics
- Deduplication of overlapping scan data
- Responsive design for desktop and mobile
- Collapsible sidebar with network legend
- Hover tooltips with detailed network information
- Batch file processing with progress indicators
- Modern web browser (Chrome 90+, Firefox 88+, Safari 14+)
- HTTP server (required for CORS and modules)
- Mapbox account for map tiles (Get free token)
-
Clone the repository
git clone https://github.com/yourusername/shadowcheck-lite.git cd shadowcheck-lite -
Configure Mapbox token
cp config.example.js config.js # Edit config.js with your Mapbox token -
Start local server
# Python python -m http.server 8080 # Node.js npx http-server -p 8080 # PHP php -S localhost:8080
-
Open in browser
http://localhost:8080/public/index.html
- Click the file input in the sidebar
- Select JSON files containing WiFi scan data
- Watch the map populate with access point locations
- Use the legend to toggle network visibility
{
"results": [
{
"trilat": 43.0125,
"trilong": -83.6875,
"ssid": "MyNetwork",
"netid": "AA:BB:CC:DD:EE:FF",
"signal": -45,
"frequency": 2437,
"encryption": "WPA2"
}
]
}{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-83.6875, 43.0125]
},
"properties": {
"bssid": "AA:BB:CC:DD:EE:FF",
"ssid": "MyNetwork",
"signal_dbm": -45,
"frequency_mhz": 2437,
"encryption": "WPA2"
}
}
]
}| Control | Function |
|---|---|
| Sidebar Tab | Toggle sidebar visibility |
| Time Icon | Cycle through time-of-day lighting |
| Jitter Icon | Toggle point jittering for overlapping networks |
| 3D Icon | Enable 3D buildings and terrain |
| Toggle All | Show/hide all networks at once |
| Legend Items | Click to toggle individual networks |
window.CONFIG = {
MAPBOX_ACCESS_TOKEN: 'your_token_here'
};Calculates realistic WiFi signal propagation range based on:
- Signal strength (dBm)
- Frequency (2.4GHz vs 5GHz)
- Environmental factors (urban/indoor loss)
- Map zoom level for display scaling
Generates consistent colors for MAC addresses using:
- OUI-based hue for manufacturer consistency
- Device-specific saturation/lightness for uniqueness
- HSL color space for optimal visibility
shadowcheck-lite/
βββ public/
β βββ index.html # Main application
βββ src/
β βββ viewer.js # Standalone JavaScript
βββ styles/
β βββ style.css # Application styling
βββ config.js # Configuration (create from example)
βββ config.example.js # Configuration template
βββ test.html # Minimal test version
βββ .env.example # Environment template
βββ .gitignore # Git exclusions
βββ README.md # This file
- Radius caching prevents redundant signal calculations
- Debounced zoom events reduce rendering overhead
- Smart clustering improves performance with large datasets
- Conditional re-calculation only updates when necessary
| Browser | Minimum Version | Notes |
|---|---|---|
| Chrome | 90+ | Full support |
| Firefox | 88+ | Full support |
| Safari | 14+ | Full support |
| Edge | 90+ | Full support |
# Watch for changes (if using a build system)
npm run dev
# Run tests
npm test
# Lint code
npm run lintWe welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Add tests for new functionality
- Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
- ES6+ JavaScript
- Consistent indentation (2 spaces)
- Meaningful variable names
- JSDoc comments for functions
- Error handling for all async operations
This project is licensed under the MIT License - see the LICENSE file for details.
- Mapbox for excellent mapping APIs
- WiGLE for WiFi database inspiration
- RF propagation models based on ITU recommendations
- Community contributors who help improve this project
- π Bug Reports: GitHub Issues
- π‘ Feature Requests: GitHub Discussions
- π§ Contact: [email protected]
Made with β€οΈ for the cybersecurity community