
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)