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

2 weeks ago 7

  • Whosthere는 로컬 네트워크(LAN)의 장치를 탐색하고 시각적으로 이해할 수 있는 Go 기반 터미널 UI(TUI) 도구
  • mDNS, SSDP, ARP 캐시를 활용해 비관리자 권한에서도 병렬로 장치를 스캔
  • 발견된 장치에 대해 OUI 조회로 제조사 정보를 표시하고, 포트 스캐너를 통해 서비스 탐색 지원
  • HTTP API 데몬 모드, 테마 설정, YAML 기반 구성 파일 등으로 확장성과 개인화 제공
  • 네트워크 관리자가 자신의 네트워크를 빠르고 직관적으로 파악할 수 있게 하는 오픈소스 네트워크 탐색 도구

Whosthere 개요

  • Whosthere는 Go 언어로 작성된 로컬 네트워크 탐색 도구로, 직관적인 터미널 사용자 인터페이스(TUI) 제공
    • LAN 내 장치를 발견하고 탐색하며, 네트워크 구조를 이해할 수 있는 기능 지원
  • mDNSSSDP 스캐너, 그리고 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

지원 플랫폼

  • Linux, macOS, Windows 지원

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 RequestIssue 등록 환영
  • 주요 변경 사항은 사전 논의 후 구현 권장

라이선스

  • Apache-2.0 License 기반 오픈소스 프로젝트

Read Entire Article