Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
DivideAndScan — 将全端口扫描结果分割,并将其用于有针对性的Nmap运行。 | Kitploit
工具/GitHubGitHub/snovvcrash/divideandscan
漏洞扫描器网络映射端口扫描脚本与自动化渗透测试
GitHubsnovvcrash/divideandscan

DivideAndScan

将全端口扫描结果分割,并将其用于有针对性的Nmap运行。

查看仓库
33349662年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

DivideAndScan

Divide Et Impera And Scan(以及合并扫描结果)

版本号 python codacy pypi docker

特色项目

NixOSNixOSoffsec.tools
NixOSoffsec.tools

DivideAndScan 用于通过将端口扫描流程分为三个阶段来高效自动化端口扫描:

  1. 针对一批目标发现开放端口。
  2. 对每个目标单独运行 Nmap,进行版本探测和 NSE 动作。
  3. 将结果合并为单个 Nmap 报告(支持不同格式)。

第一阶段使用 快速端口扫描器,其输出被解析并存储在单个文件数据库(TinyDB)中。接着,在第二阶段,根据数据库数据为每个目标及其开放端口启动单独的 Nmap 扫描(支持多进程)。最后,在第三阶段,使用 nMap_Merger 将独立的 Nmap 输出合并为不同格式的单个报告(XML / HTML / 纯文本 / grepable)。可视化部分由 DrawNmap 提供。

潜在使用场景:

  • 渗透测试任务 / 红队行动,涉及大量待枚举范围
  • 网络安全演习 / CTF 训练实验室
  • OSCP 认证考试

* 可用的端口扫描器:

  • Nmap
  • Masscan
  • RustScan
  • Naabu
  • NimScan
  • sx

免责声明。 本仓库中的所有信息仅供教育和研究目的。作者不对任何非法使用本工具的行为负责。

工作原理

how-it-works.png

安装方法

前提条件

为了成功进行“分而扫描”,我们需要获取一些优秀的端口扫描工具(在下面的示例中,GitHub 发行版通过 eget 获取)。

📑 注意: 如果你不想在宿主操作系统上折腾依赖关系,请跳转到 Docker 部分。

Nmap

root@kitploit:~
sudo apt install nmap xsltproc -y
sudo nmap --script-updatedb

Masscan

root@kitploit:~
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*

RustScan

root@kitploit:~
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

Naabu

root@kitploit:~
sudo mkdir /opt/naabu
sudo eget -s linux/amd64 projectdiscovery/naabu --to /opt/naabu
sudo ln -sv /opt/naabu/naabu /usr/local/bin/naabu

NimScan

root@kitploit:~
sudo mkdir /opt/nimscan
sudo eget -a NimScan elddy/NimScan --to /opt/nimscan
sudo ln -sv /opt/nimscan/nimscan /usr/local/bin/nimscan

sx

root@kitploit:~
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

dnsx

root@kitploit:~
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 安装,以便始终拥有最新版本:

root@kitploit:~
~$ pipx install -f "git+https://github.com/snovvcrash/DivideAndScan.git"
~$ das

还有一个使用 shiv 打包的发行版(但文件体积较大):

root@kitploit:~
# 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 设置开发环境:

root@kitploit:~
~$ git clone --recurse-submodules https://github.com/snovvcrash/DivideAndScan
~$ cd DivideAndScan
~$ poetry install
~$ poetry run das

📑 注意: DivideAndScan 使用 sudo 运行所有端口扫描器,因此当调用扫描命令时会要求输入密码。

使用 Docker 运行

dockeri.co

你可以按如下方式在 Docker 容器中运行 DivideAndScan:

root@kitploit:~
~$ docker run --rm -it --name das -v ~/.das:/root/.das -v `pwd`:/app -p 8050:8050 snovvcrash/divideandscan

由于该工具需要输入数据并产生输出数据,你应该将当前工作目录挂载到容器内的 /app 路径。另外,在宿主机上发布 8050 端口可以访问用于 Nmap 报告可视化的 Dash 应用。

你可以设置别名来缩短基础命令:

root@kitploit:~
~$ alias das='docker run --rm -it --name das -v ~/.das:/root/.das -v `pwd`:/app -p 8050:8050 snovvcrash/divideandscan'
~$ das

使用方法

how-to-use.png

1. 填充数据库

为 add 模块提供快速端口扫描器的命令,以发现所需范围内的开放端口。

2. 针对性扫描

3(可选). 合并报告

🔥 示例 🔥

让我们为 Hack The Box 上的所有活动机器枚举开放端口。

  1. 使用 Masscan 将“主机 ⇄ 开放端口”映射添加到数据库。为了演示目的,我将排除动态端口范围以避免不必要的内容,使用 -p1-49151。在第二张截图中,我按主机和端口查看扫描结果:
root@kitploit:~
~$ das -db htb add -rm masscan '-e tun0 --rate 1000 -iL hosts.txt -p1-49151 --open'

示例-1.png

root@kitploit:~
~$ das -db htb scan -hosts all -show
~$ das -db htb scan -ports all -show

示例-2.png

  1. 为每个目标启动 Nmap 进程,仅枚举我们感兴趣的端口(即开放端口)。在第二张截图中,我做了相同操作,但同时启动了 Nmap 进程:
root@kitploit:~
~$ das -db htb scan -hosts all -oA report

示例-3.png

root@kitploit:~
~$ das -db htb scan -hosts all -oA report -nmap '-Pn -sVC -O' -parallel

示例-4.png

自带扫描器!

你可以通过为 DivideAndScan 实现一个针对其输出的 parse 方法(位于 das/parsers/DUMMY_SCANNER.py,见 masscan 示例),将你最喜欢的端口扫描器与 DivideAndScan 配对:

root@kitploit:~
from das.parsers import IAddPortscanOutput


class AddPortscanOutput(IAddPortscanOutput):
    """用于处理 DUMMY_SCANNER 输出的子类。"""

    def parse(self):
        """
        DUMMY_SCANNER 原始输出解析器。

        :return: 一对值(端口扫描原始输出文件名,添加到数据库的主机数)
        :rtype: tuple
        """
        hosts = set()
        for line in self.portscan_raw:
            # DUMMY_SCANNER 解析器实现
            pass

        return (self.portscan_out, len(hosts))

帮助

root@kitploit:~
usage: das [-h] [-db DB] {db,add,scan,dns,report,parse,draw,tree,help} ...

 -----------------------------------------------------------------------------------------------
|  ________  .__      .__    .___        _____              .____________                       |
|  \______ \ |__|__  _|__| __| _/____   /  _  \   ____    __| _/   _____/ ____ _____    ____    |
|   |    |  \|  \  \/ /  |/ __ |/ __ \ /  /_\  \ /    \  / __ |\_____  \_/ ___\\__  \  /    \   |
|   |    `   \  |\   /|  / /_/ \  ___//    |    \   |  \/ /_/ |/        \  \___ / __ \|   |  \  |
|  /_______  /__| \_/ |__\____ |\___  >____|__  /___|  /\____ /_______  /\___  >____  /___|  /  |
|          \/                 \/    \/        \/     \/      \/       \/     \/     \/     \/   |
|  {@snovvcrash}            {https://github.com/snovvcrash/DivideAndScan}             {vX.Y.Z}  |
 -----------------------------------------------------------------------------------------------

位置参数:
  {db,add,scan,dns,report,parse,draw,tree,help}
    db                  手动操作数据库的工具
    add                 运行完整端口扫描并将输出添加到数据库
    scan                针对数据库中的主机和端口运行指定 Nmap 扫描
    dns                 将输入文件中的域名映射到数据库中对应的 IP 地址
    report              将独立的 Nmap 输出合并为单个报告 (https://github.com/CBHue/nMap_Merger)
    parse               按服务名称解析原始 Nmap XML 报告,并打印格式为 {service}://{host}:{port} 的条目
    draw                可视化 Nmap XML 报告 (https://github.com/jor6PS/DrawNmap)
    tree                使用 tree 命令显示 ~/.das/ 目录的内容
    help                显示所选端口扫描器的内置 --help 对话框

选项:
  -h, --help            显示此帮助信息并退出
  -db DB                要操作的数据库名称

嘿,朋友……想来点有组织的端口扫描吗?

待办事项

  • 添加 projectdiscovery/naabu 解析器
  • 添加 elddy/NimScan 解析器
  • 添加 sx 解析器
  • 添加 ZMap 解析器
  • 在 IP 值旁边存储主机名(如果有的话)
  • 添加 fuff 开关以自动化 Web 目录模糊测试(已添加 parse 模块)
下载工具

⚠️ 警告: 请确保你了解自己在做什么,因为几乎所有端口扫描工具如果使用不当都可能损坏被测试的系统。

root@kitploit:~
# Nmap,-v 参数对于正确解析是必需的!
~$ das add nmap '-v -n -Pn -e eth0 --min-rate 1000 -T4 -iL hosts.txt -p1-65535 --open'
# Masscan
~$ das add masscan '--rate 1000 -iL hosts.txt -p1-65535 --open'
# RustScan
~$ das add rustscan '-b 1000 -t 2000 -u 5000 -a hosts.txt -r 1-65535 -g --no-config'
# Naabu
~$ das add naabu '-rate 1000 -iL hosts.txt -p - -silent -s s'
# NimScan
~$ das add nimscan '192.168.1.0/24 -vi -p:1-65535 -f:500'
# sx
~$ sudo sx arp -i eth0 192.168.1.0/24 --json | tee arp.cache
~$ das add sx 'tcp syn -a arp.cache -i eth0 --rate 1000/s 192.168.1.0/24 -p 445,3389'

当模块开始工作时,会创建目录 ~/.das/db,模块流程结束后,数据库文件和原始扫描结果将被放入其中。

使用 scan 模块启动针对性的 Nmap 扫描。你可以通过 -hosts 或 -ports 选项调整扫描范围:

root@kitploit:~
# 按主机扫描
~$ das scan -hosts all -oA report1
~$ das scan -hosts 192.168.1.0/24,10.10.13.37 -oA report1
~$ das scan -hosts hosts.txt -oA report1
# 按端口扫描
~$ das scan -ports all -oA report2
~$ das scan -ports 22,80,443,445 -oA report2
~$ das scan -ports ports.txt -oA report2

要同时启动多个 Nmap 进程,请指定 -parallel 开关,并通过 -proc 选项设置工作进程数量(如果未提供值,则默认为机器上的处理器数量):

root@kitploit:~
~$ das scan -hosts all -oA report -parallel [-proc 4]

输出格式通过 -oX、-oN、-oG 和 -oA 选项选择,分别对应 XML+HTML 格式、纯文本格式、grepable 格式和所有格式。当模块完成工作时,会创建目录 ~/.das/nmap_<DB_NAME>,其中包含 Nmap 原始扫描报告。

此外,你可以在实际启动扫描之前使用 -show 选项查看数据库内容:

root@kitploit:~
~$ das scan -hosts all -show

为了独立于 scan 模块生成报告,你应该使用 report 模块。它将在 ~/.das/nmap_<DB_NAME> 目录中搜索 Nmap 原始扫描报告,并根据 -hosts 或 -ports 选项进行处理和合并:

root@kitploit:~
# 按主机合并输出
~$ das report -hosts all -oA report1
~$ das report -hosts 192.168.1.0/24,10.10.13.37 -oA report1
~$ das report -hosts hosts.txt -oA report1
# 按端口合并输出
~$ das report -ports all -oA report2
~$ das report -ports 22,80,443,445 -oA report2
~$ das report -ports ports.txt -oA report2

📑 注意: 请记住,report 模块在处理 -hosts 或 -ports 选项时 不会 搜索数据库,而是直接在 ~/.das/nmap_<DB_NAME> 目录中查找 Nmap 原始报告;这意味着只有当 ~/.das/nmap_<DB_NAME>/127-0-0-1.* 文件存在时,-hosts 127.0.0.1 参数值才能被成功解析;而只有当 ~/.das/nmap_<DB_NAME>/port80.* 文件存在时,-ports 80 参数值才能被成功解析。

  • 最终我们得到了一个包含所有常见 Nmap 格式(纯文本、grepable、XML)以及精美 HTML 报告的单一报告。
  • 示例-5.png