montazraamir2-ux/MyScripts

GitHub: montazraamir2-ux/MyScripts

这是一个为Android设备设计的模块化网络侦察与OSINT套件,集扫描、横幅抓取和离线AI风险分析功能于一体。

Stars: 2 | Forks: 0

# 我的脚本 针对非 root 的 Termux/Proot Ubuntu(ARM64 Android 平台)构建的模块化侦察与开源情报套件。通过 TCP connect() 扫描执行主机发现与服务指纹识别,将结果经由本地通过 Ollama 运行的 Gemma 2B 模型进行离线 AI 风险分析,并生成自包含的 HTML 报告——整个流水线在初始设置完成后无需互联网访问即可运行。 ## 环境 | 属性 | 值 | |----------------|-------------------------------| | 平台 | Android(非 root) | | 运行时 | Termux 内的 Proot Ubuntu | | 架构 | ARM64 (aarch64) | | Python | 3.x(标准库 + netifaces) | | 本地 AI | Ollama + Gemma 2B | | 扫描方法 | TCP connect() — 无原始套接字 | ## 安装说明 **1. 从 F-Droid 安装 Termux**(请勿使用 Play Store 版本)。 **2. 在 Termux 内安装 Proot Ubuntu 及核心工具:** ``` pkg install proot-distro git python ``` **3. 安装并进入 Ubuntu 环境:** ``` proot-distro install ubuntu proot-distro login ubuntu ``` **4. 在 Proot Ubuntu 内,安装 Python 和 pip:** ``` apt install python3 python3-pip git ``` **5. 安装 Python 依赖项:** ``` pip install netifaces watchdog ``` **6. 克隆代码仓库:** ``` git clone cd MyScripts ``` **7. 安装适用于 ARM64 的 Ollama:** ``` curl -fsSL https://ollama.com/install.sh | sh ``` **8. 拉取 Gemma 2B 模型:** ``` ollama pull gemma2:2b ``` 在运行包含 AI 分析的任务前,请先启动 Ollama 服务器: ``` ollama serve & ``` ## 使用说明 ### CLI 模式 | 标志 | 描述 | |--------------------|--------------------------------------------| | `--scan` | 运行完整侦察流水线 | | `--cidr CIDR` | 目标网络(若省略则自动检测) | | `--ports PORT ...` | 自定义端口列表(以空格分隔) | | `--no-ai` | 跳过 AI 分析 | | `--no-report` | 跳过 HTML 报告生成 | | `--report` | 根据上次会话生成报告 | | `--session ID` | 指定报告的会话 ID | | `--info` | 显示本地网络信息 | 显示本地网络信息而不进行扫描: ``` python3 main.py --info ``` 使用自动检测的网络运行完整扫描: ``` python3 main.py --scan ``` 扫描特定 CIDR 地址块: ``` python3 main.py --scan --cidr 192.168.1.0/24 ``` 仅扫描特定端口,跳过 AI 分析: ``` python3 main.py --scan --ports 22 80 443 --no-ai ``` 从最近的会话重新生成 HTML 报告: ``` python3 main.py --report ``` 为特定会话重新生成报告: ``` python3 main.py --report --session abc123f ``` ### 交互模式 ``` python3 main.py ``` | 选项 | 操作 | |------|-------------------------------------------------------| | `1` | 使用自动检测的网络 CIDR 进行完整扫描 | | `2` | 提示输入 CIDR,然后运行完整流水线 | | `3` | 显示本地网络信息(等同于 `--info`) | | `4` | 根据上次会话生成 HTML 报告 | | `5` | 退出 | ## 演示输出 ### 完整扫描流水线 ``` Session: a9df8943 | Network: 192.168.0.0/24 Scanning 192.168.0.0/24 ... [ALIVE] 192.168.0.1 | Ports: 22, 80 [SERVICE] 192.168.0.1:80 — HTTP | unknown [SERVICE] 192.168.0.1:22 — SSH | Dropbear 2.0 Scan complete — 1 host(s) found. [REPORT] /root/MyScripts/logs/report_a9df8943.html ``` ### 开源情报查询 ``` [OSINT] Target: 8.8.8.8 (ip) [OSINT] Organisation: Google LLC [OSINT] Country: US [OSINT] DNS A Records: [] [OSINT] MX Present: no [DNS] PTR: dns.google [OSINT] Reputation: Google LLC [OSINT] Summary: Target 8.8.8.8 is registered to Google LLC in US. No MX records detected. Shodan data unavailable — no API key provided. IP flagged as hosting/datacenter. ``` ### 会话历史 ``` ID Name Date Hosts High Med ────────────────────────────────────────────────────────────── c63b8d99 unnamed 2026-05-25 00:40 0 0 0 4ceacb8c unnamed 2026-05-25 00:40 0 0 0 a9df8943 portfolio_demo 2026-05-25 00:39 1 0 0 8a56043c unnamed 2026-05-25 00:39 0 0 0 cca14d8b unnamed 2026-05-25 00:15 0 0 0 888530aa unnamed 2026-05-25 00:15 0 0 0 d72eed9d unnamed 2026-05-25 00:15 0 0 0 25fe313b unnamed 2026-05-25 00:14 0 0 0 218365c0 portfolio_demo 2026-05-25 00:13 1 0 1 fd43bc6a unnamed 2026-05-25 00:11 0 0 0 741699dc demo_final 2026-05-25 00:09 1 1 0 38a763cd demo_final 2026-05-25 00:03 1 0 1 04c99a2d unnamed 2026-05-24 23:59 0 0 0 4db978ef unnamed 2026-05-24 23:58 0 0 0 3f3b9ee3 unnamed 2026-05-24 23:57 0 0 0 114d51fa home_network_dem 2026-05-24 23:55 1 0 1 339b26eb unnamed 2026-05-24 23:48 0 0 0 1e8e51a9 unnamed 2026-05-24 23:47 0 0 0 27605688 unnamed 2026-05-24 23:46 0 0 0 cf5408fd unnamed 2026-05-24 23:46 0 0 0 ``` ### 被动监听 ``` [MONITOR] Watching: 192.168.0.0/28 [MONITOR] Interval: 10s [MONITOR] Press Ctrl+C to stop. [MONITOR] Baseline: 1 devices detected. [MONITOR] Cycle 1 complete. [MONITOR] Cycle 2 complete. [MONITOR] Cycle 3 complete. [MONITOR] Cycle 4 complete. [MONITOR] Stopped after 4 scans. ``` ### HTML 报告 自包含 HTML 报告位于 `demo/demo_report.html`——在任意浏览器中打开 即可查看包含 AI 分析和风险分类的完整交互式报告。 ## 模块参考 | 模块 | 角色 | |-------------------|---------------------------------------| | `network_info.py` | 本地 IP、接口和 CIDR 检测 | | `logger.py` | 统一 NDJSON 日志写入和会话 ID 管理 | | `scanner.py` | TCP connect() 主机与端口扫描器 | | `fingerprint.py` | 基于 Banner 的服务识别 | | `ai_analyst.py` | 通过 Ollama 进行离线 AI 风险分析 | | `reporter.py` | 根据会话日志生成 HTML 报告 | ## 日志格式 所有事件均以换行分隔的 JSON(NDJSON)格式写入 `logs/myscripts.log`——每行一个 JSON 对象。该文件可直接由 `jq`、Python 的 `json` 模块或任何面向行的工具解析。 每个条目遵循以下结构: ``` { "timestamp": "2024-11-14T08:32:11.045821", "session_id": "a3f7c91b", "tool": "scanner", "target": "192.168.0.42", "severity": "info", "findings": { "ip": "192.168.0.42", "open_ports": [22, 80, 443], "banners": { "22": "SSH-2.0-OpenSSH_8.9p1" }, "scan_duration_ms": 312.5, "services": [ { "port": 22, "protocol": "TCP", "service": "SSH", "software": "OpenSSH", "version": "8.9p1", "raw_banner": "SSH-2.0-OpenSSH_8.9p1" } ] } } ``` `tool` 字段标识来源模块。`severity` 字段在 `ai_analyst` 条目中反映 AI 风险等级,在所有其他条目类型中均为 `"info"`。 ## 输出 ### 终端 ``` Session: a3f7c91b | Network: 192.168.0.0/24 Scanning 192.168.0.0/24 ... [ALIVE] 192.168.0.1 | Ports: 22, 80, 443 [SERVICE] 192.168.0.1:22 — SSH | OpenSSH 8.9p1 [SERVICE] 192.168.0.1:80 — HTTP | nginx 1.24.0 [ALIVE] 192.168.0.42 | Ports: 21, 23 [SERVICE] 192.168.0.42:23 — unknown | Scan complete — 2 host(s) found. [AI] 192.168.0.1 | Risk: low [AI] Summary: Host exposes SSH and HTTP. Both services are current versions with no immediately known CVEs. [AI] 192.168.0.42 | Risk: high [AI] Summary: Telnet and FTP are active. These protocols transmit credentials in plaintext. [FLAG] Telnet service detected — unencrypted remote access [FLAG] FTP service detected — plaintext credential exposure [REPORT] /root/MyScripts/logs/report_a3f7c91b.html ``` ### 日志文件 ``` logs/myscripts.log ``` 每行一个 JSON 对象。条目在各会话间累积;可通过 `session_id` 过滤以隔离单次运行。 ### HTML 报告 ``` logs/report_.html ``` 自包含的单个文件——无外部资源,无 CDN 链接,无 JavaScript 依赖。包含部分: - **摘要卡片** — 存活主机数、发现的服务总数、高风险计数、中风险计数。 - **主机结果表格** — 每台主机的 IP、开放端口、识别服务及 AI 风险等级。 - **AI 分析卡片** — 每台主机的风险徽章、摘要段落和标记的发现列表。 ## 架构 ``` network_info | v scanner -------> fingerprint | | |<-----------------+ | v ai_analyst | v reporter | v HTML Report ``` 启动时,`network_info` 检测本地接口并推导出 CIDR。`scanner` 对子网内所有主机执行并发 TCP connect() 扫描,对于每个开放端口,将原始 Banner 传递给 `fingerprint` 进行服务识别。合并后的主机结果由 `logger` 写入会话日志。若启用了 AI 分析,每台已识别服务的主机都会被发送给 `ai_analyst`,后者构建结构化提示并查询本地 Ollama 实例;解析后的结果作为 `ai_analyst` 条目被记录。随后,`reporter` 从日志中读取所有会话条目并渲染 HTML 报告。 ## 约束与设计决策 | 约束条件 | 决策 | |------------------|----------------------------------------------------------| | 无 root 权限 | TCP connect() 替代原始套接字和 SYN 扫描 | | ARM64 架构 | 纯 Python 实现,无编译二进制依赖 | | 离线优先 | Ollama 本地运行——无云 AI,无 API 密钥 | | 资源受限 | 使用带边界工作线程的 `ThreadPoolExecutor`;90 秒 AI 超时 | ## 道德范围 本工具仅用于授权的渗透测试和个人网络环境。开源情报模块仅操作公开可用信息。 ## 许可证 MIT
标签:AI风险缓解, 多模态安全, 逆向工具