venantvr/Android.Net.Mapper
GitHub: venantvr/Android.Net.Mapper
一款Android平台的网络扫描工具,可发现局域网设备、扫描端口、识别服务和厂商信息。
Stars: 0 | Forks: 0
# NetMapper
[](https://developer.android.com)
[](https://openjdk.org/)
[](LICENSE)
## 目录
- [FR - Français](#fr---français)
- [EN - English](#en---english)
- [技术文档 / Technical Documentation](docs/PROTOCOLS.md)
## FR - 法语
### 描述
NetMapper 是一款 Android 原生网络扫描应用,可发现连接到本地网络的设备。它提供类似 nmap 的功能,并具有直观的移动端界面。
### 功能
- **网络扫描**:发现本地网络上的主机(/24 范围)
- **3 种扫描配置**:
- Ping:仅 ICMP/ARP(快速)
- Quick:6 个常用端口(22, 80, 443, 8080, 3389, 445)
- Full:23 个端口(完整扫描)
- **Wi-Fi 检测**:自动获取 SSID、BSSID、本地 IP 和网关
- **OUI 数据库**:支持 60 多家制造商(Apple、Samsung、Raspberry Pi 等)
- **拓扑图**:网络拓扑的文本可视化
- **ARP 增强**:获取 MAC 地址
- **Banner 抓取**:获取 HTTP、SSH、FTP、SMTP 横幅
- **操作系统指纹识别**:检测操作系统
- **SSL 证书**:显示 SSL/TLS 证书信息
- **延迟测量**:毫秒级 RTT
- **网络唤醒**:通过魔术包唤醒设备
- **路由追踪**:显示网络路径
- **Ping**:连接性测试及统计
- **mDNS/Bonjour**:服务发现(Apple、Chromecast、Spotify 等)
- **UPnP/SSDP**:UPnP 设备检测(路由器、电视、NAS 等)
- **SNMP**:网络设备查询(路由器、交换机)
- **备注**:为设备添加自定义备注
- **导出**:JSON 和 CSV 格式
- **历史记录**:SQLite 扫描数据库
### 架构
```
graph TD
A[MainActivity] --> B[Scanner]
A --> C[DeviceAdapter]
A --> D[OUI Database]
A --> E[ScanDbHelper]
A --> F[NetTools]
B --> G[ThreadPool 64]
G --> H[Socket Probe]
G --> I[Banner Grab]
G --> J[SSL Check]
B --> K[ARP Enrichment]
B --> L[MdnsDiscovery]
B --> M[UpnpDiscovery]
B --> N[SnmpDiscovery]
F --> O[Wake-on-LAN]
F --> P[Traceroute]
F --> Q[Ping]
```
### 界面
```
graph LR
A[Scan] --> B[Appareils]
B --> C[Carte]
C --> D[Config]
D --> A
```
| 选项卡 | 描述 |
| --------- | ------------------------------------ |
| 扫描 | 配置和启动扫描 |
| 设备 | 可筛选的已发现主机列表 |
| 地图 | 可视化网络拓扑 |
| 配置 | 网络工具、导出、统计 |
### 网络工具
| 工具 | 描述 |
| ----------- | ------------------------------------- |
| MAC 查询 | 按 OUI 查找制造商 |
| Ping | 连接性测试(4 个数据包) |
| 路由追踪 | 网络路径(最多 15 跳) |
| 网络唤醒 | 通过魔术包唤醒 UDP:9 |
| mDNS 扫描 | Bonjour 服务发现(端口 5353)|
| UPnP 扫描 | SSDP 发现(端口 1900) |
| SNMP 扫描 | SNMP v1 查询(端口 161) |
| 导出 JSON | 完整导出为 JSON 格式 |
| 导出 CSV | 电子表格导出为 CSV 格式 |
### 所需权限
| 权限 | 用途 |
| -------------------- | -------------------------- |
| INTERNET | 主机 socket 连接 |
| ACCESS_WIFI_STATE | 读取 WiFi 信息 |
| ACCESS_NETWORK_STATE | 网络状态 |
| ACCESS_FINE_LOCATION | WiFi 扫描(Android 6+) |
| NEARBY_WIFI_DEVICES | WiFi 扫描(Android 13+) |
### 安装
1. 下载 `NetMapper-v1.0.apk`
2. 在设置中启用"未知来源"
3. 安装应用
### 编译
```
# 克隆项目
git clone https://github.com/venantvr/Android.Net.Mapper.git
cd Android.Net.Mapper
# 调试编译
./gradlew assembleDebug
# 发布编译
./gradlew assembleRelease
# 签名 APK
apksigner sign --ks release-key.jks --out app-signed.apk app-release-unsigned.apk
```
## EN - 英语
### 描述
NetMapper 是一款 Android 原生网络扫描应用,可发现连接到本地网络的设备。它提供类似 nmap 的功能,并具有直观的移动端界面。
### 功能
- **网络扫描**:发现本地网络上的主机(/24 范围)
- **3 种扫描配置**:
- Ping:仅 ICMP/ARP(快速)
- Quick:6 个常用端口(22, 80, 443, 8080, 3389, 445)
- Full:23 个端口(完整扫描)
- **Wi-Fi 检测**:自动获取 SSID、BSSID、本地 IP 和网关
- **OUI 数据库**:支持 60 多家制造商(Apple、Samsung、Raspberry Pi 等)
- **拓扑图**:网络拓扑的文本可视化
- **ARP 增强**:获取 MAC 地址
- **Banner 抓取**:获取 HTTP、SSH、FTP、SMTP 横幅
- **操作系统指纹识别**:检测操作系统
- **SSL 证书**:显示 SSL/TLS 证书信息
- **延迟测量**:毫秒级 RTT
- **网络唤醒**:通过魔术包唤醒设备
- **路由追踪**:显示网络路径
- **Ping**:连接性测试及统计
- **mDNS/Bonjour**:服务发现(Apple、Chromecast、Spotify 等)
- **UPnP/SSDP**:UPnP 设备检测(路由器、电视、NAS 等)
- **SNMP**:网络设备查询(路由器、交换机)
- **备注**:为设备添加自定义备注
- **导出**:JSON 和 CSV 格式
- **历史记录**:SQLite 扫描数据库
### 架构
```
graph TD
A[MainActivity] --> B[Scanner]
A --> C[DeviceAdapter]
A --> D[OUI Database]
A --> E[ScanDbHelper]
A --> F[NetTools]
B --> G[ThreadPool 64]
G --> H[Socket Probe]
G --> I[Banner Grab]
G --> J[SSL Check]
B --> K[ARP Enrichment]
B --> L[MdnsDiscovery]
B --> M[UpnpDiscovery]
B --> N[SnmpDiscovery]
F --> O[Wake-on-LAN]
F --> P[Traceroute]
F --> Q[Ping]
```
### 界面
```
graph LR
A[Scan] --> B[Devices]
B --> C[Map]
C --> D[Config]
D --> A
```
| 选项卡 | 描述 |
| ------- | ----------------------------------- |
| 扫描 | 扫描配置和启动 |
| 设备 | 可筛选的已发现主机列表 |
| 地图 | 可视化网络拓扑 |
| 配置 | 网络工具、导出、统计 |
### 网络工具
| 工具 | 描述 |
| ----------- | ------------------------------------- |
| MAC 查询 | 按 OUI 查找制造商 |
| Ping | 连接性测试(4 个数据包) |
| 路由追踪 | 网络路径(最多 15 跳) |
| 网络唤醒 | 通过魔术包唤醒 UDP:9 |
| mDNS 扫描 | Bonjour 服务发现(端口 5353) |
| UPnP 扫描 | SSDP 发现(端口 1900) |
| SNMP 扫描 | SNMP v1 查询(端口 161) |
| 导出 JSON | 完整导出为 JSON 格式 |
| 导出 CSV | 电子表格导出为 CSV |
### 所需权限
| 权限 | 用途 |
| -------------------- | -------------------------- |
| INTERNET | 主机 socket 连接 |
| ACCESS_WIFI_STATE | 读取 WiFi 信息 |
| ACCESS_NETWORK_STATE | 网络状态 |
| ACCESS_FINE_LOCATION | WiFi 扫描(Android 6+) |
| NEARBY_WIFI_DEVICES | WiFi 扫描(Android 13+) |
### 安装
1. 下载 `NetMapper-v1.0.apk`
2. 在设置中启用"未知来源"
3. 安装应用
### 构建
```
# 克隆项目
git clone https://github.com/venantvr/Android.Net.Mapper.git
cd Android.Net.Mapper
# 调试构建
./gradlew assembleDebug
# 发布构建
./gradlew assembleRelease
# 签名 APK
apksigner sign --ks release-key.jks --out app-signed.apk app-release-unsigned.apk
```
## 技术细节
### 扫描器算法
```
sequenceDiagram
participant U as User
participant S as Scanner
participant T as ThreadPool
participant H as Host
U->>S: startScan subnet, profile
S->>T: create 64 threads
loop For each IP 1-254
T->>H: Socket.connect ip, port, 500ms
alt Port open
H-->>T: Connection success
T->>T: grabBanner
T->>S: onHost device
else Port closed
H-->>T: Connection failed
end
end
S->>S: enrichWithArp
S->>S: saveScanToDb
S->>U: onDone devices
```
### 设备模型
```
classDiagram
class Device {
+String ip
+String mac
+String vendor
+String hostname
+String osGuess
+List~Integer~ openPorts
+Map~Integer,String~ banners
+Map~Integer,String~ services
+String sslCertInfo
+long latencyMs
+boolean saved
+long firstSeen
}
```
### OUI 查询
```
graph LR
A[MAC Address] --> B[Extract prefix]
B --> C["8 chars: XX:XX:XX"]
C --> D{OUI Map}
D -->|Found| E[Vendor Name]
D -->|Not Found| F[Unknown Vendor]
```
## 截图
深色 Material3 主题:
- 背景色:`#080F18`
- 表面色:`#0D1B2A`
- 主色:`#0A84FF`
- 成功色:`#4CAF50`
## 许可证
MIT 许可证
## 作者
由 Claude Code 生成
标签:Android, Android开发, ARP扫描, Banner抓取, Bonjour, DFIR, DSL, Facebook API, ICMP扫描, Material Design, Maven构建, mDNS, OUI查找, SSDP, SSL证书, traceroute, UPnP, Wake-on-LAN, Wi-Fi分析, 云存储安全, 后台面板检测, 域名枚举, 局域网扫描, 插件系统, 操作系统指纹, 数据统计, 无线安全, 服务器安全, 目录枚举, 移动安全, 端口扫描, 网络发现, 网络安全, 网络工具, 网络扫描, 隐私保护