
흐름 우선 PCAP TUI (사례 파일, 멋진 UX). 두 두 두 두.
Wireshark를 터미널에서 쉽게 사용할 수 있게 해주는 도구입니다.
Babyshark는 PCAP TUI로, 다음과 같은 질문에 답하는 데 도움을 줍니다:
상태: v0.3.0 (알파).
.pcap / .pcapng 파일 보기는 Wireshark 없이 작동합니다tshark (Wireshark CLI)가 필요합니다
개요는 "여기서 시작하세요" 대시보드입니다. 캡처를 요약하고 다음에 할 일을 제안합니다.
tshark의 마지막 상태/오류 줄)를 표시합니다.사용 방법:
D를 누르면 도메인(호스트명 우선)으로 이동합니다.W를 누르면 이상 항목(선별된 탐지기)으로 이동합니다.F(또는 f)를 누르면 플로우(원시 데이터)로 이동합니다.
도메인은 트래픽을 호스트명별로 그룹화하여 5-튜플 대신 이름으로 시작할 수 있게 합니다.
사용 방법:
s를 누르면 정렬 모드를 변경합니다.c를 누르면 활성 부분 필터를 지웁니다.
이상 항목은 선별된 탐지기 집합으로, Wireshark에 대한 깊은 지식 없이 "무엇이 고장나거나 느린가?"에 답하기 위한 것입니다.
사용 방법:
c를 누르면 활성 부분 필터를 지웁니다.
확장/설명(?)은 현재 보고 있는 내용에 대한 평이한 영어 설명을 제공합니다.
?를 누르면 설명이 열립니다.팁: h를 누르면 도움말, g를 누르면 용어집이 표시됩니다.
GitHub Releases에서 바이너리를 받으세요:
git clone https://github.com/vignesh07/babyshark
cd babyshark/rust
cargo install --path . --force
babyshark --help
.pcap / .pcapng 파일을 열어 탐색:
n / N 탐색이 포함된 스트림 검색DL/UL 접미사 + 세부 정보의 download-heavy/upload-heavy/balanced (로컬 측이 모호한 경우 A>B/B>A로 대체)T):
사전 빌드된 바이너리 다운로드:
필수 조건:
tsharkgit clone https://github.com/vignesh07/babyshark
cd babyshark/rust
cargo install --path . --force
babyshark --help
cargo install --git https://github.com/vignesh07/babyshark --bin babyshark
tshark 설치 (--live 모드에 필요)tshark는 공식 Wireshark CLI입니다.
# macOS (Homebrew)
brew install wireshark
Debian/Ubuntu:
sudo apt-get update
sudo apt-get install -y tshark
Fedora:
sudo dnf install -y wireshark-cli
Arch:
sudo pacman -S wireshark-cli
확인:
tshark --version
tshark -D
권한 참고: 라이브 캡처에는 관리자 권한(sudo, dumpcap 캡, 또는 wireshark 그룹에 속함)이 필요할 수 있습니다. babyshark가 권한 오류를 출력하면 출력된 지침을 따르세요.
babyshark가 git에서 업데이트되었지만 명령이 여전히 이전 동작을 실행합니다cargo install로 설치한 경우, 풀(pull) 후 다시 설치해야 합니다:
cd babyshark/rust
cargo install --path . --force
sudo로 실행해 보세요:
sudo babyshark --live en0
작동한다면 OS에서 캡처 권한(dumpcap, wireshark 그룹 등)을 구성해야 할 가능성이 높습니다.
ips=0이 표시됩니다DNS 응답이 보이지 않을 때(DoH/DoT 또는 캐시됨) 자주 발생합니다. Babyshark는 사용 가능한 경우 TLS SNI / HTTP Host 힌트를 사용하여 관찰된 IP(플로우에서) 를 계속 표시합니다.
babyshark --pcap ./capture.pcap
babyshark --list-ifaces
babyshark --live en0
babyshark --live en0 --dfilter "tcp.port==443"
babyshark --live en0 --write-pcap /tmp/live.pcapng
다음은 TUI에서 보게 될 텍스트 전용 예시입니다. IP/도메인은 익명화되었습니다.
PCAP Viewer
babyshark 개요 flows:114 packets:4227 tcp:on udp:on q=—
개요 (D 도메인, W 이상, F 플로우)
평이한 영어
패킷: 4227 플로우: 114 최다 통신: 10.0.0.6 (2711.9KB) 최다 통신(패킷): 10.0.0.6 (4046 pkts)
라이브: 88s pps~14.6 dropped~0 | 마지막: Capturing on 'Wi‑Fi: en0'
pps: ▁▁▂▂▃▄▅▆▆▇▆▅▄▃▂▂▁ (max 1372/bucket)
최다 플로우(바이트): UDP 10.0.0.6:57315 ↔ 203.0.113.123:443 (1359.3KB)
최다 플로우(패킷): UDP 10.0.0.6:57315 ↔ 203.0.113.123:443 (1284 pkts)
무엇을 클릭해야 할까요?
• 도메인 (사용자 관점) (D 누르기)
• 이상 항목 (문제 해결) (W 누르기)
• 플로우 (원시 데이터) (F 누르기)
• 타임라인 (간트 + 산점도) (T 누르기)
↳ 감지됨: 고지연 플로우(대략) (29 flows)
도메인 (Enter 플로우 표시, s 정렬(conn/bytes/fail), c 지우기, Esc 뒤로)
1 wikipedia.com conn=9 bytes=21.0KB q=9 r=6 fail=0 ips=2
❯ 2 chat.openai.com conn=5 bytes=28.2KB q=5 r=3 fail=0 ips=2
도메인 세부 정보
chat.openai.com
queries=5 responses=3 failures=0
관찰된 IP (플로우에서):
10.0.0.6
198.51.100.42
팁: Enter는 부분 필터를 적용합니다(관찰된 IP 선호, 사용 가능한 경우 DNS IP 사용).
이상 항목 (Enter 플로우 표시, c 지우기, Esc 뒤로)
❯ 1 고지연 플로우 (대략) flows=42
2 수다스러운 호스트 (버스트 연결) flows=28
3 TCP 신뢰성 힌트 (재전송/순서 이상) flows=16
4 TCP 리셋 (RST) flows=11
5 지원 중단된 TLS 버전 (≤ 1.1) flows=3
6 핸드셰이크 미완료 flows=0
7 DNS 실패 (NXDOMAIN/SERVFAIL) flows=0
중요한 이유
고지연 플로우 (대략)
플로우가 오래 걸리고 패킷이 많으면 지연, 혼잡 또는 재시도를 나타낼 수 있습니다.
이것은 대략적인 휴리스틱이며, 정확한 타임스탬프에 의존합니다.
타임라인: 간트 (Tab 전환, ↑/↓ 이동, Enter 패킷, Esc 뒤로)
█ 핸드셰이크 █ TLS █ 데이터 █ 종료 █ UDP
09:31:02 09:31:10 09:31:18 09:31:26
google.com (HTTPS) ● ██████████████████████████████████
chat.openai.com (HT… ● ████████████████
wikipedia.org (HTTPS) ● ██████████████████████████
DNS 10.0.0.1:53 ● ██
패턴: 3개의 연결이 동시에 열림 — 페이지 로딩 가능성
패턴: 2개의 DNS 조회가 일치하는 호스트에 대한 3개의 암호화된 연결보다 먼저 발생
세부 정보
TCP 10.0.0.6:57608 ↔ 198.51.100.42:443
발생한 일
1. google.com에 연결됨 (TCP 핸드셰이크 12.5ms 소요)
2. 암호화 협상 (TLS 1.3)
3. 89ms 동안 28.2KB 전송 (40개 패킷)
4. 주로 다운로드 (서버가 더 많은 데이터 전송)
5. 연결이 깔끔하게 종료됨 (FIN)
타임라인은 캡처의 시각적 스토리입니다. 각 연결이 언제 시작되었는지, 어떤 단계를 거쳤는지(핸드셰이크, TLS, 데이터 전송, 종료), 그리고 어떻게 겹치는지 보여줍니다.
플로우 [LIVE en0] (63.8 pps) (Enter 패킷, / 필터, t/u 토글, b 북마크, E 내보내기, o 개요) subset=domain:chat.openai.com
● 1 UDP 510 10.0.0.6:59175 ↔ 203.0.113.123:443 DL
❯● 2 TCP 32 10.0.0.6:57608 ↔ 198.51.100.42:443 DL
세부 정보
TCP 10.0.0.6:57608 ↔ 198.51.100.42:443
A→B: 14 pkts / 1386 bytes
B→A: 26 pkts / 26307 bytes
방향: download-heavy
핸드셰이크 RTT: 12.450ms
서버 사고 시간: 3.200ms
데이터 전송: 89.100ms
TLS 버전: TLS 1.2
북마크: 1
최상위:
o 개요D 도메인W 이상 항목F 플로우T 타임라인 (간트 + 산점도)h 도움말g 용어집q 종료뷰 내에서:
Enter 드릴다운 (도메인/이상 → 플로우, 플로우 → 패킷)Esc 뒤로c 활성 부분 필터 지우기? 선택한 플로우 설명x 온보딩 힌트 닫기 (개요)플로우 뷰:
↑/↓ 또는 j/k 이동/ 필터t / u TCP / UDP 토글b 플로우 북마크E 보고서 내보내기타임라인 뷰:
Tab / Shift-Tab 간트/산점도 전환↑/↓ 또는 j/k 이동PgUp/PgDn 페이지 이동Enter 패킷으로 드릴다운패킷 뷰:
f 스트림 따라가기스트림 뷰:
/ 검색n / N 다음/이전 일치 항목Tab / Shift-Tab 스트림 방향 순환↑/↓ 스크롤북마크/내보내기를 하면 babyshark는 PCAP 옆에 숨겨진 디렉토리에 파일을 씁니다:
.babyshark/case.json — 북마크.babyshark/report.md — 최신 보고서 (덮어쓰기됨).babyshark/report-YYYYMMDD-HHMMSS.md — 버전별 보고서--bpf 캡처 필터 패스스루 (라이브 모드)MIT © 2026 Vignesh Natarajan