
Go로 작성된 대화형 터미널 사용자 인터페이스(TUI)를 갖춘 근거리 통신망(LAN) 탐색 도구입니다. 직관적인 방식으로 LAN을 발견하고 탐색하며 이해하세요. 똑똑.. 누구세요? 🚪
Go로 작성된 대화형 터미널 사용자 인터페이스(TUI)를 갖춘 로컬 영역 네트워크 검색 도구입니다. 직관적인 방식으로 LAN을 발견하고 탐색하며 이해하세요.
Whosthere는 mDNS 및 SSDP 스캐너를 사용하여 권한 없는 동시 스캔을 수행합니다. 또한 TCP/UDP 연결을 시도하여 ARP 해상도를 트리거함으로써 로컬 서브넷을 스위핑한 다음 ARP 캐시를 읽어 로컬 영역 네트워크에서 장치를 식별합니다. 이 기술은 상승된 권한 없이 ARP 캐시를 채웁니다. 발견된 모든 장치는 OUI 조회를 통해 사용 가능한 경우 제조업체를 표시하도록 강화됩니다.
Whosthere는 모든 네트워크 관리자가 묻는 질문인 "네트워크에 누가 있나요?"에 친근하고 직관적인 방식으로 답변합니다.

Homebrew를 통해 brew로:
brew install whosthere
NixOS에서 nix로:
nix profile install nixpkgs#whosthere
Arch Linux에서 yay로:
yay -S whosthere-bin
패키지 관리자가 목록에 없으면 언제든지 Go로 설치할 수 있습니다:
go install github.com/ramonvermeulen/whosthere@latest
또는 소스에서 빌드:
git clone https://github.com/ramonvermeulen/whosthere.git
cd whosthere
make build
또한 릴리스 페이지에서 미리 빌드된 바이너리를 다운로드할 수 있습니다.
대화형 검색을 위해 TUI 실행:
whosthere
단일 스캔을 수행하고 결과를 출력하기 위해 CLI로 실행:
whosthere scan -t 5
JSON 파일로 결과 출력:
whosthere scan -t 5 --json --pretty > devices.json
HTTP API를 갖춘 데몬으로 실행:
whosthere daemon --port=8080
추가 명령줄 옵션은 다음을 실행하여 확인할 수 있습니다:
whosthere --help
Whosthere는 다음 우선순위(높음에서 낮음 순)로 여러 구성 방법을 지원합니다:
whosthere --help를 참조하세요.WHOSTHERE__ 접두사 사용. 환경 변수를 통한 구성을 참조하세요.DefaultConfig()를 참조하세요.Whosthere는 다음 순서로 구성 파일을 찾으며, 처음 발견된 파일을 사용합니다:
--config 플래그 또는 WHOSTHERE_CONFIG 환경 변수를 통해 지정된 경로$XDG_CONFIG_HOME/whosthere/config.yaml (XDG_CONFIG_HOME이 설정된 경우)~/.config/whosthere/config.yaml (기본 위치)구성 예제:
# Uncomment the next line to configure a specific network interface - uses OS default if not set
# network_interface: eth0
# When enabled, devices from all network interfaces are shown and persist when switching interfaces
# Note: if two interfaces share the same subnet (e.g. both use 192.168.1.x), devices may get merged
# since they are identified by IP address. Use with caution on overlapping subnets.
all_interfaces: false
# How often to run discovery scans
scan_interval: 20s
# Maximum timeout for each scan, recommended to be less than the scan interval
scan_timeout: 10s
scanners:
mdns:
enabled: true
ssdp:
enabled: true
arp:
enabled: true
sweeper:
enabled: true
interval: 5m
timeout: 20s
port_scanner:
timeout: 5s
# List of TCP ports to scan on discovered devices
tcp: [21, 22, 23, 25, 80, 110, 135, 139, 143, 389, 443, 445, 993, 995, 1433, 1521, 3306, 3389, 5432, 5900, 8080, 8443, 9000, 9090, 9200, 9300, 10000, 27017]
splash:
enabled: true
delay: 1s
theme:
# When disabled, the TUI will use the terminal it's default ANSI colors
# Also see the NO_COLOR environment variable to completely disable ANSI colors
enabled: true
# See the complete list of available themes at https://github.com/ramonvermeulen/whosthere/tree/main/internal/ui/theme/theme.go
# Set name to "custom" to use the custom colors below
# For any color that is not configured it will take the default theme value as fallback
name: default
# Disable ANSI colors completely, overrides theme.enabled
# Can also be set via NO_COLOR or WHOSTHERE__THEME__NO_COLOR environment variables
# no_color: false
# Custom theme colors (uncomment and set name: custom to use)
# primitive_background_color: "#000a1a"
# contrast_background_color: "#001a33"
# more_contrast_background_color: "#003366"
# border_color: "#0088ff"
# title_color: "#00ffff"
# graphics_color: "#00ffaa"
# primary_text_color: "#cceeff"
# secondary_text_color: "#6699ff"
# tertiary_text_color: "#ffaa00"
# inverse_text_color: "#000a1a"
# contrast_secondary_text_color: "#88ddff"
YAML 구성에서 사용 가능한 모든 구성 옵션은 WHOSTHERE__ 접두사(이중 밑줄 참고)를 사용하여 환경 변수를 통해 설정할 수 있습니다. 중첩된 구성 키는 이중 밑줄로 구분되며, 키는 대소문자를 구분하지 않습니다.
예시:
WHOSTHERE__SPLASH__ENABLED=false - 스플래시 화면을 비활성화하며, YAML 구성의 splash.enabled: false에 해당합니다.WHOSTHERE__SPLASH__DELAY=2s - 스플래시 화면 지연을 2초로 설정하며, YAML 구성의 splash.delay: 2s에 해당합니다.WHOSTHERE__SCAN_INTERVAL=30s - 스캔 간격을 30초로 설정하며, YAML 구성의 scan_interval: 30s에 해당합니다.WHOSTHERE__SCANNERS__MDNS__ENABLED=false - mDNS 스캐너를 비활성화하며, YAML 구성의 scanners.mdns.enabled: false에 해당합니다.WHOSTHERE__PORT_SCANNER__TCP=80,443,8080 - 사용자 정의 TCP 포트를 스캔하도록 설정하며, YAML 구성의 port_scanner.tcp: [80, 443, 8080]에 해당합니다.WHOSTHERE__THEME__NAME=cyberpunk - 테마를 사이버펑크로 설정하며, YAML 구성의 theme.name: cyberpunk에 해당합니다.Whosthere를 데몬 모드로 실행하면 매우 간단한 HTTP API를 노출하며, 다음 엔드포인트가 있습니다:
| 메서드 | 엔드포인트 | 설명 |
|---|---|---|
| GET | /devices | 발견된 모든 장치 목록 가져오기 |
| GET | /device/{ip} |
테마는 구성 파일을 통해 또는 런타임 시 CTRL+t 키 바인딩을 통해 구성할 수 있습니다. 사용 가능한 테마의 전체 목록은 여기에서 확인할 수 있으며, 자신의 테마를 추가하려면 PR을 열어 주세요!
테마 구성 예제:
theme:
enabled: true
name: cyberpunk
name이 custom으로 설정되면 다른 색상 옵션을 사용하여 자신만의 사용자 정의 테마를 만들 수 있습니다. enabled 옵션이 false로 설정되면 TUI는 터미널의 기본 ANSI 색상을 사용합니다. NO_COLOR 환경 변수가 설정되면 모든 ANSI 색상이 비활성화됩니다.
로그는 애플리케이션의 상태 디렉터리에 기록됩니다:
$XDG_STATE_HOME/whosthere/app.log (XDG_STATE_HOME이 설정된 경우)~/.local/state/whosthere/app.log (대체 Linux/MacOS)%LOCALAPPDATA%/whosthere/app.log (대체 Windows)TUI 모드로 실행하지 않을 때는 콘솔에도 로그가 기록됩니다.
Whosthere는 다음 플랫폼을 지원합니다:
클립보드 기능이 작동하려면 go-clipboard의 포크가 사용됩니다. OS에 맞는 적절한 복사 도구가 설치되어 있는지 확인하세요:
| OS | 지원되는 복사 도구 |
|---|---|
| Darwin | pbcopy |
| Windows | clip.exe |
Whosthere는 자신의 홈 네트워크와 같이 네트워크 검색 및 스캔을 수행할 권한이 있는 네트워크에서 사용하도록 설계되었습니다. 허가되지 않은 네트워크 스캔은 불법이거나 비윤리적일 수 있습니다. 이 도구를 사용하기 전에 항상 적절한 승인을 받아야 합니다.
이 도구는 주로 교육 목적과 홈 네트워크 탐색을 위해 만들어졌습니다. 기능적이고 유용하지만 전문적인 수준의 네트워크 모니터링 솔루션으로 간주되어서는 안 됩니다. 결과는 권한 없는 스캔 기술을 기반으로 하며 포괄적이지 않을 수 있습니다. 중요한 네트워크 분석이나 보안 평가를 위해서는 공식 지원을 받는 전문 도구를 사용하는 것을 고려하세요.
기능 요청, 버그 신고, 개선 사항 등의 기여와 제안을 환영합니다! GitHub 리포지토리에 이슈를 열거나 풀 리퀘스트를 제출해 주세요. 주요 변경 사항을 구현하기 전에 GitHub 이슈에서 논의해 주시기 바랍니다.
| Key | 동작 |
|---|
/ | 정규 표현식 검색 시작 |
k | 위 |
j | 아래 |
g | 맨 위로 이동 |
G | 맨 아래로 이동 |
y | 선택한 장치의 IP 복사 |
Y | 선택한 장치의 MAC 복사 |
enter | 장치 세부 정보 표시 |
CTRL+t | 테마 선택기 전환 |
CTRL+i | 인터페이스 선택기 전환 |
CTRL+c/q | 애플리케이션 중지 |
ESC | 검색 지우기 / 돌아가기 |
p (details view) | 장치에서 포트 스캔 시작 |
tab (modal view) | 버튼 선택 전환 |
| 변수 | 설명 |
|---|
WHOSTHERE_CONFIG | 구성 파일의 경로로, 기본 위치를 재정의할 수 있습니다. |
WHOSTHERE_LOG | 로그 레벨을 설정합니다 (예: debug, info, warn, error). 기본값은 info입니다. |
NO_COLOR | TUI에서 ANSI 색상을 비활성화합니다. |
| 특정 장치의 세부 정보 가져오기 |
| GET | /health | 상태 확인 |
| Linux/FreeBSD/NetBSD/OpenBSD/Dragonfly | X11: xsel, xclip Wayland: wl-copy |