d3xm0s/CyberNetScope
GitHub: d3xm0s/CyberNetScope
一款基于 epoll 的高性能 C++ 网络侦察工具,提供快速端口扫描、服务指纹识别和子域名枚举等安全探测能力。
Stars: 0 | Forks: 0
# CyberNetScope
CyberNetScope 是一款使用现代 C++ 编写的快速网络探测和端口扫描工具。它会解析目标地址,映射其 DNS 记录,并发扫描 TCP 端口,抓取服务 banner,并检测产品版本。对于每个检测到的服务,它会打印一个可直接运行的 `searchsploit` 查询命令,方便你自行交叉核对已知的漏洞。
它仅进行主机发现和枚举,不会利用任何漏洞。
[俄语版本见下方](#cybernetscope-русская-версия)
## 快速开始
```
# 1. install dependencies
sudo apt update && sudo apt install build-essential cmake libssl-dev
# 2. build (both commands are required)
cmake -B build
cmake --build build
# 3. run
./build/cybernetscope --help
./build/cybernetscope scanme.nmap.org -p 1-1024 --deep
```
有关详细的步骤说明,请参阅[构建](#build)。
## 功能
- 正向和反向 DNS 解析(A/AAAA,PTR)。
- DNS 记录查询:CNAME、MX、NS、TXT。
- 并发 TCP connect 扫描(无需 root 权限)。
- Banner 抓取和服务/版本检测。
- TLS 握手详情:协议、加密套件和完整证书(CN、SANs、签发者、有效期)。
- HTTP 指纹识别:状态码、标题、重定向、powered-by。
- 内置端口参考:每个开放端口都会标注其用途。
- 风险标记:高风险和常受攻击的端口会被标记,并附有一行原因和关注摘要。
- 基于检测到的版本提供 `searchsploit` 查询提示。
- 基于字典的子域名枚举。
- 易读的控制台输出和 JSON 导出。
## 为什么使用 connect 扫描
cyberCyberNetScope 使用 TCP connect 扫描,它会完成正常的三次握手。它无需提升权限即可工作,并且在大多数 NAT 和防火墙设置下都能可靠运行。它在设计上并不隐蔽——如果你需要 SYN/隐蔽扫描,那需要使用 raw sockets 和 root 权限,这超出了本工具的范围。
发现阶段在单个 epoll 循环上运行,同时驱动数千个非阻塞 connect,因此在响应灵敏的主机上,完整的 1-65535 扫描可在几秒钟内完成。服务指纹识别(TLS、Banner、HTTP)随后仅在开放的端口上运行。
## 环境要求
- Linux。
- C++17 编译器(GCC 或 Clang)。
- CMake 3.16+。
- libresolv(随 glibc 提供)、pthreads 和 OpenSSL。
在 Debian/Ubuntu/Kali 上:
```
sudo apt update
sudo apt install build-essential cmake libssl-dev
```
### 可选的外部工具
当使用相应的标志时,cyberCyberNetScope 可以调用这些工具。它们是可选的——如果没有安装它们,相关功能只会报告缺少该工具:
```
sudo apt install masscan nuclei sqlmap
```
## 构建
按顺序执行以下步骤。这里有两个 cmake 命令,它们执行的操作不同:第一个用于配置项目,第二个用于实际编译。你两个都需要。
**第 1 步 - 获取代码。** 克隆仓库:
```
git clone https://github.com/d3xm0s/CyberNetScope.git
cd CyberNetScope
```
或者,如果你有 zip 压缩包,请解压并进入该文件夹:
```
unzip CyberNetScope.zip
cd CyberNetScope
```
**第 2 步 - 安装构建依赖**(如果已安装则跳过):
```
sudo apt update
sudo apt install build-essential cmake libssl-dev
```
**第 3 步 - 配置**(创建 `build/` 文件夹并检查你的系统):
```
cmake -B build
```
**第 4 步 - 编译**(生成二进制文件):
```
cmake --build build
```
第 4 步之后,二进制文件位于 `build/cybernetscope`。检查它是否正常工作:
```
./build/cybernetscope --help
```
**可选 - 全系统安装**,这样你就可以在任何地方运行 `cybernetscope`,而不是 `./build/cybernetscope`:
```
sudo cmake --install build
cybernetscope --help
```
如果你不想使用 cmake,可以直接编译:
```
g++ -std=c++17 -O2 -Iinclude src/*.cpp -o cybernetscope -lpthread -lresolv -lssl -lcrypto
```
## 用法
```
cybernetscope [target...] [options]
```
### 示例
通过抓取 banner 扫描主机的最常见端口:
```
cybernetscope example.com
```
扫描特定端口范围:
```
cybernetscope 192.168.1.10 -p 1-1024
```
快速扫描所有端口:
```
cybernetscope 192.168.1.10 -p 1-65535
```
列出每个已知端口的用途:
```
cybernetscope --ports-list
```
扫描多个主机上的几个指定端口:
```
cybernetscope host-a.local host-b.local -p 22,80,443,8080
```
使用内置字典枚举子域名:
```
cybernetscope -d example.com
```
使用自定义字典枚举子域名并将所有结果保存为 JSON:
```
cybernetscope -d example.com -w /usr/share/wordlists/subdomains.txt -j result.json
```
更快的扫描,更多线程,更短的超时时间,不进行版本检测:
```
cybernetscope 10.0.0.5 -p 1-65535 -t 500 --timeout 600 --no-banner
```
使用 masscan 作为发现后端,然后对其发现的结果进行指纹识别(需要 root 权限):
```
sudo cybernetscope 10.0.0.0/24 -p 1-65535 --masscan --rate 5000
```
安静的慢速扫描,以留下最小的痕迹:
```
cybernetscope 192.168.1.10 -p 1-1024 --quiet
```
带有 TLS 握手、证书详情和 HTTP 指纹识别的深度扫描:
```
cybernetscope example.com -p 443,8443 --deep
```
扫描,然后针对发现的 Web 服务运行 nuclei:
```
cybernetscope example.com --nuclei
```
通过带参数的 URL 使用 sqlmap 检测 SQL 注入:
```
cybernetscope --sqlmap "https://example.com/item?id=1"
```
向 sqlmap 传递额外选项(更深入的检测,由你自行决定):
```
cybernetscope --sqlmap "https://example.com/item?id=1" --sqlmap-args "--level=3" --sqlmap-args "--risk=2"
```
安静的慢速扫描,以留下最小的痕迹:
```
cybernetscope 192.168.1.10 -p 1-1024 --quiet
```
带有 TLS 握手、证书详情和 HTTP 指纹识别的深度扫描:
```
cybernetscope example.com -p 443,8443 --deep
```
扫描,然后针对发现的 Web 服务运行 nuclei:
```
cybernetscope example.com --nuclei
```
针对带参数的 URL 运行 sqlmap 注入检测:
```
cybernetscope --sqlmap "https://example.com/item?id=1"
```
向 sqlmap 传递额外选项(更深入的检测,由你自行决定):
```
cybernetscope --sqlmap "https://example.com/item?id=1" --sqlmap-args "--level=3" --sqlmap-args "--risk=2"
```
### 选项
| 选项 | 描述 |
|--------|-------------|
| `-p, --ports SPEC` | 端口:`22,80,443`、`1-1024` 或 `top`(默认:`top`) |
| `-t, --threads N` | 开放端口的指纹识别 worker(默认:200) |
| `--max-in-flight N` | 发现阶段的同时连接数(默认:2000) |
| `--timeout MS` | 连接超时时间(毫秒)(默认:1500) |
| `--no-banner` | 跳过 banner 抓取和版本检测 |
| `--masscan` | 使用 masscan 作为发现后端(需要 root 权限) |
| `--rate PPS` | masscan 数据包速率,每秒数据包数(默认:1000) |
| `-q, --quiet` | 隐蔽的慢速扫描(较少线程、抖动、随机顺序) |
| `--deep` | 彻底扫描:重试、更长超时、完整 TLS/证书和 HTTP 指纹识别 |
| `--nuclei` | 针对发现的 Web 服务运行 nuclei |
| `--sqlmap URL` | 针对 URL 运行 sqlmap 注入检测(可重复使用) |
| `--sqlmap-args A` | 原样传递给 sqlmap 的额外参数(可重复使用) |
| `-d, --domain NAME` | 枚举 NAME 的子域名 |
| `-w, --wordlist FILE` | 用于子域名枚举的字典 |
| `--no-dns` | 跳过 MX/NS/TXT/CNAME 查询 |
| `-j, --json FILE` | 将结果写入 JSON |
| `--no-color` | 禁用彩色输出 |
| `--ports-list` | 打印已知端口/服务参考并退出 |
| `-h, --help` | 显示帮助 |
| `-v, --version` | 显示版本 |
## 关于漏洞部分
cyberCyberNetScope 不附带 CVE 数据库,也不会断言某个服务存在漏洞。它所做的是检测产品和版本,然后打印一个你可以针对 Kali 中自带的离线 Exploit-DB 运行的 `searchsploit` 查询命令:
```
2222/tcp ssh OpenSSH 8.9p1
searchsploit OpenSSH 8.9
```
这使得结果保持客观和最新——你可以通过 `searchsploit` 或 NVD 来核对版本,而不是信任一个过时的内置列表。
## 项目布局
```
CyberNetScope/
├── CMakeLists.txt
├── README.md
├── include/cybernetscope/ public headers
│ ├── dns.hpp
│ ├── port_scanner.hpp
│ ├── banner.hpp
│ ├── service_db.hpp
│ ├── masscan.hpp
│ ├── process.hpp
│ ├── nuclei.hpp
│ ├── sqlmap.hpp
│ ├── tls.hpp
│ ├── http.hpp
│ ├── subdomain.hpp
│ ├── output.hpp
│ └── thread_pool.hpp
├── src/ implementation
│ ├── main.cpp
│ ├── dns.cpp
│ ├── port_scanner.cpp
│ ├── banner.cpp
│ ├── service_db.cpp
│ ├── masscan.cpp
│ ├── process.cpp
│ ├── nuclei.cpp
│ ├── sqlmap.cpp
│ ├── tls.cpp
│ ├── http.cpp
│ ├── subdomain.cpp
│ ├── output.cpp
│ └── thread_pool.cpp
└── data/
└── subdomains.txt default subdomain wordlist
```
## 法律声明
仅扫描你拥有或获得明确书面测试许可的系统。未经授权的扫描在你所在的司法管辖区可能是非法的。你需对自己如何使用此工具负责。
## 许可证
MIT。请参阅 `LICENSE` 文件。
# CyberNetScope (俄语版本)
CyberNetScope - быстрый инструмент сетевой разведки и сканер портов на современном C++. Резолвит цель, собирает её DNS-записи, параллельно сканирует TCP-порты,
снимает баннеры служб и определяет версии продуктов. Для каждой найденной
службы печатает готовый запрос `searchsploit`, чтобы вы сами сверились с
известными уязвимостями.
Инструмент только обнаруживает и перечисляет. Ничего не эксплуатирует.
## 快速开始
```
# 1. install dependencies
sudo apt update && sudo apt install build-essential cmake libssl-dev
# 2. build (both commands are required)
cmake -B build
cmake --build build
# 3. run
./build/cybernetscope --help
./build/cybernetscope scanme.nmap.org -p 1-1024 --deep
```
Подробное пошаговое объяснение - в разделе [Сборка](#сборка).
## 功能
- Прямой и обратный DNS-резолвинг (A/AAAA, PTR).
- Запрос DNS-записей: CNAME, MX, NS, TXT.
- Параллельное TCP connect-сканирование (root не нужен).
- Снятие баннеров и определение службы/версии.
- Детали TLS-рукопожатия: протокол, шифр и весь сертификат (CN, SAN, издатель, срок).
- HTTP-fingerprint: статус, заголовок страницы, редиректы, powered-by.
- Встроенный справочник портов: каждый открытый порт подписан, за что отвечает.
- Пометка риска: опасные и часто атакуемые порты выделяются, с краткой причиной и итоговой сводкой.
- Подсказки `searchsploit` на основе найденных версий.
- Перебор поддоменов по словарю.
- Читаемый вывод в консоль и экспорт в JSON.
## 为什么使用 connect-скан
cyberCyberNetScope использует TCP connect-сканирование - полное трёхстороннее
рукопожатие. Работает без повышенных привилегий и надёжно проходит через
большинство NAT и фаерволов. Скрытным он не задумывался: если нужен
SYN/stealth-скан, это raw-сокеты и root, что выходит за рамки проекта.
Фаза обнаружения работает на одном epoll-цикле, который держит тысячи
неблокирующих коннектов разом, поэтому полный проход 1-65535 на отвечающем
хосте занимает секунды. Fingerprint (TLS, баннеры, HTTP) затем запускается
только по открытым портам.
## 依赖
- Linux.
- Компилятор C++17 (GCC или Clang).
- CMake 3.16+.
- libresolv (идёт с glibc), pthreads и OpenSSL.
На Debian/Ubuntu/Kali:
```
sudo apt update
sudo apt install build-essential cmake libssl-dev
```
### 可选的外部工具
cyberCyberNetScope вызывает их, когда указан соответствующий флаг. Они не обязательны -
без них функция просто сообщит, что инструмент не найден:
```
sudo apt install masscan nuclei sqlmap
```
## 构建
Выполняйте шаги по порядку. Здесь две команды cmake, и они делают разное:
первая настраивает проект, вторая собственно компилирует. Нужны обе.
**Шаг 1 - получите код.** Либо клонируйте репозиторий:
```
git clone https://github.com/d3xm0s/CyberNetScope.git
cd CyberNetScope
```
либо, если у вас zip, распакуйте и зайдите в папку:
```
unzip CyberNetScope.zip
cd CyberNetScope
```
**Шаг 2 - поставьте зависимости для сборки** (пропустите, если уже стоят):
```
sudo apt update
sudo apt install build-essential cmake libssl-dev
```
**Шаг 3 - настройка** (создаёт папку `build/` и проверяет систему):
```
cmake -B build
```
**Шаг 4 - компиляция** (именно она создаёт бинарник):
```
cmake --build build
```
После шага 4 бинарник лежит в `build/cybernetscope`. Проверьте, что работает:
```
./build/cybernetscope --help
```
**Опционально - установка в систему**, чтобы запускать `cybernetscope` откуда
угодно, а не `./build/cybernetscope`:
```
sudo cmake --install build
cybernetscope --help
```
Если не хотите использовать cmake, можно собрать напрямую:
```
g++ -std=c++17 -O2 -Iinclude src/*.cpp -o cybernetscope -lpthread -lresolv -lssl -lcrypto
```
## 使用方法
```
cybernetscope <цель> [цель...] [опции]
```
### 示例
Сканировать топ распространённых портов хоста со снятием баннеров:
```
cybernetscope example.com
```
Сканировать диапазон портов:
```
cybernetscope 192.168.1.10 -p 1-1024
```
Быстро просканировать все порты:
```
cybernetscope 192.168.1.10 -p 1-65535
```
Посмотреть, за что отвечает каждый известный порт:
```
cybernetscope --ports-list
```
Несколько конкретных портов на нескольких хостах:
```
cybernetscope host-a.local host-b.local -p 22,80,443,8080
```
Перебрать поддомены встроенным словарём:
```
cybernetscope -d example.com
```
Перебрать поддомены своим словарём и сохранить всё в JSON:
```
cybernetscope -d example.com -w /usr/share/wordlists/subdomains.txt -j result.json
```
Быстрый скан: больше потоков, меньше таймаут, без определения версий:
```
cybernetscope 10.0.0.5 -p 1-65535 -t 500 --timeout 600 --no-banner
```
Использовать masscan как бэкенд обнаружения, затем снять версии с найденного (нужен root):
```
sudo cybernetscope 10.0.0.0/24 -p 1-65535 --masscan --rate 5000
```
### 选项
| Опция | Описание |
||----------|
| `-p, --ports SPEC` | Порты: `22,80,443`, `1-1024` или `top` (по умолчанию `top`) |
| `-t, --threads N` | Воркеры fingerprint по открытым портам (по умолчанию 200) |
| `--max-in-flight N` | Одновременных коннектов в фазе обнаружения (по умолчанию 2000) |
| `--timeout MS` | Таймаут подключения в мс (по умолчанию 1500) |
| `--no-banner` | Не снимать баннеры и не определять версии |
| `--masscan` | Использовать masscan как бэкенд обнаружения (нужен root) |
| `--rate PPS` | Скорость masscan, пакетов в секунду (по умолчанию 1000) |
| `-q, --quiet` | Тихий low-and-slow скан (мало потоков, джиттер, случайный порядок) |
| `--deep` | Тщательный скан: ретраи, больше таймауты, полный TLS/сертификат и HTTP-fingerprint |
| `--nuclei` | Запустить nuclei по найденным веб-сервисам |
| `--sqlmap URL` | Запустить детект инъекций sqlmap по URL (можно несколько) |
| `--sqlmap-args A` | Доп. аргументы, передаются в sqlmap как есть (можно несколько) |
| `-d, --domain NAME` | Перебор поддоменов домена NAME |
| `-w, --wordlist FILE` | Словарь для перебора поддоменов |
| `--no-dns` | Пропустить запросы MX/NS/TXT/CNAME |
| `-j, --json FILE` | Сохранить результат в JSON |
| `--no-color` | Отключить цветной вывод |
| `--ports-list` | Вывести справку портов/служб и выйти |
| `-h, --help` | Показать справку |
| `-v, --version` | Показать версию |
## 关于漏洞
cyberCyberNetScope не содержит встроенной базы CVE и не утверждает, что служба уязвима.
Он определяет продукт и версию, а затем печатает запрос `searchsploit`, который
вы запускаете против офлайн-базы Exploit-DB из комплекта Kali:
```
2222/tcp ssh OpenSSH 8.9p1
searchsploit OpenSSH 8.9
```
Так результаты остаются честными и актуальными - вы сверяете версию через
`searchsploit` или NVD, а не доверяете устаревшему встроенному списку.
## 项目结构
```
CyberNetScope/
├── CMakeLists.txt
├── README.md
├── include/cybernetscope/ публичные заголовки
│ ├── dns.hpp
│ ├── port_scanner.hpp
│ ├── banner.hpp
│ ├── service_db.hpp
│ ├── masscan.hpp
│ ├── process.hpp
│ ├── nuclei.hpp
│ ├── sqlmap.hpp
│ ├── tls.hpp
│ ├── http.hpp
│ ├── subdomain.hpp
│ ├── output.hpp
│ └── thread_pool.hpp
├── src/ реализация
│ ├── main.cpp
│ ├── dns.cpp
│ ├── port_scanner.cpp
│ ├── banner.cpp
│ ├── service_db.cpp
│ ├── masscan.cpp
│ ├── process.cpp
│ ├── nuclei.cpp
│ ├── sqlmap.cpp
│ ├── tls.cpp
│ ├── http.cpp
│ ├── subdomain.cpp
│ ├── output.cpp
│ └── thread_pool.cpp
└── data/
└── subdomains.txt словарь поддоменов по умолчанию
```
## 法律
Сканируйте только те системы, которыми владеете или на тест которых есть явное
письменное разрешение. Несанкционированное сканирование может быть незаконным.
Ответственность за использование инструмента лежит на вас.
## License
Copyright (c) 2026 d3xm0s
标签:Bash脚本, C++, epoll, 安全测试工具, 插件系统, 数据擦除, 数据统计, 端口扫描, 网络安全, 资产测绘, 隐私保护