a small command-line + GUI toolkit for practicing core networking concepts -- built while learning networking and Git/GitHub
Four commands, each mapped to a concept that shows up constantly in network engineering work and interviews. No external dependencies -- everything runs on the Python standard library, so it works without admin/root privileges (it shells out to the OS ping/arp/tracert tools instead of crafting raw packets).
| subnet | IP addressing, CIDR notation, VLSM |
| scan | ARP, ICMP, DNS -- how host discovery actually works on a LAN |
| portscan | the TCP three-way handshake and well-known ports |
| traceroute | TTL and how routers report path information via ICMP |
Network address, broadcast, netmask, wildcard mask, usable host range and count. --split breaks a block into smaller subnets, VLSM-style -- the same math used to carve an office network into per-department ranges. Live version below.
Ping-sweeps every address in a range, cross-references the OS ARP cache for MAC addresses, and reverse-DNS-resolves hostnames -- a lightweight version of nmap -sn. Only meaningful run against a network you're actually on, so it isn't hosted here (see note below).
Attempts a full TCP handshake against each port and reports which accepted a connection, with well-known service names. --csv exports every result for the pandas/matplotlib analytics pass.
Wraps the OS traceroute tool to show each hop between you and a destination, keeping the tool dependency-free and privilege-free.
python -m nettoolkit.gui) is a Tkinter desktop app with one animated tab per command above -- it calls the exact same modules as the CLI, nothing about the scans themselves is simulated, only the presentation.scan, portscan, and traceroute aren't hosted here: LAN Scan only makes sense against the network you're actually on (run from this cloud server it would scan the server's own cloud network, not yours), and running arbitrary port scans/traceroutes from a shared cloud IP risks the host's abuse policy -- both are things to run locally, which is exactly what the CLI/GUI are for.