Project 01 / Development notes
Rastro.
A Python CLI for Nmap scans, reports, and snapshot comparison.
A project exploring network tooling and how to turn scan output into useful records.
The animated walkthrough launches Rastro, selects New scan, discovers and selects a target, runs a Detailed Service Scan, and saves a report and snapshot. All output is demonstration data.
The implementation.
Nmap handles discovery and scanning. Python parses the XML into host and service objects, then displays results or writes TXT and CSV reports.
Saved JSON snapshots record observations by IP address for later comparison.
Built with
- Python / Nmap / etree
- Scan execution and XML parsing
- EasyMenu3 / pick
- Main menu and target selection
- psutil / Rich
- Interface discovery and progress output
Why I built it.
I wanted to learn Python while bringing discovery, configurable scans, service identification, and reports into one structured CLI workflow.
V0.1 documents network observations. Broader diagnostics and security assessment are future goals.
Investigating a slow scan.
One test host took 144.77 seconds in Standard mode. Its 999 filtered ports left Nmap waiting and retrying TCP connections; XML parsing and reporting were not the main bottleneck.
Different port counts, not a before-and-after optimization benchmark. The investigation identified where the time was being spent.
A home-network check.
For a family-network check, a saved scan can help investigate a NAS dashboard that stops opening after an update. Repeating the same scan of that host could show port 80 no longer open and port 443 newly open.
The next steps would be to try HTTPS and inspect the NAS configuration. The comparison narrows the investigation; confirming the configuration establishes the cause.
The useful part here is keeping a baseline and showing the difference in one workflow. Nmap still supplies the underlying observations.