# Whosthere - Go로 작성된 현대적 TUI 기반 LAN 탐색 도구

> Clean Markdown view of GeekNews topic #26096. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=26096](https://news.hada.io/topic?id=26096)
- GeekNews Markdown: [https://news.hada.io/topic/26096.md](https://news.hada.io/topic/26096.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-01-25T07:32:43+09:00
- Updated: 2026-01-25T07:32:43+09:00
- Original source: [github.com/ramonvermeulen](https://github.com/ramonvermeulen/whosthere)
- Points: 15
- Comments: 1

## Summary

**Whosthere**는 Go로 작성된 **현대적 TUI 기반 LAN 탐색 도구**로, 관리자 권한 없이도 로컬 네트워크의 장치를 빠르게 식별하고 구조를 시각적으로 파악할 수 있습니다. mDNS·SSDP 스캔과 ARP 캐시 활용을 결합해 효율적인 탐색을 수행하며, OUI 조회로 제조사 정보를 함께 제공합니다. CLI 실행뿐 아니라 HTTP API 데몬 모드도 지원해, 다른 네트워크 관리 도구와의 통합이 용이합니다.

## Topic Body

- **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 데몬 모드 실행**: `whosthere daemon --port 8080`  
  - `GET /devices`: 발견된 모든 장치 목록 반환  
  - `GET /device/{ip}`: 특정 장치 세부 정보 반환  
  - `GET /health`: 상태 확인

## Comments



### Comment 49874

- Author: neo
- Created: 2026-01-25T07:32:43+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=46731432) 
- Go로 작성한 **LAN 디스커버리 TUI 툴**을 만들었음. 이름은 *Whosthere*이며, 관리자 권한 없이 로컬 네트워크의 장치를 탐색할 수 있게 설계했음  
  mDNS, SSDP, ARP 캐시, OUI 조회 등을 조합해 장치를 찾고, **tview 기반의 빠른 키보드 중심 UI**, 내장 포트 스캐너, HTTP API 데몬 모드, YAML 설정 파일을 지원함  
  Go와 네트워킹을 동시에 배우기 위해 만든 프로젝트이며, lazygit, k9s, dive 같은 TUI 앱에서 영감을 받았음  
  Homebrew나 `go install`로 설치 가능하며 Linux와 macOS를 지원함  
  - 아주 멋진 툴임 :-) IP의 **역방향 조회(reverse lookup)** 기능이 있으면 좋겠음. 내 LAN에서는 이름이 없는 장치는 대부분 침입자일 가능성이 높음  
  - 이런 걸 찾고 있었음! 다른 스캐너와 비교해봤는데, [Advanced IP Scanner](https://www.advanced-ip-scanner.com/)가 여전히 **호스트네임 탐지**에서는 최고였음.  
    내 네트워크 결과는 다음과 같음:  
    - Advanced IP Scanner: 309개 중 80개 이름 확인  
    - [Angry IP Scanner](https://angryip.org/): 315개 중 75개 이름 확인  
    - whosthere: 318개 중 54개 이름 확인  
  - Raspbian에 설치했는데 아주 잘 작동함. 어제 급하게 만든 코드보다 훨씬 나음. 새로 등장한 장치를 **로그로 기록**하는 기능이 있으면 간단한 IDS로도 쓸 수 있을 것 같음  
  - 멋짐! 며칠 전 나도 비슷한 아이디어를 생각했는데, 이렇게 나온 게 반가움. 내 네트워크에서도 잘 작동함  
  - TUI인데 왜 **X11 의존성**이 있는지 궁금함. ncurses 기반일 줄 알았음  

- “nmap을 기억하지 못하는 자는 그것을 서툴게 다시 만들 운명이다”라는 유명한 말이 있음  
  루트 권한 없이 `/24` 스캔을 10초 안에 끝내는 명령 예시를 공유함  
  [nmap 공식 문서](https://nmap.org/book/toc.html) 참고  
  - 나도 nmap을 자주 쓰지만, 이 툴은 nmap과는 **다른 목적**이나 추가 기능을 가진 것 같음. 왜 nmap을 ‘기억하지 못한’ 예시라고 생각하는지 궁금함  
  - LLDP와 CDP도 대화에 끼고 싶어할 것 같음  

- 5년 전 나도 같은 아이디어로 **비슷한 CLI 툴**을 만들었는데, 이름도 똑같이 “whosthere”의 폴란드어 버전 *ktotu*였음  
  [ktotu 프로젝트 링크](https://github.com/jmaczan/ktotu)  
  이번 버전은 훨씬 완성도 높고 Go를 선택한 것도 좋은 판단임. 혹시 AI로 아이디어를 생성한 건지 궁금함  

- 전반적으로 잘 만든 툴임. `-i` 옵션으로 **스캔할 인터페이스 지정**이 가능하면 좋겠음.  
  내 노트북에서는 첫 스캔만 제대로 되고 이후에는 ARP 요청이 보이지 않았음  
  - 맞음. 네트워크 부하를 줄이기 위해 초기 스캔은 다음과 같은 제한이 있음:  
    1) 지정된 인터페이스의 서브넷만 스캔  
    2) 최대 /16까지만 허용  
    3) 5분마다 한 번만 실행 (현재 하드코딩되어 있음)  
    인터페이스 설정은 YAML 파일에서 가능하며, 향후 **명령줄 플래그**로도 조정할 수 있게 할 예정임  

- 이름을 “**whogoesthere**”로 했으면 더 재밌었을 것 같음  
  - 나는 “**whodat**”이 더 어울린다고 생각함  

- Go 표준 라이브러리에 **TUI 관련 기능**이 특별히 잘 되어 있는지 궁금함. 요즘 새 TUI들이 전부 Go로 작성되는 것 같음  
  - Go는 **컴파일과 실행이 빠르고**, Rust처럼 복잡한 빌드 제약이 없음  
  - 표준 라이브러리에는 TUI 관련 기능이 거의 없지만, [rivo/tview](https://github.com/rivo/tview)가 아주 탄탄함  
  - 표준에는 없지만, 많은 인기 Go TUI들이 [Bubble Tea](https://github.com/charmbracelet/bubbletea)를 기반으로 만들어짐. 이 프로젝트는 tview를 사용함  

- 이름을 “**Whose LAN is it anyway?** ”로 했으면 더 재치 있었을 듯함  

- 훌륭한 기술력임. 이제 진짜 **엔지니어의 길**로 들어선 것 같음  
  네트워크 트래픽을 직접 볼 수는 없지만, 이런 툴 없이 문제를 진단하려는 사람들을 자주 봄  
  실제로는 **nmap, wireshark, LLDP, CDP** 같은 도구가 필수이며, 대규모 네트워크에는 **Netdisco**를 추천함  

- 요즘 “모던 TUI”들이 결국 **Turbo Vision, Clipper, curses** 시절의 복고풍을 재현하고 있는 게 흥미로움  

- 혹시 **Tailscale**에서 테스트해봤는지 궁금함. 매우 유용할 수 있겠지만, Tailscale은 아직 mDNS를 지원하지 않음  
  [관련 이슈 링크](https://github.com/tailscale/tailscale/issues/1013)
