lihongjie0209/rmap
GitHub: lihongjie0209/rmap
基于 Rust 的高性能网络扫描器,支持 ICMP 主机发现与 TCP 端口扫描,并提供交互式 TUI 界面。
Stars: 0 | Forks: 0
# rmap
一个使用 Rust 编写的高性能网络扫描器。支持 **ICMP 主机发现**和 **TCP 端口扫描**,并提供交互式 TUI。
## 功能特性
- **ICMP 扫描** — 基于 ping 的主机发现
- **TCP 端口扫描** — 连接扫描,并显示 `Open / Closed / Filtered` 状态
- **高并发** — 通过 Tokio 实现异步 I/O,使用 Semaphore 控制并行度
- **交互式 TUI** — 树形结构表格,支持按主机展开/折叠 (`-o tui`)
- **多种输出格式** — 纯文本、JSON (`-o json`)、交互式 TUI (`-o tui`)
- **灵活的目标指定** — 单个 IP、CIDR (`/24`)、连字符范围 (`1.1.1.1-50`)
- **Top-1000 端口** — 兼容 nmap 的默认端口列表
## 安装
### 预编译二进制文件
从 [Releases](../../releases) 页面下载适用于您平台的最新二进制文件。
```
# Linux / macOS
tar -xzf rmap--.tar.gz
sudo mv rmap /usr/local/bin/
# Windows — 提取 rmap.exe 并添加到 PATH
```
### 从源码构建
```
cargo install --git https://github.com/lihongjie0209/rmap
```
或者克隆并构建:
```
git clone https://github.com/lihongjie0209/rmap
cd rmap
cargo build --release
```
## 用法
```
rmap [OPTIONS] ...
Arguments:
... IP, CIDR, or range (e.g. 192.168.1.1 10.0.0.0/24 10.0.0.1-50)
Options:
-p, --ports Port spec (e.g. 22,80,443,1-1024) [default: top1000]
--icmp-only ICMP host discovery only, skip port scan
--port-only Skip ICMP, scan ports on all targets
-c, --concurrency Max concurrent probes [default: 1000]
--timeout Per-probe timeout in ms [default: 1000]
--all Show all ports including closed/filtered (default: open only)
-o, --output plain | json | tui [default: plain]
-h, --help Print help
-V, --version Print version
```
### 示例
```
# 扫描单个主机的常见端口
sudo rmap 192.168.1.1 -p 22,80,443,3389
# 完整子网扫描 — ICMP 扫描然后 top-1000 端口
sudo rmap 192.168.1.0/24
# 仅扫描端口 (不需要 ICMP)
rmap 10.0.0.1-20 --port-only -p 80,443,8080
# 可展开/折叠的交互式 TUI
sudo rmap 192.168.1.0/24 -o tui
# 用于脚本的 JSON 输出
rmap 10.0.0.1 --port-only -p 1-1024 -o json | jq '.[] | select(.ports[].status == "open")'
# 使用降低的 timeout 进行快速扫描
sudo rmap 10.0.0.0/24 --icmp-only -c 512 --timeout 500
```
### TUI 快捷键
| 按键 | 动作 |
|-----|--------|
| `↑` / `↓` 或 `k` / `j` | 移动选择 |
| `Enter` / `Space` | 展开 / 折叠主机 |
| `→` / `l` | 展开并跳转到第一个端口 |
| `←` / `h` | 折叠(从端口行返回到主机) |
| `a` | 切换全部展开/折叠 |
| `Home` / `End` | 跳转到第一行 / 最后一行 |
| `PgUp` / `PgDn` | 翻页导航 |
| `q` / `Esc` | 退出 |
## 性能说明
- 默认并发数:**1000** 个并发 futures(可通过 `-c` 调整)
- ICMP 并发数上限为 256,以避免阻塞线程耗尽
- 对于大型子网(`/16` 及以上),建议使用 `--timeout 300 -c 2000`
- Linux:如果在扫描多台主机的多个端口时,请提高 `ulimit -n` 的限制
## 平台说明
| 平台 | ICMP | TCP |
|----------|------|-----|
| Linux | 需要 `sudo` 或 `CAP_NET_RAW` | 无需特殊权限 |
| macOS | 需要 `sudo` | 无需特殊权限 |
| Windows | 需要管理员权限 | 无需特殊权限 |
## 许可证
MIT
标签:AES-256, API安全, Awesome, CIDR, ICMP, JSON输出, Linux安全, nmap替代, Rust, Snort, TCP, Tokio, TUI, 二进制发布, 云存储安全, 可视化界面, 并发扫描, 开源工具, 异步I/O, 插件系统, 数据统计, 漏洞评估, 端口扫描, 系统管理, 网络安全, 网络扫描, 网络流量审计, 通知系统, 隐私保护