
Go로 작성된 대화형 터미널 사용자 인터페이스(TUI)를 갖춘 근거리 통신망(LAN) 탐색 도구입니다. 직관적인 방식으로 LAN을 발견하고 탐색하며 이해하세요. 똑똑.. 누구세요? 🚪
Go로 작성된 대화형 터미널 사용자 인터페이스(TUI)를 갖춘 근거리 통신망(LAN) 검색 도구입니다. 직관적인 방식으로 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 aliases import ./aliases.yaml
whosthere aliases export --stdout
추가 명령줄 옵션은 다음을 실행하여 확인할 수 있습니다:
whosthere --help
| 키 | 동작 |
|---|---|
/ | 정규식 검색 시작 |
k | 위로 |
j | 아래로 |
g | 맨 위로 이동 |
G | 맨 아래로 이동 |
y | 선택한 장치의 IP 복사 |
Y | 선택한 장치의 MAC 복사 |
enter | 장치 세부 정보 표시 |
CTRL+t | 테마 선택기 전환 |
CTRL+i | 인터페이스 선택기 전환 |
CTRL+c/q | 애플리케이션 중지 |
ESC | 검색 지우기 / 뒤로 가기 |
p (세부 정보 보기) | 장치에서 포트 스캔 시작 |
tab (모달 보기) | 버튼 선택 전환 |
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
# Optional IPv4 CIDR subnets to sweep. When set, the sweeper skips the auto-detected interface subnet unless it is listed here.
# target_subnets: ["10.0.0.0/24", "10.0.1.0/24"]
# WARNING: scanning subnets larger than /16 sends packets to 65535+ IPs per subnet. Enable only if you understand the traffic implications. Consider using smaller /24 subnets for targeted scanning.
# scan_large_subnets: 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"
aliases:
# Uncomment to import aliases.yaml into the local database on startup (only when it changed)
# auto_import: false
# Override the aliases file path - defaults to the app config directory
# file: "/path/to/aliases.yaml"
| 변수 | 설명 |
|---|---|
WHOSTHERE_CONFIG | 기본 위치를 덮어쓸 수 있도록 하는 구성 파일 경로입니다. |
WHOSTHERE_LOG | 로그 수준을 설정합니다(예: debug, info, warn, error). 기본값은 info입니다. |
NO_COLOR | TUI에서 ANSI 색상을 비활성화합니다. |
YAML 구성에서 사용할 수 있는 모든 구성 옵션은 WHOSTHERE__ 접두사(이중 밑줄에 주의)를 사용하여 환경 변수로 설정할 수 있습니다. 중첩된 구성 키는 이중 밑줄로 구분되며, 키는 대소문자를 구분하지 않습니다.
예시: