er1ck-xyz/inertia

GitHub: er1ck-xyz/inertia

一款基于 Rust 异步核心与 Python 接口的混合端口扫描器,兼顾 TCP/UDP 扫描速度与使用便捷性。

Stars: 0 | Forks: 0

``` ██╗███╗ ██╗███████╗██████╗ ████████╗██╗ █████╗ ██║████╗ ██║██╔════╝██╔══██╗╚══██╔══╝██║██╔══██╗ ██║██╔██╗ ██║█████╗ ██████╔╝ ██║ ██║███████║ ██║██║╚██╗██║██╔══╝ ██╔══██╗ ██║ ██║██╔══██║ ██║██║ ╚████║███████╗██║ ██║ ██║ ██║██║ ██║ ╚═╝╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ``` **Rust + Python 混合端口扫描器 —— 快速、简洁,为真正的侦察而生。** [![PyPI](https://img.shields.io/pypi/v/inertia-scanner?color=0d1117&labelColor=60a5fa&label=pypi)](https://pypi.org/project/inertia-scanner) [![Python](https://img.shields.io/badge/python-3.8%2B-0d1117?labelColor=60a5fa)](https://python.org) [![Rust](https://img.shields.io/badge/rust-1.70%2B-0d1117?labelColor=f97316)](https://rustup.rs) [![License](https://img.shields.io/badge/license-MIT-0d1117?labelColor=3fb950)](LICENSE) [![Authorized use only](https://img.shields.io/badge/use-authorized%20only-0d1117?labelColor=f85149)](#-ethical-use)
## 概述 Inertia 是一款高性能的端口扫描器,它将 **Rust async 核心** 与 **Python 接口** 相结合,在提供极致速度的同时不牺牲易用性。它能自动针对每个目标校准超时时间,从官方的 Nmap 数据库加载端口列表,同时支持 TCP 和 UDP,并在简洁的终端 UI 中随着端口被发现实时显示结果。 专为网络诊断、安全审计和学习而构建。严禁用于未经授权的用途。 ## 快速开始 ``` pip install inertia-scanner ``` ``` # 使用最常见的 100 个端口扫描主机 inertia -t 192.168.1.1 # 在无任何网络连接的情况下尝试可视化 demo inertia --demo ``` ## 功能特性 | | 功能特性 | 详细说明 | |---|---|---| | 🦀 | **Rust async 核心** | 基于 Tokio —— 通过 PyO3 实现数千个并发探测 | | 🎯 | **自动超时校准** | 在扫描前测量到目标的真实 RTT | | 📡 | **TCP + UDP** | 完整的 TCP 连接扫描 + 带有特定协议 payload 的 UDP 扫描 | | 🗂️ | **Nmap 端口预设** | 从官方 `nmap-services` 加载 —— 支持 top100 到全部 65535 个端口 | | 🚦 | **速率限制** | Token Bucket 算法 —— 防止触发防火墙 | | 🔍 | **Banner 抓取** | 智能的按协议请求(HTTP HEAD、SMTP CRLF 等) | | ⚡ | **实时命中** | 随着端口的发现,实时打印开放端口 | | 📊 | **导出格式** | JSON、CSV、HTML 报告以及纯文本 TXT | | 🎭 | **演示模式** | 完整的视觉模拟 —— 无需网络连接 | ## 安装说明 ``` pip install inertia-scanner ``` ## 使用说明 ``` inertia [options] Target: -t, --target HOST Target IP address or hostname Ports: -p, --ports PORTS Custom ports: 22,80,443 or 1-1024 --preset PRESET top100 | top1000 | top3000 | top10000 | todas Protocols: --udp Enable UDP scanning (in addition to TCP) --tcp-only TCP only (default) Timing: -c, --concurrency N Max concurrent probes (default: 400) --timeout MS Per-port timeout in ms (default: auto-calibrated) --rate-limit PPS Max probes per second (default: unlimited) Output: -o, --output FILE Save report to file -f, --format FORMAT json | csv | html | txt Behavior: --no-banner Skip banner grabbing (faster) --no-logo Hide ASCII banner --demo Visual simulation — no network connections --update-ports Re-download nmap-services cache --version Show version ``` ## 示例 ``` # 基本扫描 — 自动校准 timeout,top 100 端口 inertia -t 192.168.1.1 # 最常见的 3000 个端口 inertia -t scanme.nmap.org --preset top3000 # TCP + UDP — 检测 DNS (53)、NTP (123)、SNMP (161) inertia -t 192.168.1.1 --udp # 带 rate limiting 的自定义端口范围 inertia -t 10.0.0.1 -p 1-10000 --rate-limit 300 -c 500 # 完整扫描 — 所有 65535 个端口 inertia -t 10.0.0.1 --preset todas -c 1000 # 导出 HTML 报告 inertia -t 10.0.0.1 --preset top1000 -o report.html # 可视化 demo — 无需网络 inertia --demo ``` ## 架构 Inertia 被划分为清晰且职责单一的模块: ``` inertia/ │ ├── src/lib.rs # Rust core — async TCP/UDP, PyO3 bindings │ └── inertia/ ├── cli.py # Entry point — argument parsing, scan flow │ ├── nucleo/ # Core logic │ ├── modelos.py # Data types: ResultadoPorta, SessaoScan │ ├── scanner.py # Orchestrator — calls Rust, enriches results │ ├── calibrador.py # Auto timeout calibration │ ├── limitador.py # Token Bucket rate limiter │ └── resolucao.py # Hostname resolution + reverse DNS │ ├── ui/ │ ├── terminal.py # Rich UI — banner, live hits, table, summary │ └── demo.py # Demo mode (no network) │ ├── utils/ │ ├── portas.py # nmap-services loader, presets, port parser │ └── servicos.py # Service database + banner fingerprinting │ └── relatorios/ └── exportador.py # JSON, CSV, HTML, TXT exporters ``` ### Python 如何调用 Rust ``` CLI (Python) │ ▼ nucleo/scanner.py │ │ from inertia import inertia_core ← compiled .pyd / .so via PyO3 │ ▼ inertia_core.varrer_portas(host, ports, ...) │ │ [Rust / Tokio] │ Semaphore → async fan-out → TCP connect / UDP probe → collect │ ▼ ResultadoVarredura { portas: Vec, ... } │ ▼ Python: enrichment → live hits → table → export ``` ## 技术栈 | 技术 | 角色 | |---|---| | [Rust](https://www.rust-lang.org/) | 异步扫描核心 | | [Tokio](https://tokio.rs/) | Rust 内部的异步 runtime | | [PyO3](https://pyo3.rs/) | Rust ↔ Python 原生绑定 | | [maturin](https://www.maturin.rs/) | Rust+Python wheel 构建系统 | | [Rich](https://github.com/Textualize/rich) | 终端 UI | | [Jinja2](https://jinja.palletsprojects.com/) | HTML 报告模板 | | [nmap-services](https://github.com/nmap/nmap/blob/master/nmap-services) | 端口频率数据库 | ## 道德规范 Inertia 专为**已授权**的网络诊断、安全审计和教育目的而设计。 `scanme.nmap.org` 主机由 Nmap 项目专门提供,用于测试扫描器。 ## 许可证 MIT —— 详见 [LICENSE](LICENSE)。
使用 🦀 Rust + 🐍 Python 构建
标签:IP扫描, MIT许可, Nmap, Python, Rust, Rust async核心, TCP, TUI, UDP, 二进制发布, 可视化界面, 开源工具, 异步编程, 性能优化, 情报分析, 插件系统, 数据统计, 无后门, 服务器安全, 检测绕过, 混合编程, 漏洞扫描准备, 白帽安全, 端口发现, 端口扫描, 终端界面, 网络协议分析, 网络安全, 网络流量审计, 网络诊断, 虚拟驱动器, 跨语言调用, 逆向工具, 隐私保护