Divide Et Impera And Scan(以及合并扫描结果)
DivideAndScan 用于通过将端口扫描流程分为三个阶段来高效自动化端口扫描:
第一阶段使用 快速端口扫描器,其输出被解析并存储在单个文件数据库(TinyDB)中。接着,在第二阶段,根据数据库数据为每个目标及其开放端口启动单独的 Nmap 扫描(支持多进程)。最后,在第三阶段,使用 nMap_Merger 将独立的 Nmap 输出合并为不同格式的单个报告(XML / HTML / 纯文本 / grepable)。可视化部分由 DrawNmap 提供。
潜在使用场景:
* 可用的端口扫描器:
免责声明。 本仓库中的所有信息仅供教育和研究目的。作者不对任何非法使用本工具的行为负责。

为了成功进行“分而扫描”,我们需要获取一些优秀的端口扫描工具(在下面的示例中,GitHub 发行版通过 eget 获取)。
📑 注意: 如果你不想在宿主操作系统上折腾依赖关系,请跳转到 Docker 部分。
sudo apt install nmap xsltproc -y
sudo nmap --script-updatedb
pushd /tmp
wget https://github.com/ivre/masscan/archive/refs/heads/master.zip -O masscan-master.zip
unzip masscan-master.zip
cd masscan-master
make
sudo make install
popd && rm -rf /tmp/masscan-master*
eget -t 2.0.1 -a amd64 RustScan/RustScan --to /tmp/rustscan.deb
sudo dpkg -i /tmp/rustscan.deb && rm /tmp/rustscan.deb
sudo wget https://gist.github.com/snovvcrash/8b85b900bd928493cd1ae33b2df318d8/raw/fe8628396616c4bf7a3e25f2c9d1acc2f36af0c0/rustscan-ports-top1000.toml -O /root/.rustscan.toml
sudo mkdir /opt/naabu
sudo eget -s linux/amd64 projectdiscovery/naabu --to /opt/naabu
sudo ln -sv /opt/naabu/naabu /usr/local/bin/naabu
sudo mkdir /opt/nimscan
sudo eget -a NimScan elddy/NimScan --to /opt/nimscan
sudo ln -sv /opt/nimscan/nimscan /usr/local/bin/nimscan
sudo mkdir /opt/sx
sudo eget -s linux/amd64 v-byte-cpu/sx --to /opt/sx
sudo ln -sv /opt/sx/sx /usr/local/bin/sx
sudo mkdir /opt/pd
sudo eget -s linux/amd64 projectdiscovery/dnsx --to /opt/pd
sudo ln -sv /opt/pd/dnsx /usr/local/bin/dnsx
DivideAndScan 在 PyPI 上以 divideandscan 提供,但我建议使用 pipx 从 GitHub 安装,以便始终拥有最新版本:
~$ pipx install -f "git+https://github.com/snovvcrash/DivideAndScan.git"
~$ das
# shiv -e das.divideandscan:main -o das.pyz divideandscan
~$ wget https://github.com/snovvcrash/DivideAndScan/releases/latest/download/das.pyz && chmod +x das.pyz
~$ ./das.pyz
为了调试目的,你可以使用 poetry 设置开发环境:
~$ git clone --recurse-submodules https://github.com/snovvcrash/DivideAndScan
~$ cd DivideAndScan
~$ poetry install
~$ poetry run das
📑 注意: DivideAndScan 使用 sudo 运行所有端口扫描器,因此当调用扫描命令时会要求输入密码。
你可以按如下方式在 Docker 容器中运行 DivideAndScan:
~$ docker run --rm -it --name das -v ~/.das:/root/.das -v `pwd`:/app -p 8050:8050 snovvcrash/divideandscan
由于该工具需要输入数据并产生输出数据,你应该将当前工作目录挂载到容器内的 /app 路径。另外,在宿主机上发布 8050 端口可以访问用于 Nmap 报告可视化的 Dash 应用。
你可以设置别名来缩短基础命令:
~$ alias das='docker run --rm -it --name das -v ~/.das:/root/.das -v `pwd`:/app -p 8050:8050 snovvcrash/divideandscan'
~$ das

|
为 ⚠️ 警告: 请确保你了解自己在做什么,因为几乎所有端口扫描工具如果使用不当都可能损坏被测试的系统。
当模块开始工作时,会创建目录 |
|
使用
要同时启动多个 Nmap 进程,请指定
输出格式通过 此外,你可以在实际启动扫描之前使用 |