-
Whosthere는 로컬 네트워크(LAN)의 장치를 탐색하고 시각적으로 이해할 수 있는 Go 기반 터미널 UI(TUI) 도구
-
mDNS, SSDP, ARP 캐시를 활용해 비관리자 권한에서도 병렬로 장치를 스캔
- 발견된 장치에 대해 OUI 조회로 제조사 정보를 표시하고, 포트 스캐너를 통해 서비스 탐색 지원
-
HTTP API 데몬 모드, 테마 설정, YAML 기반 구성 파일 등으로 확장성과 개인화 제공
- 네트워크 관리자가 자신의 네트워크를 빠르고 직관적으로 파악할 수 있게 하는 오픈소스 네트워크 탐색 도구
Whosthere 개요
-
Whosthere는 Go 언어로 작성된 로컬 네트워크 탐색 도구로, 직관적인 터미널 사용자 인터페이스(TUI) 제공
- LAN 내 장치를 발견하고 탐색하며, 네트워크 구조를 이해할 수 있는 기능 지원
-
mDNS와 SSDP 스캐너, 그리고 TCP/UDP 연결 시도를 통해 ARP 캐시를 채워 장치를 식별
- 관리자 권한 없이도 ARP 캐시를 활용해 장치 목록을 수집 가능
- 발견된 장치에는 OUI(Organizationally Unique Identifier) 조회를 통해 제조사 정보 표시
주요 기능
-
Modern TUI: 탐색된 장치를 직관적으로 탐색할 수 있는 인터페이스 제공
-
Fast & Concurrent: 여러 탐색 방식을 동시에 수행해 빠른 결과 제공
-
No Elevated Privileges Required: 사용자 권한만으로 실행 가능
-
Device Enrichment: OUI 조회를 통한 제조사 정보 표시
-
Integrated Port Scanner: 발견된 호스트의 포트 스캔 기능 포함 (허가된 장치만 스캔 권장)
-
Daemon Mode with HTTP API: 백그라운드 실행 및 외부 도구와의 통합 가능
-
Theming & Configuration: YAML 설정 파일을 통한 테마 및 동작 방식 사용자 정의
설치 방법
-
Homebrew를 이용한 설치
-
brew tap ramonvermeulen/whosthere
-
brew install whosthere
-
Go 설치 명령어
-
go install github.com/ramonvermeulen/whosthere@latest
-
소스 빌드
사용법
-
TUI 실행: whosthere
-
HTTP API 데몬 모드 실행: whosthere daemon --port 8080
-
명령행 옵션 확인: whosthere --help
지원 플랫폼
TUI 키 바인딩
-
/: 정규식 검색 시작
-
k/j: 위/아래 이동
-
g/G: 맨 위/맨 아래로 이동
-
y: 선택된 장치의 IP 복사
-
Enter: 장치 상세 정보 표시
-
CTRL+t: 테마 선택기 전환
-
p: 장치 포트 스캔 시작
-
ESC: 검색 해제 또는 뒤로 가기
환경 변수
-
WHOSTHERE_CONFIG: 설정 파일 경로 지정
-
WHOSTHERE_LOG: 로그 레벨 설정 (debug, info, warn, error)
구성 파일 (YAML)
- 기본 경로:
-
$WHOSTHERE_CONFIG 환경 변수
-
$XDG_CONFIG_HOME/whosthere/config.yaml
-
~/.config/whosthere/config.yaml
- 주요 설정 항목:
-
scan_interval: 스캔 주기
-
scan_duration: 각 스캔의 최대 지속 시간
-
theme: TUI 테마 설정
-
scanners: mDNS, SSDP, ARP 활성화 여부
-
port_scanner: 포트 스캔 타임아웃 및 포트 목록
HTTP API (데몬 모드)
-
GET /devices: 발견된 모든 장치 목록 반환
-
GET /device/{ip}: 특정 장치 세부 정보 반환
-
GET /health: 상태 확인
테마 설정
- 설정 파일 또는 CTRL+t 단축키로 테마 변경 가능
- 기본 제공 테마 외에 사용자 정의(custom) 테마 생성 가능
- 예시:
theme:
name: cyberpunk
로그 관리
- 로그 파일 경로:
-
$XDG_STATE_HOME/whosthere/app.log
-
~/.local/state/whosthere/app.log (Linux/macOS)
-
%LOCALAPPDATA%/whosthere/app.log (Windows)
- TUI 모드가 아닐 경우 콘솔에도 로그 출력
알려진 문제
- 클립보드 기능은 go-clipboard 포크 버전 사용
- OS별 지원 복사 도구:
- macOS: pbcopy
- Windows: clip.exe
- Linux/FreeBSD 등: xsel, xclip, wl-copy
사용 주의
-
허가된 네트워크에서만 사용해야 하며, 무단 스캔은 불법일 수 있음
- 개인 또는 관리 권한이 있는 네트워크에서의 사용 권장
기여
- 기능 제안, 버그 리포트, 개선 사항 등의 Pull Request 및 Issue 등록 환영
- 주요 변경 사항은 사전 논의 후 구현 권장
라이선스
-
Apache-2.0 License 기반 오픈소스 프로젝트