You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Full NSE-suite network scanner — 58 embedded scripts, zero installs, works completely offline
Changelog
v2.2.0
Area
Improvement
Targets
-iL FILE (Python) / -TargetFile, alias -iL (PowerShell) — scan a list of targets read one per line from a file, or from stdin with -iL -
Targets
Target specs from the command line and the list file are merged and de-duplicated, so an overlapping CIDR and file never scan a host twice
Help
-h / --help (Python) and -h / -Help (PowerShell) print full usage: every flag, the target forms, and examples. Running with no arguments prints the same help instead of a bare usage error
Help
Get-Help .\zscan.ps1 -Full now works — the comment-based help block was never reachable, because Get-Help needs a blank line between it and #Requires/the script body
Help
-V / --version (Python) prints the version and exits
Fix
PowerShell: a ping sweep listed live hosts on the console but wrote "hosts": [] to every -Output* file — the sweep's early exit skipped recording them
Fix
PowerShell: CSV and HTML reports skipped any live host with no open ports
Fix
PowerShell: -ScanType Ping now reports how a host answered (icmp, tcp/445) instead of a bare up
Fix
PowerShell: the script would not parse at all under Windows PowerShell 5.1 — a UTF-8 em dash read through the ANSI codepage closed a string early and cascaded into 50 bogus syntax errors. The file is now pure ASCII, and .gitattributes records why it must stay that way
Fix
PowerShell: every CIDR target silently expanded to zero hosts ([uint32]0xFFFFFFFF overflows in 5.1, and the error was swallowed). /23 → 510 hosts again; /32 and /31 now expand per RFC 3021, and a bad prefix warns
Docs
README script counts corrected, and four scripts that do not exist were dropped from the list
A list file holds one target per line — any of the forms above. Blank lines
and everything after a # are ignored, and a line may still hold several
specs separated by spaces or commas:
A command-line target and -iL can be combined; the two lists are merged and
de-duplicated, and the banner and output files name the list source instead of
echoing every host.
-OutputJSON r.json
-OutputHTML r.html Dark themed dashboard
-OutputCSV r.csv
Help
python3 zscan.py -h # full usage: flags, target forms, examples
python3 zscan.py --help
python3 zscan.py # no arguments prints the same help
python3 zscan.py -V # version
.\zscan.ps1 -h # full usage: flags, target forms, examples
.\zscan.ps1 -Help
.\zscan.ps1 # no arguments prints the same helpGet-Help .\zscan.ps1 -Full # comment-based help, PowerShell style
Air-Gap Guarantee
Check
Python
PowerShell
External imports
✅ stdlib only
✅ System.Net only
Package manager calls
✅ None
✅ None
Auto-downloads
✅ None
✅ None
Outbound connections
✅ Only to your targets
✅ Only to your targets
Copy a single file to the target. Run. Done.
Install
# Linux — run from anywhere
sudo cp zscan.py /usr/local/bin/zscan
sudo chmod +x /usr/local/bin/zscan
zscan 192.168.1.1 --script all
# Windows — allow local scripts then runSet-ExecutionPolicy-Scope CurrentUser RemoteSigned
.\zscan.ps1 -Target 192.168.1.1-Scripts all
For authorised security testing only. Only scan systems you own or have explicit written permission to test.
MIT License
About
Single-file network scanner — 58 NSE-equivalent scripts, air-gap safe. TCP/SYN/UDP/FIN/NULL/XMAS scans, OS detection, version fingerprinting. Pure Python (Linux/Windows) + Pure PowerShell (Windows). Zero installs, works offline. JSON/XML/HTML output.