
Flows-first PCAP TUI (ケースファイル、美しいUX). ドドドド。
ターミナルでWiresharkを簡単に使えます。
Babysharkは、以下の質問に答えるのに役立つPCAP TUIです。
ステータス: v0.3.0 (alpha).
.pcap / .pcapng表示はWiresharkなしで動作します。tshark(Wireshark CLI)が必要です。
概要は「ここから始める」ダッシュボードです。 キャプチャを要約し、次に何をすべきかを提案します。
tsharkからの最終ステータス/エラー行)を表示します。使用方法:
Dを押すとドメイン(ホスト名優先)にジャンプします。Wを押すとおかしいところ(厳選された検出器)にジャンプします。F(またはf)を押すとフロー(生)にジャンプします。
ドメインはトラフィックをホスト名でグループ化 するため、5タプルではなく名前から始めることができます。
使用方法:
sを押してソートモードを変更します。cを押してアクティブなサブセットフィルターをクリアします。
おかしいところは、厳選された検出器のセット で、Wiresharkの深い知識を必要とせずに「壊れている/遅いように見えるのは何か?」に答えるためのものです。
使用方法:
1–9を押してジャンプ選択も可能)し、Enterを押します。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のcapability、またはwiresharkグループへの所属)が必要な場合があります。babysharkが権限エラーを出力した場合は、出力されるガイダンスに従ってください。
babysharkを更新したが、コマンドが古い動作のままcargo installでインストールした場合は、プル後に再インストールが必要です:
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 Overview flows:114 packets:4227 tcp:on udp:on q=—
Overview (D domains, W weird, F flows)
In plain English
Packets: 4227 Flows: 114 Top talker: 10.0.0.6 (2711.9KB) Top talker (pkts): 10.0.0.6 (4046 pkts)
Live: 88s pps~14.6 dropped~0 | last: Capturing on 'Wi‑Fi: en0'
pps: ▁▁▂▂▃▄▅▆▆▇▆▅▄▃▂▂▁ (max 1372/bucket)
Top flow (bytes): UDP 10.0.0.6:57315 ↔ 203.0.113.123:443 (1359.3KB)
Top flow (pkts): UDP 10.0.0.6:57315 ↔ 203.0.113.123:443 (1284 pkts)
What should I click?
• Domains (human view) (press D)
• Weird stuff (troubleshoot) (press W)
• Flows (raw) (press F)
• Timeline (Gantt + Scatter) (press T)
↳ Detected: High-latency flows (rough) (29 flows)
Domains (Enter show flows, s sort (conn/bytes/fail), c clear, Esc back)
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
Domain details
chat.openai.com
queries=5 responses=3 failures=0
Observed IPs (from flows):
10.0.0.6
198.51.100.42
Tip: Enter applies a subset filter (prefers observed IPs; DNS IPs if available).
Weird stuff (Enter show flows, c clear, Esc back)
❯ 1 High-latency flows (rough) flows=42
2 Chatty hosts (burst connections) flows=28
3 TCP reliability hints (retransmits / out-of-order) flows=16
4 TCP resets (RST) flows=11
5 Deprecated TLS versions (≤ 1.1) flows=3
6 Handshake not completed flows=0
7 DNS failures (NXDOMAIN/SERVFAIL) flows=0
Why it matters
High-latency flows (rough)
If a flow takes a long time and has lots of packets, it can indicate latency,
congestion, or retries. This is a rough heuristic and depends on correct timestamps.
Timeline: Gantt (Tab switch, ↑/↓ move, Enter packets, Esc back)
█ handshake █ TLS █ data █ close █ 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 ● ██
Pattern: 3 connections opened simultaneously — likely a page load
Pattern: 2 DNS lookups preceded 3 encrypted connections to matching hosts
Details
TCP 10.0.0.6:57608 ↔ 198.51.100.42:443
What happened
1. Connected to google.com (TCP handshake took 12.5ms)
2. Negotiated encryption (TLS 1.3)
3. Transferred 28.2KB in 89ms (40 packets)
4. Mostly downloading (server sent more data)
5. Connection closed cleanly (FIN)
タイムラインはキャプチャの視覚的なストーリーです。 各接続がいつ開始され、どのフェーズ(ハンドシェイク、TLS、データ転送、クローズ)を経て、どのように重なっているかを示します。
Flows [LIVE en0] (63.8 pps) (Enter packets, / filter, t/u toggles, b bookmark, E export, o overview) 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
Details
TCP 10.0.0.6:57608 ↔ 198.51.100.42:443
A→B: 14 pkts / 1386 bytes
B→A: 26 pkts / 26307 bytes
Direction: download-heavy
Handshake RTT: 12.450ms
Server think: 3.200ms
Data transfer: 89.100ms
TLS version: TLS 1.2
bookmarks: 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