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风险缓解, 多模态安全, 逆向工具