- Whosthere là công cụ khám phá mạng cục bộ được viết bằng ngôn ngữ Go, cung cấp giao diện người dùng terminal (TUI) trực quan
- Có thể phát hiện và duyệt các thiết bị trong LAN, đồng thời hiểu rõ cấu trúc mạng
- Hỗ trợ Linux, macOS, Windows
- Sử dụng mDNS, trình quét SSDP và thử kết nối TCP/UDP để làm đầy bộ nhớ đệm ARP nhằm nhận diện thiết bị
- Có thể thu thập danh sách thiết bị bằng cách tận dụng bộ nhớ đệm ARP mà không cần quyền quản trị
- Với các thiết bị được phát hiện, công cụ hiển thị thông tin nhà sản xuất thông qua tra cứu OUI (Organizationally Unique Identifier)
- Giấy phép Apache-2.0
Tính năng chính
- Modern TUI: Cung cấp giao diện để duyệt các thiết bị đã khám phá một cách trực quan
- Fast & Concurrent: Thực hiện đồng thời nhiều phương thức khám phá để cho kết quả nhanh
- No Elevated Privileges Required: Có thể chạy chỉ với quyền người dùng thông thường
- Device Enrichment: Hiển thị thông tin nhà sản xuất thông qua tra cứu OUI
- Integrated Port Scanner: Bao gồm chức năng quét cổng của các host đã phát hiện (khuyến nghị chỉ quét các thiết bị được phép)
- Daemon Mode with HTTP API: Có thể chạy nền và tích hợp với các công cụ bên ngoài
- Theming & Configuration: Tùy biến giao diện và cách hoạt động thông qua tệp cấu hình YAML
Cách dùng
- Chạy TUI:
whosthere
- Chạy chế độ daemon HTTP API:
whosthere daemon --port 8080
GET /devices: Trả về danh sách tất cả thiết bị đã phát hiện
GET /device/{ip}: Trả về thông tin chi tiết của thiết bị cụ thể
GET /health: Kiểm tra trạng thái
1 bình luận
Ý kiến trên Hacker News
Tôi đã làm một công cụ TUI khám phá LAN viết bằng Go. Tên của nó là Whosthere, được thiết kế để khám phá các thiết bị trong mạng cục bộ mà không cần quyền quản trị
Nó kết hợp mDNS, SSDP, bộ nhớ đệm ARP, tra cứu OUI và nhiều thứ khác để tìm thiết bị, đồng thời hỗ trợ UI nhanh, ưu tiên bàn phím dựa trên tview, trình quét cổng tích hợp, chế độ daemon HTTP API và tệp cấu hình YAML
Đây là dự án được làm để học cả Go lẫn mạng cùng lúc, lấy cảm hứng từ các ứng dụng TUI như lazygit, k9s và dive
Có thể cài bằng Homebrew hoặc
go install, hỗ trợ Linux và macOSKết quả trên mạng của tôi như sau:
Có một câu nổi tiếng rằng: “Ai không nhớ đến nmap thì số phận sẽ bắt họ vụng về làm lại nó”
Có chia sẻ một ví dụ lệnh có thể quét
/24trong chưa tới 10 giây mà không cần quyền rootTham khảo tài liệu chính thức của nmap
Cách đây 5 năm tôi cũng làm một công cụ CLI tương tự với cùng ý tưởng, và tên cũng gần như y hệt, là phiên bản tiếng Ba Lan của “whosthere”: ktotu
Liên kết dự án ktotu
Phiên bản này hoàn thiện hơn nhiều và việc chọn Go cũng là một quyết định đúng đắn. Tôi tò mò không biết ý tưởng có được tạo ra bằng AI không
Nhìn chung đây là một công cụ được làm tốt. Sẽ hay hơn nếu có tùy chọn
-iđể chỉ định interface cần quét.Trên laptop của tôi, chỉ lần quét đầu tiên là hoạt động đúng, sau đó tôi không còn thấy các ARP request nữa
Có thể cấu hình interface trong tệp YAML, và sau này dự định sẽ cho phép chỉnh bằng cờ dòng lệnh nữa
Nếu đặt tên là “whogoesthere” thì có lẽ còn vui hơn
Tôi tò mò không biết thư viện chuẩn của Go có hỗ trợ TUI đặc biệt tốt không. Dạo này có vẻ mọi TUI mới đều được viết bằng Go
Nếu đặt tên là “Whose LAN is it anyway? ” thì có lẽ sẽ hóm hỉnh hơn
Kỹ năng kỹ thuật thật ấn tượng. Có vẻ giờ bạn đã thực sự bước vào con đường của một kỹ sư
Tuy không thể trực tiếp xem lưu lượng mạng, nhưng tôi thường thấy nhiều người cố chẩn đoán vấn đề mà không có những công cụ như thế này
Trên thực tế, các công cụ như nmap, wireshark, LLDP, CDP là thiết yếu, và với mạng quy mô lớn thì tôi khuyên dùng Netdisco
Thật thú vị khi các “TUI hiện đại” ngày nay rốt cuộc lại đang tái hiện phong cách hoài cổ của thời Turbo Vision, Clipper, curses
Không biết đã thử trên Tailscale chưa. Nó có thể rất hữu ích, nhưng Tailscale hiện vẫn chưa hỗ trợ mDNS
Liên kết issue liên quan