This guide walks you through using Z-Sans from scratch: setting up the environment, running your first scan, and understanding the output.
Requirements¶
- Python 3.9+
- Supported operating systems: Windows, Linux, macOS
Optional Dependencies¶
Some tools are optional external binaries; when they are missing, the engine falls back to its built-in implementations:
| Tool | Purpose | When missing |
|---|---|---|
subfinder |
Subdomain discovery | Falls back to built-in DNS resolution + free passive sources |
naabu |
Port scanning | Falls back to the built-in port.py TCP scanner |
EHole |
Web fingerprinting | Uses the built-in multi-architecture binary, or title-only extraction |
WhatWeb |
Web fingerprinting | Falls back to EHole or title-only extraction |
JSfinder |
JS / link extraction | Falls back to the built-in requests + BeautifulSoup extractor |
What does 'fallback' mean?
Z-Sans's ToolOrchestrator probes tools in order: configured path → tools directory → system PATH. When a tool cannot be found, it uses a pure PHP or pure Python internal implementation, ensuring scans are never interrupted by a missing binary.
Installation¶
git clone https://github.com/sansjtw1/Z-Sans.git
cd Z-Sans
# A virtual environment is recommended
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
Verify the installation:
External Tools
requirements.txt only contains Python dependencies. To use tools such as subfinder and naabu, you need to install / configure their paths separately. It works out of the box on the first run without any configuration (using built-in implementations).
First Scan¶
Domain Seed¶
URL Seed¶
Specify an Output Directory¶
Increase Scan Depth¶
The default is 4 levels; a greater depth discovers more assets but takes longer:
Recommendations for Resource-Constrained Environments¶
Understanding the Output¶
After a run finishes, a timestamped directory is created under output/:
flowchart TD
out["output/"]
ts["20260812_231800/<br/>Scan timestamp (YYYYMMDD_HHMMSS)"]
json["zsans_20260812_231800.json<br/>Full asset graph JSON"]
csv1["zsans_20260812_231800_assets.csv<br/>Asset table"]
csv2["zsans_20260812_231800_relations.csv<br/>Relations table"]
graphml["zsans_20260812_231800.graphml<br/>GraphML topology"]
html["zsans_20260812_231800_report.html<br/>Interactive HTML report (recommended)"]
out --> ts
ts --> json & csv1 & csv2 & graphml & html
Open the HTML report to see tabs for overview statistics, a force-directed topology graph, active assets, excluded assets, and execution metrics.
See Output & Reports for detailed documentation.
Next Steps¶
- Learn about the asset model and breeding engine
- Review all CLI parameters
- Tune the configuration file
- Manage tasks in the browser with the Web console