er1ck-xyz/inertia
GitHub: er1ck-xyz/inertia
一款基于 Rust 异步核心与 Python 接口的混合端口扫描器,兼顾 TCP/UDP 扫描速度与使用便捷性。
Stars: 0 | Forks: 0
```
██╗███╗ ██╗███████╗██████╗ ████████╗██╗ █████╗
██║████╗ ██║██╔════╝██╔══██╗╚══██╔══╝██║██╔══██╗
██║██╔██╗ ██║█████╗ ██████╔╝ ██║ ██║███████║
██║██║╚██╗██║██╔══╝ ██╔══██╗ ██║ ██║██╔══██║
██║██║ ╚████║███████╗██║ ██║ ██║ ██║██║ ██║
╚═╝╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝
```
**Rust + Python 混合端口扫描器 —— 快速、简洁,为真正的侦察而生。**
[](https://pypi.org/project/inertia-scanner)
[](https://python.org)
[](https://rustup.rs)
[](LICENSE)
[](#-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
使用 🦀 Rust + 🐍 Python 构建
标签:IP扫描, MIT许可, Nmap, Python, Rust, Rust async核心, TCP, TUI, UDP, 二进制发布, 可视化界面, 开源工具, 异步编程, 性能优化, 情报分析, 插件系统, 数据统计, 无后门, 服务器安全, 检测绕过, 混合编程, 漏洞扫描准备, 白帽安全, 端口发现, 端口扫描, 终端界面, 网络协议分析, 网络安全, 网络流量审计, 网络诊断, 虚拟驱动器, 跨语言调用, 逆向工具, 隐私保护