# 分布式算力矩阵 · 本地 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.分布式矩阵IP(871 万 · 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 端口与难度(1–5) | | 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 个集合的索引与查询条件。