Whosthere:一个 Go 写的局域网设备发现工具

📅 2026/7/8 14:33:41
Whosthere:一个 Go 写的局域网设备发现工具
文章目录Whosthere一个 Go 写的局域网设备发现工具工作原理使用方式可配置的扫描选项TUI 操作适用场景总结Whosthere一个 Go 写的局域网设备发现工具排查网络问题时第一步往往是搞清楚谁连在我的网络上。家里有多少台设备那台突然出现的 IP 是谁的Whosthere 正是为这个场景设计的小工具用 Go 写的一个终端程序帮你快速发现局域网里的设备。该项目目前有 2,300 多个 Star使用 Go 语言开发。开发者 Ramon Vermeulen 把它定位为一个 LAN 发现工具附带交互式终端界面。工作原理Whosthere 通过三种方式扫描局域网设备而且不需要管理员权限。mDNS 和 SSDP 是两个常用的局域网服务发现协议。前者通常用于 Apple 设备如 AirPlay、Bonjour后者则是 UPnP 设备的标准协议。Whosthere 同时探测这两种协议捕获设备发回的信息。ARP 缓存扫描是另一个技巧。Whosthere 会在本地子网内发起 TCP/UDP 连接尝试这些尝试会触发系统填充 ARP 缓存。工具随后直接读取 ARP 缓存记录就能拿到设备的 MAC 地址列表。MAC 地址的前缀会与 IEEE OUI 数据库比对从而显示设备厂商。三种方式并发执行扫描速度较快。由于所有操作都在用户态完成不需要 root 权限也比传统需要管理员权限的扫描工具更安全。使用方式安装很简单Homebrew、Nix、Arch 包管理器都支持也提供了预编译二进制文件。最简单的用法是直接运行终端界面whosthere工具启动后会进入一个 TUI 界面列出所有发现的设备信息包括 IP、MAC 地址、厂商等。如果你不需要交互界面也可以用命令行模式做单次扫描whosthere scan -t 5加个 --json 参数还能输出 JSON 格式方便跟其他工具集成。另外 Whosthere 支持守护进程模式在后台运行并通过 HTTP API 提供数据。启动方式如下whosthere daemon --port8080然后可以通过三个端点获取数据/devices 列出所有设备、/device/{ip} 查看某台设备的详细信息、/health 做健康检查。这个模式适合需要长期监控网络状态或者想跟自己的监控系统对接的场景。可配置的扫描选项工具提供了比较细致的配置能力通过 YAML 文件或环境变量来控制。你可以单独开关三种扫描器mDNS、SSDP、ARP也可以修改扫描间隔和超时时间。如果某些设备在子网边界上还能通过 all_interfaces 选项同时监控多块网卡。内置的端口扫描器支持自定义 TCP 端口列表默认扫描 21、22、80、443、3389 等常见端口。如果你只想扫描 Web 服务的端口可以修改配置只保留 80、443、8080。TUI 操作终端界面遵循 vim 风格的按键设计j/k 上下移动、g/G 跳转首尾。按回车查看设备详情按 p 启动端口扫描。搜索功能用 / 触发支持正则表达式。界面主题可以实时切换Ctrlt。适用场景对于家庭网络用户Whosthere 能展示家里有多少台设备在线、每台设备的 MAC 地址和厂商帮助你找到占用带宽的未知设备。对于开发者它的守护进程模式和 JSON 输出方便集成到现有监控工具链。配合端口扫描功能也可以快速检查局域网内服务的开放端口。项目本身对网络安全有明确声明仅限在自己拥有权限的网络上使用。未经授权扫描他人网络可能违法。总结Whosthere 是一个专注于局域网设备发现的工具用 Go 编写提供了 TUI、CLI 和 HTTP API 三种使用方式。安装方便、不需要 root 权限、扫描速度较快。如果你需要对局域网设备做快速摸底值得一试。UI、CLI 和 HTTP API 三种使用方式。安装方便、不需要 root 权限、扫描速度较快。如果你需要对局域网设备做快速摸底值得一试。