- Whosthere เป็นเครื่องมือสำรวจเครือข่ายภายในที่เขียนด้วยภาษา Go พร้อมมอบ เทอร์มินัลยูสเซอร์อินเทอร์เฟซ (TUI) ที่ใช้งานเข้าใจง่าย
- สามารถค้นหาและสำรวจอุปกรณ์ภายใน LAN เพื่อช่วยให้เข้าใจโครงสร้างเครือข่ายได้
- รองรับ Linux, macOS, Windows
- ใช้ mDNS, ตัวสแกน SSDP และ การลองเชื่อมต่อ TCP/UDP เพื่อเติม แคช ARP และระบุอุปกรณ์
- สามารถใช้แคช ARP เพื่อรวบรวมรายการอุปกรณ์ได้โดยไม่ต้องมีสิทธิ์ผู้ดูแลระบบ
- อุปกรณ์ที่ค้นพบจะแสดงข้อมูลผู้ผลิตผ่านการค้นหา OUI (Organizationally Unique Identifier)
- Apache-2.0 License
ฟีเจอร์หลัก
- Modern TUI: มีอินเทอร์เฟซสำหรับสำรวจอุปกรณ์ที่ค้นพบได้อย่างเข้าใจง่าย
- Fast & Concurrent: ใช้วิธีสำรวจหลายแบบพร้อมกันเพื่อให้ได้ผลลัพธ์รวดเร็ว
- No Elevated Privileges Required: รันได้ด้วยสิทธิ์ผู้ใช้ทั่วไป
- Device Enrichment: แสดงข้อมูลผู้ผลิตผ่านการค้นหา OUI
- Integrated Port Scanner: มีฟังก์ชันสแกนพอร์ตของโฮสต์ที่ค้นพบ (แนะนำให้สแกนเฉพาะอุปกรณ์ที่ได้รับอนุญาต)
- Daemon Mode with HTTP API: รันเบื้องหลังและผสานการทำงานกับเครื่องมือภายนอกได้
- Theming & Configuration: ปรับแต่งธีมและพฤติกรรมการทำงานผ่านไฟล์ตั้งค่า YAML
วิธีใช้งาน
- รัน TUI:
whosthere
- รันโหมด HTTP API daemon:
whosthere daemon --port 8080
GET /devices: ส่งคืนรายการอุปกรณ์ที่ค้นพบทั้งหมด
GET /device/{ip}: ส่งคืนรายละเอียดของอุปกรณ์ที่ระบุ
GET /health: ตรวจสอบสถานะ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ได้สร้าง เครื่องมือค้นหาอุปกรณ์ใน LAN แบบ TUI ที่เขียนด้วย Go ชื่อ Whosthere โดยออกแบบมาให้สำรวจอุปกรณ์ในเครือข่ายภายในได้โดยไม่ต้องใช้สิทธิ์ผู้ดูแลระบบ
ใช้การผสมผสานของ mDNS, SSDP, ARP cache, การค้นหา OUI ฯลฯ เพื่อหาอุปกรณ์ และรองรับ UI ที่เน้นคีย์บอร์ดและรวดเร็วบนพื้นฐาน tview, ตัวสแกนพอร์ตในตัว, โหมด HTTP API daemon และไฟล์ตั้งค่า YAML
เป็นโปรเจ็กต์ที่ทำขึ้นเพื่อเรียนรู้ Go และเครือข่ายไปพร้อมกัน และได้แรงบันดาลใจจากแอป TUI อย่าง lazygit, k9s และ dive
ติดตั้งได้ด้วย Homebrew หรือ
go installและรองรับ Linux กับ macOSผลลัพธ์ในเครือข่ายของฉันเป็นดังนี้:
มีคำพูดดังอยู่ว่า “ผู้ที่จำ nmap ไม่ได้ ย่อมถูกกำหนดให้สร้างมันขึ้นมาใหม่แบบไม่ค่อยดีนัก”
มีการแชร์ตัวอย่างคำสั่งที่สแกน
/24ให้เสร็จภายใน 10 วินาทีโดยไม่ต้องใช้สิทธิ์ rootดู เอกสารทางการของ nmap ได้
เมื่อ 5 ปีก่อนฉันก็เคยทำ เครื่องมือ CLI คล้ายกัน ด้วยไอเดียเดียวกัน แถมยังใช้ชื่อเดียวกันด้วย คือ ktotu ซึ่งเป็นเวอร์ชันภาษาโปแลนด์ของ “whosthere”
ลิงก์โปรเจ็กต์ ktotu
เวอร์ชันนี้สมบูรณ์กว่ามาก และการเลือกใช้ Go ก็เป็นการตัดสินใจที่ดี อยากรู้ว่าได้ไอเดียจาก AI มาสร้างหรือเปล่า
โดยรวมแล้วเป็นเครื่องมือที่ทำมาได้ดีมาก ถ้ามีตัวเลือก
-iสำหรับ ระบุอินเทอร์เฟซที่จะสแกน ได้ก็น่าจะดีบนโน้ตบุ๊กของฉัน การสแกนครั้งแรกทำงานถูกต้อง แต่หลังจากนั้นกลับไม่เห็น ARP request อีกเลย
การตั้งค่าอินเทอร์เฟซทำได้ในไฟล์ YAML และในอนาคตมีแผนจะให้ปรับผ่าน command-line flag ได้ด้วย
ถ้าตั้งชื่อเป็น “whogoesthere” น่าจะสนุกกว่านี้
อยากรู้ว่าใน Go standard library มี ความสามารถเกี่ยวกับ TUI ที่ทำไว้ดีเป็นพิเศษหรือเปล่า ช่วงนี้เหมือน TUI รุ่นใหม่ทั้งหมดจะเขียนด้วย Go กันหมด
ถ้าตั้งชื่อว่า “Whose LAN is it anyway?” ก็น่าจะเล่นมุกได้ดีกว่า
เป็นผลงานด้านเทคนิคที่ยอดเยี่ยม ตอนนี้ดูเหมือนจะเข้าสู่ เส้นทางของวิศวกรตัวจริง แล้ว
แม้จะยังดูทราฟฟิกเครือข่ายโดยตรงไม่ได้ แต่ฉันเห็นคนจำนวนมากพยายามวินิจฉัยปัญหาโดยไม่มีเครื่องมือแบบนี้
ในความเป็นจริง เครื่องมืออย่าง nmap, wireshark, LLDP, CDP เป็นสิ่งจำเป็น และสำหรับเครือข่ายขนาดใหญ่ ขอแนะนำ Netdisco
น่าสนใจที่ “โมเดิร์น TUI” ทุกวันนี้สุดท้ายก็เหมือนกำลังสร้างบรรยากาศย้อนยุคของยุค Turbo Vision, Clipper, curses ขึ้นมาใหม่
อยากรู้ว่าเคยทดสอบบน Tailscale หรือยัง มันอาจมีประโยชน์มาก แต่ Tailscale ยังไม่รองรับ mDNS
ลิงก์ issue ที่เกี่ยวข้อง