Orca Trace(簡稱 OT)是跨平台網路封包觀測工具:
- Flutter (Dart) 負責 UI 與互動
- Rust 負責封包擷取、流量統計、mDNS 探索
- 兩者透過
flutter_rust_bridge溝通
如果你對 Dart / Rust 還不熟,建議照這個順序讀:
README.md(本文件):先知道怎麼跑、專案有哪些模組DOCS_DART_RUST_PRIMER.md:快速補齊本專案會用到的 Dart/Rust 基礎DOCS_ARCHITECTURE.md:完整資料流、模組責任、Dart-Rust 交互細節DOCS_MDNS.md:專看 mDNS 行為與探索機制DOCS_TEXT_ANALYSIS_SPEC.md:文本分類、段落上色、規則 pipeline 草案
- 全域設備儀表板(介面 IP + 活躍 IP + mDNS 資訊整合)
- 即時封包擷取(單介面 / 多介面)
- per-IP 即時流量統計(RX/TX)
- Flow Session 聚合與封包詳情檢視
- 二進位 payload 安全預覽(預設 256 bytes)與 Hex 預覽(預設收合)
- Flow Detail 支援一鍵
複製完整 payload - Flow Detail 支援單一會話錄製(開始/停止)
- 錄製清單與詳情頁(封包檢視、刪除、到期清理)
- 錄製匯出:
pcap與 outbound-onlyraw payload - 網路重放(Replay):將錄製中的 outbound payload 發送到指定 target IP/Port
- 每個封包 payload capture 上限為
64KB,超過會標示為截斷(payloadTruncated) - Insight Workspace(parent class 分類 + 結構區塊同色高亮,MVP)
- 全域監控暫停(統一控制 live monitoring / analytics / recording channel)
- 搜尋語法:
port:、ip:、host:、proto:、text:、data:(text/data僅比對可解碼文字 payload) - Orca Trace 視覺系統(macOS App Icon + UI SVG icon + 一致化主題色盤)
- 品牌主名:
Orca Trace(縮寫:OT) - 能力主軸:
Capture/Replay/Insight Insight的文本分析與規則套用草案請見:DOCS_TEXT_ANALYSIS_SPEC.md
| 層 | 技術 | 說明 |
|---|---|---|
| UI | Flutter (Dart) | 頁面、狀態、列表渲染、互動 |
| Native | Rust | libpcap 擷取、流量統計、mDNS、錄製/重放 |
| 橋接 | flutter_rust_bridge 2.11.1 | Dart/Rust 型別與 API 綁定 |
| 視覺資產 | SVG + Pillow 產圖腳本 | Orca Trace 主題 icon、macOS AppIcon 多尺寸輸出 |
- Flutter SDK
^3.10.8 - Rust stable
- macOS / Linux: libpcap
- Windows: Npcap
- macOS 封包擷取需
/dev/bpf*權限(App 啟動時會嘗試請求)
# 1) 安裝 Dart/Flutter 依賴
flutter pub get
# 2)(若有修改 Rust API)重新產生綁定
flutter_rust_bridge_codegen generate
# 3) 執行(以 macOS 為例)
flutter run -d macos# Dart 格式化與靜態分析
dart format lib
dart analyze lib
# Rust 格式化與編譯檢查
cd rust
cargo fmt
cargo check目前專案已整合:
A版 Orca Trace 主題 macOS App Icon(AppIcon.appiconset全尺寸)- Orca Trace UI SVG icon(
design/icons/orca/ui/*.svg) - 全域 UI 主題(
lib/theme/orca_theme.dart)
重新產生 macOS App Icon(含小尺寸優化):
python3 design/icons/orca/scripts/generate_macos_appicon.py說明文件:
design/icons/orca/README.md
當你修改 rust/src/api/*.rs 的公開 struct / 函式:
- 修改 Rust 程式碼
- 執行
flutter_rust_bridge_codegen generate - 確認
lib/src/rust/產生的 Dart 端 API 與型別 - 在 Dart 端接上新 API
注意:
lib/src/rust/frb_generated*.dart與rust/src/frb_generated.rs是產生檔,不要手改。
- 監控暫停狀態由 Rust 端管理(
rust/src/api/monitoring.rs),Flutter 僅做 UI 與互動。 - 暫停狀態會持久化並在 app 重啟後恢復。
MonitoringPolicyGate為 Flutter 端統一入口,所有 channel 都應先過 gate 再執行。- 目前 channel:
liveMonitoring:首頁活躍節點、連線會話、第二頁即時流量卡analyticsUploadrecording
Orca/
├── lib/
│ ├── main.dart # App 入口,初始化 Rust
│ ├── theme/orca_theme.dart # Orca Trace 色彩/字級/間距主題
│ ├── navigation/app_route_observer.dart
│ ├── pages/
│ │ ├── unified_devices_page.dart # 主頁:設備與活躍流量
│ │ ├── packet_list_page.dart # Flow 列表與搜尋
│ │ ├── flow_detail_page.dart # Flow 封包內容詳情 + 錄製入口
│ │ ├── recordings_list_page.dart # 錄製清單
│ │ └── recording_detail_page.dart # 錄製詳情(匯出/重放)
│ ├── services/identity_service.dart # mDNS 身份解析服務
│ ├── services/monitoring_pause_service.dart
│ ├── services/monitoring_policy_gate.dart
│ ├── services/recording_service.dart # 錄製狀態管理與封包寫入
│ ├── widgets/orca_svg_icon.dart # Orca Trace SVG icon 封裝元件
│ ├── widgets/live_device_dashboard.dart
│ ├── widgets/monitoring_pause_action_button.dart
│ ├── widgets/monitoring_pause_banner.dart
│ ├── models/flow_session.dart
│ └── src/rust/ # FRB 自動產生綁定
├── design/icons/orca/ # Orca Trace icon 設計資產與產圖腳本
├── rust/src/api/
│ ├── simple.rs # 共用資料結構 + 介面清單
│ ├── capture.rs # 封包擷取
│ ├── stats.rs # 流量統計
│ ├── monitoring.rs # 監控暫停策略與持久化
│ ├── recording.rs # 錄製、匯出、重放
│ └── mdns.rs # mDNS 探索
├── DOCS_DART_RUST_PRIMER.md # Dart/Rust 新手導讀
├── DOCS_ARCHITECTURE.md # 架構與資料流詳解
├── DOCS_TEXT_ANALYSIS_SPEC.md # 文本分析與規則 pipeline 草案
└── DOCS_MDNS.md # mDNS 補充說明
DOCS_DART_RUST_PRIMER.md:Dart / Rust 初學者導讀(專案導向)DOCS_ARCHITECTURE.md:完整架構、資料流、執行緒模型、擴充教學DOCS_MDNS.md:mDNS 原理、現象與對應程式碼DOCS_TEXT_ANALYSIS_SPEC.md:文本分類、段落色彩標註、規則套用與 snapshot 草案design/icons/orca/README.md:Orca Trace icon 設計規格、產圖與輸出流程
Android | iOS | macOS | Linux | Windows