15 คะแนน โดย GN⁺ 2026-01-25 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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 ความคิดเห็น

 
GN⁺ 2026-01-25
ความคิดเห็นจาก 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

    • เป็นเครื่องมือที่เจ๋งมาก :-) ถ้ามีฟังก์ชัน reverse lookup ของ IP ก็น่าจะดีมาก ใน LAN ของฉัน อุปกรณ์ที่ไม่มีชื่อส่วนใหญ่มักมีโอกาสเป็นผู้บุกรุกสูง
    • กำลังหาสิ่งนี้อยู่เลย! ฉันลองเทียบกับสแกนเนอร์ตัวอื่นแล้ว และ Advanced IP Scanner ก็ยังคงดีที่สุดในด้าน การตรวจจับ hostname
      ผลลัพธ์ในเครือข่ายของฉันเป็นดังนี้:
      • Advanced IP Scanner: พบชื่อ 80 จาก 309 รายการ
      • Angry IP Scanner: พบชื่อ 75 จาก 315 รายการ
      • whosthere: พบชื่อ 54 จาก 318 รายการ
    • ฉันติดตั้งบน Raspbian แล้วและมันทำงานได้ดีมาก ดีกว่าโค้ดที่ฉันรีบเขียนเมื่อวานเยอะเลย ถ้ามีฟีเจอร์ บันทึกล็อก อุปกรณ์ที่เพิ่งปรากฏใหม่ ก็น่าจะใช้เป็น IDS แบบง่าย ๆ ได้ด้วย
    • เจ๋งมาก! เมื่อไม่กี่วันก่อนฉันก็คิดไอเดียคล้าย ๆ กันอยู่เหมือนกัน ดีใจที่ได้เห็นสิ่งนี้ออกมา มันทำงานได้ดีบนเครือข่ายของฉันด้วย
    • เป็น TUI แล้วทำไมถึงมี dependency ของ X11 ล่ะ ฉันนึกว่าจะใช้ ncurses เป็นฐาน
  • มีคำพูดดังอยู่ว่า “ผู้ที่จำ nmap ไม่ได้ ย่อมถูกกำหนดให้สร้างมันขึ้นมาใหม่แบบไม่ค่อยดีนัก”
    มีการแชร์ตัวอย่างคำสั่งที่สแกน /24 ให้เสร็จภายใน 10 วินาทีโดยไม่ต้องใช้สิทธิ์ root
    ดู เอกสารทางการของ nmap ได้

    • ฉันก็ใช้ nmap บ่อยเหมือนกัน แต่เครื่องมือนี้ดูเหมือนมี จุดประสงค์ที่ต่างออกไป หรือมีฟีเจอร์เสริมเพิ่มเติม เลยสงสัยว่าทำไมถึงมองว่าเป็นตัวอย่างของการ ‘จำ nmap ไม่ได้’
    • LLDP กับ CDP ก็คงอยากขอมีส่วนร่วมในบทสนทนานี้เหมือนกัน
  • เมื่อ 5 ปีก่อนฉันก็เคยทำ เครื่องมือ CLI คล้ายกัน ด้วยไอเดียเดียวกัน แถมยังใช้ชื่อเดียวกันด้วย คือ ktotu ซึ่งเป็นเวอร์ชันภาษาโปแลนด์ของ “whosthere”
    ลิงก์โปรเจ็กต์ ktotu
    เวอร์ชันนี้สมบูรณ์กว่ามาก และการเลือกใช้ Go ก็เป็นการตัดสินใจที่ดี อยากรู้ว่าได้ไอเดียจาก AI มาสร้างหรือเปล่า

  • โดยรวมแล้วเป็นเครื่องมือที่ทำมาได้ดีมาก ถ้ามีตัวเลือก -i สำหรับ ระบุอินเทอร์เฟซที่จะสแกน ได้ก็น่าจะดี
    บนโน้ตบุ๊กของฉัน การสแกนครั้งแรกทำงานถูกต้อง แต่หลังจากนั้นกลับไม่เห็น ARP request อีกเลย

    • ใช่แล้ว เพื่อลดภาระบนเครือข่าย การสแกนเริ่มต้นจึงมีข้อจำกัดดังนี้:
      1. สแกนเฉพาะซับเน็ตของอินเทอร์เฟซที่กำหนด
      2. อนุญาตได้สูงสุดแค่ /16
      3. ทำงานได้เพียงทุก 5 นาทีหนึ่งครั้งเท่านั้น (ตอนนี้ฮาร์ดโค้ดไว้)
        การตั้งค่าอินเทอร์เฟซทำได้ในไฟล์ YAML และในอนาคตมีแผนจะให้ปรับผ่าน command-line flag ได้ด้วย
  • ถ้าตั้งชื่อเป็น “whogoesthere” น่าจะสนุกกว่านี้

    • ฉันว่า “whodat” เข้ากว่าด้วยซ้ำ
  • อยากรู้ว่าใน Go standard library มี ความสามารถเกี่ยวกับ TUI ที่ทำไว้ดีเป็นพิเศษหรือเปล่า ช่วงนี้เหมือน TUI รุ่นใหม่ทั้งหมดจะเขียนด้วย Go กันหมด

    • Go นั้น คอมไพล์และรันได้เร็ว และไม่มีข้อจำกัดในการ build ที่ซับซ้อนแบบ Rust
    • ใน standard library แทบไม่มีอะไรเกี่ยวกับ TUI เลย แต่ rivo/tview แข็งแรงมาก
    • ใน standard ไม่มี แต่ TUI ยอดนิยมของ Go หลายตัวถูกสร้างบน Bubble Tea ส่วนโปรเจ็กต์นี้ใช้ tview
  • ถ้าตั้งชื่อว่า “Whose LAN is it anyway?” ก็น่าจะเล่นมุกได้ดีกว่า

  • เป็นผลงานด้านเทคนิคที่ยอดเยี่ยม ตอนนี้ดูเหมือนจะเข้าสู่ เส้นทางของวิศวกรตัวจริง แล้ว
    แม้จะยังดูทราฟฟิกเครือข่ายโดยตรงไม่ได้ แต่ฉันเห็นคนจำนวนมากพยายามวินิจฉัยปัญหาโดยไม่มีเครื่องมือแบบนี้
    ในความเป็นจริง เครื่องมืออย่าง nmap, wireshark, LLDP, CDP เป็นสิ่งจำเป็น และสำหรับเครือข่ายขนาดใหญ่ ขอแนะนำ Netdisco

  • น่าสนใจที่ “โมเดิร์น TUI” ทุกวันนี้สุดท้ายก็เหมือนกำลังสร้างบรรยากาศย้อนยุคของยุค Turbo Vision, Clipper, curses ขึ้นมาใหม่

  • อยากรู้ว่าเคยทดสอบบน Tailscale หรือยัง มันอาจมีประโยชน์มาก แต่ Tailscale ยังไม่รองรับ mDNS
    ลิงก์ issue ที่เกี่ยวข้อง