Hacker News 中文摘要

RSS订阅

显示HN:Whosthere:一款用Go编写的现代TUI局域网发现工具 -- Show HN: Whosthere: A LAN discovery tool with a modern TUI, written in Go

文章摘要

"Whosthere"是一款用Go语言编写的局域网发现工具,具有现代化的终端用户界面(TUI),可直观地探索和理解局域网设备。该工具开源,支持多种Go版本,并采用MIT许可证发布。

文章总结

GitHub项目:whosthere - 局域网设备发现工具

项目简介
whosthere是一款基于Go语言开发的局域网(LAN)设备发现工具,采用现代化的终端用户界面(TUI),支持通过直观的方式探索和识别网络中的设备。其核心功能包括无特权并发扫描、设备厂商识别及可选的端口扫描。


核心功能
1. 多协议扫描
- 通过mDNS和SSDP协议发现设备
- 利用TCP/UDP连接触发ARP解析,读取ARP缓存识别设备(无需管理员权限)
- 结合OUI数据库显示设备制造商信息

  1. 交互式TUI

    • 支持快捷键导航(如/搜索、j/k上下移动、p启动端口扫描等)
    • 可配置主题(内置多种风格,支持自定义颜色)
  2. 扩展特性

    • 后台守护模式:提供HTTP API(/devices获取设备列表、/health健康检查)
    • 端口扫描:预设常见TCP端口(如22/80/443等),需用户授权后使用
    • 跨平台支持:Linux、macOS(Windows支持待完善)

安装与使用
- 安装方式
- Homebrew:brew install ramonvermeulen/whosthere/whosthere
- Go编译:go install github.com/ramonvermeulen/whosthere@latest
- 源码构建:git clone后执行make build

  • 运行示例
    • 交互模式:直接运行whosthere
    • 守护进程:whosthere daemon --port 8080

配置与日志
- 配置文件:YAML格式,支持设置扫描间隔(默认20秒)、主题、端口列表等
- 路径优先级:环境变量WHOSTHERE_CONFIG > ~/.config/whosthere/config.yaml
- 日志输出:默认写入~/.local/state/whosthere/app.log,非TUI模式时同步输出至控制台


注意事项
- 法律声明:仅限授权网络使用,未经许可扫描可能违法
- 已知问题
- Linux剪贴板依赖X11库(Wayland需XWayland兼容层)
- Windows支持尚不完善,欢迎贡献代码

开源贡献
欢迎提交功能建议、BUG报告或PR,重大变更请先通过GitHub Issue讨论。


项目链接:GitHub - ramonvermeulen/whosthere

(注:原文中的徽标链接、详细键位表及完整配置示例等非核心内容已精简,保留关键信息。)

评论总结

以下是评论内容的总结:

1. 工具功能与使用体验

  • 正面评价:用户认为该工具实用,能替代繁琐的路由器界面操作,且界面友好。

    • "this is great!...awesome tool, i am definitely going to be using this more often."(coolius)
    • "Good stuff, this saves me the trouble of going through router GUI."(kapitanjakc)
  • 问题反馈:部分用户遇到端口扫描不准确、网络接口选择问题或缺少功能(如显示SAMBA名称)。

    • "It says 'Open ports: (None)' for all devices on my network, despite there being open ports."(Anonbrit)
    • "only thing I miss is it doesn't show SAMBA names."(girishso)

2. 技术实现与改进建议

  • 开发动机:作者旨在结合Go语言学习与网络知识,并受到其他TUI应用启发。

    • "Mainly to learn...combine learning Go with learning more about networking."(rvermeulen98)
  • 改进建议:用户希望增加命令行参数(如指定扫描接口)、支持.deb包或解决macOS安全警告。

    • "I'd request an -i command-line parameter to specify the interface."(84634E1A607A)
    • "I wish it has a .deb package.."(vzaliva)

3. 命名与设计讨论

  • 命名趣味性:部分用户调侃工具名称的潜在双关机会。

    • "Surely a missed opportunity to name it 'whogoesthere'."(mrcaramelpants)
    • "Big missed opportunity to call it 'Whose LAN is it anyway?'"(jasonjmcghee)
  • TUI设计争议:用户讨论“现代TUI”的定义及Go语言是否适合开发TUI。

    • "I wonder what the definition of 'modern TUI' means...just not using curses?"(petcat)
    • "Does the Go standard library have unusually good TUI support?"(zahlman)

4. 平台与兼容性问题

  • macOS安全限制:部分用户因系统安全警告无法运行工具。

    • "Apple could not verify 'whosthere' is free of malware...I would rather not doing."(hk1337)
    • "Using brew, I got 'Apple could not verify...'"(GeoffKnauth)
  • 特定网络环境限制:如Tailscale不支持mDNS,影响工具使用。

    • "Could be super useful but sadly TS doesn't support mDNS."(apitman)

5. 其他相关讨论

  • 同类开发:有用户分享类似项目或询问技术选型(如tcell vs charmbracelet)。

    • "Busy building something similar...hardcode some assumptions."(Havoc)
    • "Any reason you went with tcell instead of charmbracelet ecosystem?"(Evidlo)
  • 功能扩展期待:如浏览器支持mDNS/SSDP的设想。

    • "I hope browsers could support mDNS or SSDP. We need an Intranet browser!"(est)

总结:评论整体肯定工具的实用性和学习价值,但提出了功能改进、兼容性及安全提示等问题,同时引发了对TUI设计趋势和Go语言生态的讨论。