
Потоково-ориентированный PCAP TUI (файлы дел, потрясающий UX). Do do do do.
Wireshark, упрощённый (в вашем терминале).
Babyshark — это TUI для работы с PCAP, который помогает ответить на вопросы:
Статус: v0.3.0 (альфа).
.pcap / .pcapng работает без Wiresharktshark (CLI Wireshark)
Обзор — это панель «начните здесь». Он суммирует захват и предлагает, что делать дальше.
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 / NDL/UL в списке потоков + download-heavy/upload-heavy/balanced в деталях (возврат к A>B/B>A, когда локальная сторона неоднозначна)Загрузите предварительно собранный бинарник:
Предварительные требования:
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 — это официальный CLI Wireshark.
# 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
Если это сработало, скорее всего, вам нужно настроить права на захват (dumpcap, группа wireshark и т.д.) в вашей ОС.
ips=0 для всегоЭто часто происходит, когда ответы DNS не видны (DoH/DoT или кеширование). Babyshark всё равно покажет Наблюдаемые IP (из потоков), используя подсказки TLS SNI / HTTP Host, если они доступны.
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 временная шкала (Гантт + Scatter)h справкаg глоссарийq выходВ представлениях:
Enter детализация (домены/странности → потоки, потоки → пакеты)Esc назадc очистить активный фильтр подмножества? объяснить выбранный потокx отклонить подсказку (Обзор)Представление потоков:
↑/↓ или j/k перемещение/ фильтрt / u показать/скрыть TCP / UDPb создать закладку для потокаE экспорт отчётаПредставление временной шкалы:
Tab / Shift-Tab переключение Гантт / Scatter↑/↓ или 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 для режима liveMIT © 2026 Vignesh Natarajan
T