一个用 Java 编写的局域网主机扫描工具,支持 TCP 和 HTTP 协议扫描。现成的 LanHostScanner.jar 文件请在项目 release 页面下载。
- 群晖 nas 设备接入了一个局域网,但是我没有局域网管理权限,可以借助本程序快速扫描局域网网段内的 5000(群晖web)端口,以快速找到群晖的IP
- 我的 x86 小主机安装了 immortalwrt 系统作为旁路网关使用,小主机开机后借助本程序快速扫描出来 IP
- 使用 http 扫描 88 端口(luci web uhttpd 的服务端口默认是 80),我将web端口改成了88
- 或者使用 tcp 扫描 1003 端口(dropbear ssh 服务默认端口是 22),我将ssh dropbear 端口改成了1003
- 🔍 支持 TCP 和 HTTP 两种协议扫描
- 🎯 精确的参数验证(IP格式、范围、端口等)
- ⚡ 多线程并发扫描,提高效率
- 📊 详细的扫描结果和统计信息
- 🔒 仅支持局域网IP扫描,确保安全
- 🔄 兼容 Java 8 到 Java 21+
# TCP 扫描(默认2秒超时)
java -jar LanHostScanner.jar tcp 192.168.1.1 192.168.1.254 22
# HTTP 扫描(自定义超时3秒)
java -jar LanHostScanner.jar http 192.168.10.1 192.168.10.254 8080 3
# 跨网段+自定义超时5秒
java -jar LanHostScanner.jar tcp 192.168.0.1 192.168.1.254 22 5java -jar LanHostScanner.jar <协议> <起始IP> <结束IP> <端口> [超时秒数]| 参数 | 必需 | 说明 | 示例 |
|---|---|---|---|
| 协议 | ✅ | tcp 或 http(不区分大小写) |
tcp |
| 起始IP | ✅ | 起始IP地址(必须是局域网IP) | 192.168.1.1 |
| 结束IP | ✅ | 结束IP地址(必须是局域网IP) | 192.168.1.254 |
| 端口 | ✅ | 目标端口号(1-65535) | 80 |
| 超时时间 | ❌ | 超时秒数(默认2秒) | 3 |
- 10.0.0.0/8:10.0.0.0 - 10.255.255.255
- 172.16.0.0/12:172.16.0.0 - 172.31.255.255
- 192.168.0.0/16:192.168.0.0 - 192.168.255.255
- ❌ 禁止扫描公网IP地址
- ❌ 严格的参数验证
- ❌ 防止IP范围错误
- ❌ 限制端口范围(1-65535)
========================================
🔍 局域网主机扫描器
========================================
协议类型: TCP
IP范围: 192.168.1.1 - 192.168.1.254
目标端口: 22
超时设置: 2 秒
扫描总数: 254 个IP
========================================
开始扫描...
✅ 发现设备: 192.168.1.100:22
✅ 发现设备: 192.168.1.150:22
========================================
🏁 扫描完成
========================================
总耗时: 15.23 秒
扫描IP数: 254
发现设备: 2 个
发现的设备列表:
- 192.168.1.100:22
- 192.168.1.150:22
========================================
- 仅限局域网使用:本工具只能扫描局域网IP,无法扫描公网IP
- 遵守法律:请仅在自己拥有权限的网络中使用
- 性能建议:
- 建议扫描范围不要超过C类网段(254个IP)
- 可根据网络情况调整超时时间
- 大范围扫描时建议增加超时时间
- 兼容性:Java 8 - Java 21+
- 并发:使用线程池实现并发扫描
- 协议支持:
- TCP:使用Socket连接测试
- HTTP:使用HttpURLConnection测试
- 编码:UTF-8
纯Java实现,无外部依赖。
MIT