A lightweight network scanner with scan-diff colouring, inspired by Angry IP Scanner 2.21.
TomScan discovers devices on your local network and displays their IP address, ping time, hostname, MAC address and (optionally) open ports. Running a second scan highlights new devices in green and lost devices in red.
- Auto-detects your local subnet and fills in the IP range
- Threaded ping sweep for fast scanning
- ARP table lookup for MAC addresses
- Hostname resolution via DNS and NetBIOS
- Optional port scanning with configurable port list
- Scan-diff colouring: green = new device, red = lost device
- Filter and search scan results
- CSV export and import (import a previous scan as baseline for diffing)
- Dark-themed UI
- Python 3.10+
- Tkinter (included with the standard Python installer on Windows and macOS; on Linux install the
python3-tkpackage)
There are no third-party dependencies. The project uses only the Python standard library.
python main.pyThe app auto-detects your local subnet and fills in the IP range. Press Start (or Ctrl+S) to scan.
TomScan uses PyInstaller to produce a single-file executable. A TomScan.spec file is included in the repository.
pip install pyinstallerpyinstaller TomScan.specThe executable is written to the dist/ directory:
| Platform | Output |
|---|---|
| Windows | dist/TomScan.exe |
| macOS | dist/TomScan.app |
- Windows – The scanner runs
ping.exeandarp.exeas subprocesses. No administrator privileges are required for a basic scan. A console window is suppressed automatically. - macOS / Linux – The scanner uses the system
pingandarpcommands. On some distributions you may need to run withsudofor ARP lookups to return complete results.
main.py Entry point
app.py Tkinter UI, scan orchestration, CSV export
scanner.py Scan engine (threaded ping, ARP, port scan)
network.py Platform-aware ping, ARP table parsing, NetBIOS & DNS hostname resolution
models.py Data classes (HostEntry, ScanConfig, DiffStatus)
dialogs.py Options and port-selection dialogs
constants.py Default settings and UI column definitions
TomScan.spec PyInstaller build specification
Freeware by Thomas Gulden, 2026
For updates visit github.com/ThePraiodanish/TomScan
