chamalkalakshan/browser-based-lan-scanner
GitHub: chamalkalakshan/browser-based-lan-scanner
一个基于浏览器的局域网扫描工具,通过 Node.js 后端发现并分析本地网络中的设备、端口和服务信息。
Stars: 0 | Forks: 0
# 基于浏览器的局域网扫描器
一款用于发现和分析局域网设备的基于浏览器的工具。运行轻量级的 Node.js 服务器,即可从同一台机器上的任何浏览器访问扫描器。
## 功能
- **主机发现** - 通过 ping 扫描(带 TCP 回退探测)查找活动主机
- **端口扫描** - 扫描每台已发现主机的 29 个常见服务端口
- **服务检测** - 从开放端口抓取 banner 以识别运行中的服务
- **主机名解析** - 为已发现的主机执行反向 DNS 查询
- **MAC 地址解析** - 查询 ARP 表 (Windows)
- **设备类型检测** - 启发式分类(Windows PC、Linux 服务器、路由器、打印机等)
- **实时更新** - 由 WebSocket 驱动的实时进度和结果
- **表格和网格视图** - 在详细表格和紧凑卡片网格之间切换
- **导出结果** - 将扫描结果下载为 JSON 或 CSV 格式
## 截图

*扫描完成 - 在 1 分 10 秒内扫描了 254 个地址并发现 8 台主机,识别了开放端口和设备类型。*
## 环境要求
- Node.js 16 或更高版本
- Windows、macOS 或 Linux
## 安装
```
git clone https://github.com/chamalkalakshan/browser-based-lan-scanner.git
cd browser-based-lan-scanner
npm install
```
## 用法
```
npm start
```
然后在浏览器中打开 `http://localhost:3000`。
### 运行扫描
1. 侧边栏会自动检测您的网络接口
2. 点击接口卡片以自动填充子网
3. 根据需要开启/关闭端口扫描
4. 点击 **开始扫描**
5. 在表格或网格视图中查看实时结果
6. 点击任意主机上的 **详情** 获取完整信息
7. 通过 JSON 或 CSV 按钮导出结果
### 自定义端口
```
PORT=8080 npm start
```
## 项目结构
```
browser-based-lan-scanner/
|-- server.js # Express + WebSocket server
|-- scanner/
| |-- network-utils.js # Subnet and IP math
| |-- host-discovery.js # Ping and TCP probe sweep
| |-- port-scanner.js # TCP port scanning
| `-- service-detector.js # Banner grabbing, hostname, MAC lookup
`-- public/
|-- index.html
|-- css/style.css
`-- js/app.js
```
## 工作原理
1. Node.js 服务器计算目标子网中的主机 IP 列表
2. 使用 `ping`(系统命令)分批(每批 20 个)探测主机,并在常见端口上进行 TCP 回退
3. 为每台发现的主机补充信息:通过 DNS 获取主机名,通过 ARP 获取 MAC 地址,通过 TCP connect 扫描获取开放端口
4. 结果通过 WebSocket 实时流式传输到浏览器
## 注意事项
- 本工具旨在用于您拥有或已获授权扫描的网络
- 端口扫描和主机发现会产生网络流量,这些流量可能会被路由器和防火墙记录
- MAC 地址解析仅适用于同一子网段内的主机
## 许可证
MIT
标签:Facebook API, GNU通用公共许可证, MITM代理, Node.js, 云存储安全, 局域网发现, 插件系统, 数据可视化, 数据统计, 端口扫描, 网络扫描, 自定义脚本, 调试辅助