From 9d6fa7cba3b8ff43aa66b703a72004032d1e64bd Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 8 Oct 2026 11:54:38 +0900 Subject: [PATCH] Fix swapped client/server from merged TCP flags; offline pcap one file at a time; local capture note on Interface check; Windows capture commands in README Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01XEUxFQp8ivofZLm1o6KiXm --- CHANGELOG.md | 26 ++++ README.md | 20 ++- docs/README.ar.md | 20 ++- docs/README.bn.md | 20 ++- docs/README.es.md | 21 ++- docs/README.fr.md | 23 ++- docs/README.hi.md | 20 ++- docs/README.id.md | 21 ++- docs/README.ja.md | 11 +- docs/README.ko.md | 11 +- docs/README.pt.md | 23 ++- docs/README.ru.md | 19 ++- docs/README.ur.md | 20 ++- docs/README.zh.md | 11 +- docs/images/sandbox.png | Bin 111577 -> 112282 bytes internal/api/sandbox.go | 13 ++ internal/api/server.go | 1 + internal/capture/capture.go | 30 +++- internal/enrich/role_test.go | 31 ++++ internal/enrich/services.go | 11 +- internal/flow/flow.go | 6 + internal/sandbox/flows.go | 20 ++- internal/sandbox/sandbox.go | 234 +++++++++++++++++++++---------- internal/sandbox/sandbox_test.go | 57 ++++++++ internal/web/static/app.css | 1 + internal/web/static/app.js | 32 ++++- internal/web/static/i18n/ar.json | 5 +- internal/web/static/i18n/bn.json | 5 +- internal/web/static/i18n/en.json | 5 +- internal/web/static/i18n/es.json | 5 +- internal/web/static/i18n/fr.json | 5 +- internal/web/static/i18n/hi.json | 5 +- internal/web/static/i18n/id.json | 5 +- internal/web/static/i18n/ja.json | 5 +- internal/web/static/i18n/ko.json | 5 +- internal/web/static/i18n/pt.json | 5 +- internal/web/static/i18n/ru.json | 5 +- internal/web/static/i18n/ur.json | 5 +- internal/web/static/i18n/zh.json | 5 +- 39 files changed, 595 insertions(+), 172 deletions(-) create mode 100644 internal/enrich/role_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a6b3ec..62224e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,32 @@ The release notes on GitHub are taken from this file: the section whose heading is the version number. +## 1.5.2 + +Fixes +- Client and server were swapped for half of many TCP connections: exported + records (NetFlow, IPFIX, local capture, pcap files) carry the flags of all + their packets together, so a client's SYN followed by ACKs looked like a + server's SYN+ACK and its upload was counted the wrong way round. The flags + now decide only for single packets (sFlow samples, lone SYNs); local + capture and pcap files use the first packet of each connection; other + records go by the ports. Data stored before stays as it is; pcap files are + right once imported again. + +Offline pcap analysis +- One file at a time, each in a database of its own: **Analyse** on a + file's row shows that file on every page; the bar at the top switches to + another. Deleting a file no longer re-imports the others. + +Interfaces +- Interface check explains that local capture has nothing to compare (no + device interfaces or counters), and the interface picker is hidden when + there are no interfaces. + +Docs +- README: the Windows commands for local capture (`traffic66.exe interfaces`, + `traffic66.exe -capture Wi-Fi`). + ## 1.5.1 - The web UI's scripts and styles are no longer kept by the browser across diff --git a/README.md b/README.md index 320e04b..3ba9ce1 100644 --- a/README.md +++ b/README.md @@ -324,8 +324,10 @@ sampling. **Offline pcap analysis** shows packet captures (pcap, pcapng) with the same pages, apart from the live data: `traffic66 a.pcap b.pcapng` starts on 127.0.0.1 and opens the browser (up to 3 files, 3 GB; Ctrl+C deletes the -imported data), or upload up to 3 files of 50 MB on that page. It works on -flows, not packet contents. +imported data), or upload up to 3 files of 50 MB on that page. One file is +analysed at a time, each in a database of its own: **Analyse** on a file's +row shows it on every page, and the bar at the top switches to another. It +works on flows, not packet contents. ![Offline analysis: capture files with their packets, flows and time](docs/images/sandbox.png) @@ -340,9 +342,17 @@ in a browser, q quit; `-lang` picks the language. **Local capture** builds flows from a local interface, best a port connected to a switch's mirror port: `traffic66 interfaces` lists them, -`-capture eth1` (or a Windows name or number) captures. Linux needs root or -`setcap cap_net_raw,cap_net_admin+ep`, macOS root, Windows -[Npcap](https://npcap.com). Captured flows come from the device `127.0.0.1`. +`-capture eth1` captures. On Windows: + +``` +traffic66.exe interfaces # list the network cards: name, number, address +traffic66.exe -capture Wi-Fi # capture on the wireless card (or by number: -capture 2) +``` + +Linux needs root or `setcap cap_net_raw,cap_net_admin+ep`, macOS root, +Windows [Npcap](https://npcap.com). Captured flows come from the device +`127.0.0.1`. Local capture has no device interfaces or counters, so +**Interface check** has nothing to compare for it. ## 10. Options and data diff --git a/docs/README.ar.md b/docs/README.ar.md index 816259a..63aaed9 100644 --- a/docs/README.ar.md +++ b/docs/README.ar.md @@ -343,7 +343,9 @@ NetFlow/IPFIX بقدر تأخر الأجهزة في التصدير (دقيقتا يعرض **تحليل pcap دون اتصال** ملفات التقاط الحزم (pcap وpcapng) بالصفحات نفسها، بمعزل عن البيانات الحية: يبدأ `traffic66 a.pcap b.pcapng` على 127.0.0.1 ويفتح المتصفح (حتى 3 ملفات، 3 GB؛ يحذف Ctrl+C البيانات المستوردة)، أو ارفع حتى 3 -ملفات بحجم 50 MB في تلك الصفحة. يعمل على التدفقات، لا على محتوى الحزم. +ملفات بحجم 50 MB في تلك الصفحة. يُحلَّل ملف واحد في كل مرة، ولكل ملف قاعدة +بيانات خاصة به: يعرض **تحليل** في صف الملف بياناته في كل الصفحات، ويبدّل +الشريط في الأعلى إلى ملف آخر. يعمل على التدفقات، لا على محتوى الحزم. ![التحليل دون اتصال: ملفات الالتقاط مع حزمها وتدفقاتها ووقتها](images/sandbox.png) @@ -357,10 +359,18 @@ NetFlow/IPFIX بقدر تأخر الأجهزة في التصدير (دقيقتا ![الواجهة الطرفية: محادثات أعلى 66](images/tui-topn.png) **الالتقاط المحلي** يبني التدفقات من واجهة محلية، ويُفضَّل منفذ موصول بمنفذ -المرآة في مبدّل: يسردها `traffic66 interfaces`، ويلتقط `-capture eth1` (أو اسم -أو رقم في Windows). يحتاج Linux إلى root أو -`setcap cap_net_raw,cap_net_admin+ep`، وmacOS إلى root، وWindows إلى -[Npcap](https://npcap.com). تأتي التدفقات الملتقطة من الجهاز `127.0.0.1`. +المرآة في مبدّل: يسردها `traffic66 interfaces`، ويلتقط `-capture eth1`. على +Windows: + +``` +traffic66.exe interfaces # list the network cards: name, number, address +traffic66.exe -capture Wi-Fi # capture on the wireless card (or by number: -capture 2) +``` + +يحتاج Linux إلى root أو `setcap cap_net_raw,cap_net_admin+ep`، وmacOS إلى +root، وWindows إلى [Npcap](https://npcap.com). تأتي التدفقات الملتقطة من +الجهاز `127.0.0.1`. لا واجهات ولا عدّادات جهاز للالتقاط المحلي، لذا ليس لدى +**مطابقة الواجهات** ما تقارنه فيه. diff --git a/docs/README.bn.md b/docs/README.bn.md index 1290751..148b2e7 100644 --- a/docs/README.bn.md +++ b/docs/README.bn.md @@ -351,8 +351,10 @@ export করে ততটা (সর্বোচ্চ 2 মিনিট)। 6 **অফলাইন pcap বিশ্লেষণ** প্যাকেট ক্যাপচার (pcap, pcapng) একই পেজে দেখায়, লাইভ ডেটা থেকে আলাদা রেখে: `traffic66 a.pcap b.pcapng` 127.0.0.1-এ চালু হয় এবং browser খোলে (সর্বোচ্চ 3টি ফাইল, 3 GB; Ctrl+C ইমপোর্ট করা ডেটা মুছে দেয়), -অথবা ওই পেজে 50 MB পর্যন্ত 3টি ফাইল আপলোড করুন। এটি flow নিয়ে কাজ করে, -প্যাকেটের বিষয়বস্তু নিয়ে নয়। +অথবা ওই পেজে 50 MB পর্যন্ত 3টি ফাইল আপলোড করুন। একবারে একটি ফাইল বিশ্লেষণ +করা হয়, প্রতিটি নিজস্ব আলাদা ডেটাবেসে: কোনো ফাইলের সারিতে **বিশ্লেষণ** +সেটিকে প্রতিটি পেজে দেখায়, আর ওপরের বার অন্য ফাইলে বদলে দেয়। এটি flow নিয়ে +কাজ করে, প্যাকেটের বিষয়বস্তু নিয়ে নয়। ![অফলাইন বিশ্লেষণ: ক্যাপচার ফাইল, তাদের প্যাকেট, ফ্লো ও সময়](images/sandbox.png) @@ -367,9 +369,17 @@ browser-এ খুলুন, q বেরিয়ে যান; `-lang` ভা **Local capture** একটি local interface থেকে flow তৈরি করে, সবচেয়ে ভালো হয় switch-এর mirror port-এ যুক্ত একটি port: `traffic66 interfaces` সেগুলোর তালিকা -দেয়, `-capture eth1` (অথবা Windows-এর নাম বা নম্বর) capture করে। Linux-এ root -বা `setcap cap_net_raw,cap_net_admin+ep` লাগে, macOS-এ root, Windows-এ -[Npcap](https://npcap.com)। capture করা flow ডিভাইস `127.0.0.1` থেকে আসে। +দেয়, `-capture eth1` capture করে। Windows-এ: + +``` +traffic66.exe interfaces # list the network cards: name, number, address +traffic66.exe -capture Wi-Fi # capture on the wireless card (or by number: -capture 2) +``` + +Linux-এ root বা `setcap cap_net_raw,cap_net_admin+ep` লাগে, macOS-এ root, +Windows-এ [Npcap](https://npcap.com)। capture করা flow ডিভাইস `127.0.0.1` +থেকে আসে। Local capture-এ ডিভাইসের interface বা counter নেই, তাই +**ইন্টারফেস মিলানো**-তে এর জন্য তুলনা করার কিছু নেই। diff --git a/docs/README.es.md b/docs/README.es.md index ca00f54..be1e236 100644 --- a/docs/README.es.md +++ b/docs/README.es.md @@ -360,7 +360,10 @@ los escaneos muy pequeños pueden ocultarse tras el muestreo. las mismas páginas, aparte de los datos en vivo: `traffic66 a.pcap b.pcapng` arranca en 127.0.0.1 y abre el navegador (hasta 3 archivos, 3 GB; Ctrl+C borra los datos importados), o suba en esa página hasta 3 archivos de 50 MB. -Trabaja con flujos, no con el contenido de los paquetes. +Se analiza un archivo a la vez, cada uno en su propia base de datos: +**Analizar** en la fila de un archivo lo muestra en todas las páginas, y la +barra superior cambia a otro. Trabaja con flujos, no con el contenido de los +paquetes. ![Análisis offline: archivos de captura con sus paquetes, flujos y tiempo](images/sandbox.png) @@ -375,10 +378,18 @@ tiempo, w abrir en un navegador, q salir; `-lang` elige el idioma. **Captura local** construye flujos desde una interfaz local, idealmente un puerto conectado al puerto espejo de un switch: `traffic66 interfaces` las -lista y `-capture eth1` (o un nombre o número de Windows) captura. Linux -necesita root o `setcap cap_net_raw,cap_net_admin+ep`, macOS root, Windows -[Npcap](https://npcap.com). Los flujos capturados provienen del equipo -`127.0.0.1`. +lista y `-capture eth1` captura. En Windows: + +``` +traffic66.exe interfaces # list the network cards: name, number, address +traffic66.exe -capture Wi-Fi # capture on the wireless card (or by number: -capture 2) +``` + +Linux necesita root o `setcap cap_net_raw,cap_net_admin+ep`, macOS root, +Windows [Npcap](https://npcap.com). Los flujos capturados provienen del +equipo `127.0.0.1`. La captura local no tiene interfaces ni contadores del +equipo, así que **Verificación de interfaces** no tiene nada que comparar +para ella. diff --git a/docs/README.fr.md b/docs/README.fr.md index f5a25ac..b59bcdd 100644 --- a/docs/README.fr.md +++ b/docs/README.fr.md @@ -369,8 +369,11 @@ l'échantillonnage. pcapng) avec les mêmes pages, à part des données en direct : `traffic66 a.pcap b.pcapng` démarre sur 127.0.0.1 et ouvre le navigateur (jusqu'à 3 fichiers, 3 Go ; Ctrl+C supprime les données importées), ou -importez sur cette page jusqu'à 3 fichiers de 50 Mo. L'analyse porte sur -les flux, pas sur le contenu des paquets. +importez sur cette page jusqu'à 3 fichiers de 50 Mo. Un seul fichier est +analysé à la fois, chacun dans sa propre base de données : **Analyser** sur +la ligne d'un fichier l'affiche sur toutes les pages, et la barre du haut +passe à un autre. L'analyse porte sur les flux, pas sur le contenu des +paquets. ![Analyse hors ligne : fichiers de capture avec leurs paquets, flux et période](images/sandbox.png) @@ -386,10 +389,18 @@ la langue. **Capture locale** construit des flux à partir d'une interface locale, idéalement un port relié au port miroir d'un switch : `traffic66 interfaces` -les liste, `-capture eth1` (ou un nom ou numéro Windows) capture. Linux -demande root ou `setcap cap_net_raw,cap_net_admin+ep`, macOS root, Windows -[Npcap](https://npcap.com). Les flux capturés proviennent de l'équipement -`127.0.0.1`. +les liste, `-capture eth1` capture. Sous Windows : + +``` +traffic66.exe interfaces # list the network cards: name, number, address +traffic66.exe -capture Wi-Fi # capture on the wireless card (or by number: -capture 2) +``` + +Linux demande root ou `setcap cap_net_raw,cap_net_admin+ep`, macOS root, +Windows [Npcap](https://npcap.com). Les flux capturés proviennent de +l'équipement `127.0.0.1`. La capture locale n'a ni interfaces ni compteurs +d'équipement, le **Contrôle des interfaces** n'a donc rien à comparer pour +elle. diff --git a/docs/README.hi.md b/docs/README.hi.md index 4e2f361..231c07e 100644 --- a/docs/README.hi.md +++ b/docs/README.hi.md @@ -352,8 +352,10 @@ NetFlow/IPFIX के साथ उतनी देर तक जितनी द **ऑफ़लाइन pcap विश्लेषण** पैकेट कैप्चर (pcap, pcapng) को उन्हीं पेजों पर दिखाता है, लाइव डेटा से अलग: `traffic66 a.pcap b.pcapng` 127.0.0.1 पर शुरू होकर browser खोलता है (अधिकतम 3 फ़ाइलें, 3 GB; Ctrl+C आयात किया डेटा मिटा देता -है), या उस पेज पर 50 MB तक की अधिकतम 3 फ़ाइलें अपलोड करें। यह flows पर काम -करता है, पैकेट की सामग्री पर नहीं। +है), या उस पेज पर 50 MB तक की अधिकतम 3 फ़ाइलें अपलोड करें। एक समय में एक +फ़ाइल का विश्लेषण होता है, हर फ़ाइल अपने अलग database में: किसी फ़ाइल की +पंक्ति पर **विश्लेषण करें** उसे हर पेज पर दिखाता है, और ऊपर की पट्टी दूसरी +फ़ाइल पर बदल देती है। यह flows पर काम करता है, पैकेट की सामग्री पर नहीं। ![ऑफ़लाइन विश्लेषण: कैप्चर फ़ाइलें, उनके पैकेट, फ़्लो और समय](images/sandbox.png) @@ -368,9 +370,17 @@ browser में खोलें, q बाहर निकलें; `-lang` **Local capture** किसी local interface से flows बनाता है, सबसे अच्छा किसी switch के mirror port से जुड़ा port: `traffic66 interfaces` उनकी सूची देता है, -`-capture eth1` (या Windows का नाम या नंबर) capture करता है। Linux को root या -`setcap cap_net_raw,cap_net_admin+ep` चाहिए, macOS को root, Windows को -[Npcap](https://npcap.com)। Capture किए गए flows डिवाइस `127.0.0.1` से आते हैं। +`-capture eth1` capture करता है। Windows पर: + +``` +traffic66.exe interfaces # list the network cards: name, number, address +traffic66.exe -capture Wi-Fi # capture on the wireless card (or by number: -capture 2) +``` + +Linux को root या `setcap cap_net_raw,cap_net_admin+ep` चाहिए, macOS को root, +Windows को [Npcap](https://npcap.com)। Capture किए गए flows डिवाइस `127.0.0.1` +से आते हैं। Local capture में डिवाइस के interfaces या counters नहीं होते, +इसलिए **इंटरफ़ेस मिलान** के पास इसके लिए तुलना करने को कुछ नहीं है। diff --git a/docs/README.id.md b/docs/README.id.md index 65c11fb..d48c996 100644 --- a/docs/README.id.md +++ b/docs/README.id.md @@ -357,7 +357,10 @@ kecil bisa tersembunyi di balik sampling. halaman yang sama, terpisah dari data langsung: `traffic66 a.pcap b.pcapng` berjalan di 127.0.0.1 dan membuka browser (maksimal 3 file, 3 GB; Ctrl+C menghapus data yang diimpor), atau unggah maksimal 3 file berukuran 50 MB di -halaman itu. Analisis bekerja pada flow, bukan isi paket. +halaman itu. Satu file dianalisis pada satu waktu, masing-masing dalam +database tersendiri: **Analisis** pada baris sebuah file menampilkannya di +semua halaman, dan bilah di bagian atas beralih ke file lain. Analisis +bekerja pada flow, bukan isi paket. ![Analisis offline: file tangkapan beserta paket, flow, dan waktunya](images/sandbox.png) @@ -372,10 +375,18 @@ rentang waktu, w buka di browser, q keluar; `-lang` memilih bahasa. **Capture lokal** membuat flow dari interface lokal, paling baik port yang terhubung ke port mirror sebuah switch: `traffic66 interfaces` menampilkan -daftarnya, `-capture eth1` (atau nama atau nomor di Windows) melakukan -capture. Linux butuh root atau `setcap cap_net_raw,cap_net_admin+ep`, macOS -butuh root, Windows butuh [Npcap](https://npcap.com). Flow hasil capture -berasal dari perangkat `127.0.0.1`. +daftarnya, `-capture eth1` melakukan capture. Di Windows: + +``` +traffic66.exe interfaces # list the network cards: name, number, address +traffic66.exe -capture Wi-Fi # capture on the wireless card (or by number: -capture 2) +``` + +Linux butuh root atau `setcap cap_net_raw,cap_net_admin+ep`, macOS butuh +root, Windows butuh [Npcap](https://npcap.com). Flow hasil capture berasal +dari perangkat `127.0.0.1`. Capture lokal tidak punya interface atau counter +perangkat, jadi **Pencocokan antarmuka** tidak punya apa pun untuk +dibandingkan. diff --git a/docs/README.ja.md b/docs/README.ja.md index dc4d5e9..60b764e 100644 --- a/docs/README.ja.md +++ b/docs/README.ja.md @@ -272,7 +272,7 @@ snmp 192.0.2.9 s3cret 10.99.0.9:161 # other management address ## 9. オフライン pcap、ターミナル UI、ローカルキャプチャ -**オフライン pcap 分析** は、パケットキャプチャ(pcap、pcapng)をライブデータとは分けて、同じページで表示します。`traffic66 a.pcap b.pcapng` は 127.0.0.1 で起動してブラウザーを開きます(最大 3 ファイル、3 GB。Ctrl+C で取り込んだデータを削除)。そのページで 50 MB までのファイルを最大 3 つアップロードすることもできます。扱うのはフローで、パケットの中身ではありません。 +**オフライン pcap 分析** は、パケットキャプチャ(pcap、pcapng)をライブデータとは分けて、同じページで表示します。`traffic66 a.pcap b.pcapng` は 127.0.0.1 で起動してブラウザーを開きます(最大 3 ファイル、3 GB。Ctrl+C で取り込んだデータを削除)。そのページで 50 MB までのファイルを最大 3 つアップロードすることもできます。一度に分析するのは 1 ファイルで、それぞれ専用のデータベースに入ります。ファイルの行の **分析** でそのファイルが全ページに表示され、上部のバーで別のファイルに切り替えられます。扱うのはフローで、パケットの中身ではありません。 ![オフライン分析:キャプチャファイルとパケット数、フロー数、時間](images/sandbox.png) @@ -282,7 +282,14 @@ snmp 192.0.2.9 s3cret 10.99.0.9:161 # other management address ![ターミナル UI:上位 66 の会話](images/tui-topn.png) -**ローカルキャプチャ** はローカルのインターフェースからフローを作ります。スイッチのミラーポートにつないだポートが最適です。`traffic66 interfaces` で一覧を表示し、`-capture eth1`(または Windows の名前か番号)でキャプチャします。Linux では root か `setcap cap_net_raw,cap_net_admin+ep`、macOS では root、Windows では [Npcap](https://npcap.com) が必要です。キャプチャしたフローは機器 `127.0.0.1` からのものとして表示されます。 +**ローカルキャプチャ** はローカルのインターフェースからフローを作ります。スイッチのミラーポートにつないだポートが最適です。`traffic66 interfaces` で一覧を表示し、`-capture eth1` でキャプチャします。Windows では: + +``` +traffic66.exe interfaces # list the network cards: name, number, address +traffic66.exe -capture Wi-Fi # capture on the wireless card (or by number: -capture 2) +``` + +Linux では root か `setcap cap_net_raw,cap_net_admin+ep`、macOS では root、Windows では [Npcap](https://npcap.com) が必要です。キャプチャしたフローは機器 `127.0.0.1` からのものとして表示されます。ローカルキャプチャには機器のインターフェースもカウンターもないため、**インターフェース照合** で比較する対象はありません。 diff --git a/docs/README.ko.md b/docs/README.ko.md index 244fdfb..3bc3223 100644 --- a/docs/README.ko.md +++ b/docs/README.ko.md @@ -272,7 +272,7 @@ snmp 192.0.2.9 s3cret 10.99.0.9:161 # other management address ## 9. 오프라인 pcap, 터미널 UI, 로컬 캡처 -**오프라인 pcap 분석**은 패킷 캡처(pcap, pcapng)를 실시간 데이터와 따로, 같은 페이지로 보여 줍니다. `traffic66 a.pcap b.pcapng`는 127.0.0.1에서 시작해 브라우저를 엽니다(최대 3개 파일, 3 GB. Ctrl+C로 가져온 데이터를 삭제). 또는 그 페이지에서 50 MB까지의 파일을 최대 3개 업로드할 수 있습니다. 다루는 것은 플로이며, 패킷 내용이 아닙니다. +**오프라인 pcap 분석**은 패킷 캡처(pcap, pcapng)를 실시간 데이터와 따로, 같은 페이지로 보여 줍니다. `traffic66 a.pcap b.pcapng`는 127.0.0.1에서 시작해 브라우저를 엽니다(최대 3개 파일, 3 GB. Ctrl+C로 가져온 데이터를 삭제). 또는 그 페이지에서 50 MB까지의 파일을 최대 3개 업로드할 수 있습니다. 한 번에 한 파일씩, 파일마다 별도의 데이터베이스에서 분석합니다. 파일 행의 **분석**을 누르면 모든 페이지에 그 파일이 표시되고, 상단 바에서 다른 파일로 전환합니다. 다루는 것은 플로이며, 패킷 내용이 아닙니다. ![오프라인 분석: 캡처 파일과 패킷, 플로, 시간](images/sandbox.png) @@ -282,7 +282,14 @@ snmp 192.0.2.9 s3cret 10.99.0.9:161 # other management address ![터미널 UI: Top 66 대화](images/tui-topn.png) -**로컬 캡처**는 로컬 인터페이스에서 플로를 만듭니다. 스위치의 미러 포트에 연결한 포트가 가장 좋습니다. `traffic66 interfaces`로 목록을 보고, `-capture eth1`(또는 Windows의 이름이나 번호)로 캡처합니다. Linux는 root 또는 `setcap cap_net_raw,cap_net_admin+ep`, macOS는 root, Windows는 [Npcap](https://npcap.com)이 필요합니다. 캡처한 플로는 장비 `127.0.0.1`에서 온 것으로 표시됩니다. +**로컬 캡처**는 로컬 인터페이스에서 플로를 만듭니다. 스위치의 미러 포트에 연결한 포트가 가장 좋습니다. `traffic66 interfaces`로 목록을 보고, `-capture eth1`로 캡처합니다. Windows에서는: + +``` +traffic66.exe interfaces # list the network cards: name, number, address +traffic66.exe -capture Wi-Fi # capture on the wireless card (or by number: -capture 2) +``` + +Linux는 root 또는 `setcap cap_net_raw,cap_net_admin+ep`, macOS는 root, Windows는 [Npcap](https://npcap.com)이 필요합니다. 캡처한 플로는 장비 `127.0.0.1`에서 온 것으로 표시됩니다. 로컬 캡처에는 장비 인터페이스나 카운터가 없으므로 **인터페이스 대조**에서 비교할 것이 없습니다. diff --git a/docs/README.pt.md b/docs/README.pt.md index 8097a2b..8aa5bf1 100644 --- a/docs/README.pt.md +++ b/docs/README.pt.md @@ -357,8 +357,11 @@ muito pequenas podem se esconder atrás da amostragem. **Análise offline de pcap** mostra capturas de pacotes (pcap, pcapng) com as mesmas páginas, separadas dos dados ao vivo: `traffic66 a.pcap b.pcapng` inicia em 127.0.0.1 e abre o navegador (até 3 arquivos, 3 GB; Ctrl+C apaga -os dados importados), ou envie até 3 arquivos de 50 MB nessa página. Ela -trabalha com fluxos, não com o conteúdo dos pacotes. +os dados importados), ou envie até 3 arquivos de 50 MB nessa página. Um +arquivo é analisado por vez, cada um em seu próprio banco de dados: +**Analisar** na linha de um arquivo o mostra em todas as páginas, e a barra +no topo troca para outro. Ela trabalha com fluxos, não com o conteúdo dos +pacotes. ![Análise offline: arquivos de captura com pacotes, fluxos e período](images/sandbox.png) @@ -373,10 +376,18 @@ tempo, w abrir no navegador, q sair; `-lang` escolhe o idioma. **Captura local** gera fluxos a partir de uma interface local, de preferência uma porta ligada à porta espelho de um switch: -`traffic66 interfaces` as lista, `-capture eth1` (ou um nome ou número do -Windows) captura. O Linux precisa de root ou -`setcap cap_net_raw,cap_net_admin+ep`, o macOS de root, o Windows do -[Npcap](https://npcap.com). Os fluxos capturados vêm do equipamento `127.0.0.1`. +`traffic66 interfaces` as lista, `-capture eth1` captura. No Windows: + +``` +traffic66.exe interfaces # list the network cards: name, number, address +traffic66.exe -capture Wi-Fi # capture on the wireless card (or by number: -capture 2) +``` + +O Linux precisa de root ou `setcap cap_net_raw,cap_net_admin+ep`, o macOS de +root, o Windows do [Npcap](https://npcap.com). Os fluxos capturados vêm do +equipamento `127.0.0.1`. A captura local não tem interfaces nem contadores +do equipamento, então a **Conferência de interfaces** não tem nada a +comparar para ela. diff --git a/docs/README.ru.md b/docs/README.ru.md index 8d611da..195c9cb 100644 --- a/docs/README.ru.md +++ b/docs/README.ru.md @@ -359,7 +359,9 @@ Geolocation by DB-IP", [db-ip.com](https://db-ip.com)); **Настройки** страницах, отдельно от живых данных: `traffic66 a.pcap b.pcapng` запускается на 127.0.0.1 и открывает браузер (до 3 файлов, 3 ГБ; Ctrl+C удаляет импортированные данные), или загрузите на этой странице до 3 файлов по -50 МБ. Анализируются потоки, а не содержимое пакетов. +50 МБ. Файлы анализируются по одному, у каждого своя база данных: кнопка +**Анализ** в строке файла показывает его на всех страницах, а панель вверху +переключает на другой. Анализируются потоки, а не содержимое пакетов. ![Офлайн-анализ: файлы захвата с пакетами, потоками и временем](images/sandbox.png) @@ -374,10 +376,17 @@ t период, w открыть в браузере, q выход; `-lang` вы **Локальный захват** строит потоки с локального интерфейса, лучше всего с порта, подключённого к зеркальному порту коммутатора: `traffic66 interfaces` -выводит их список, `-capture eth1` (или имя либо номер в Windows) -захватывает. В Linux нужны root или `setcap cap_net_raw,cap_net_admin+ep`, -в macOS — root, в Windows — [Npcap](https://npcap.com). Захваченные потоки -приходят от устройства `127.0.0.1`. +выводит их список, `-capture eth1` захватывает. В Windows: + +``` +traffic66.exe interfaces # list the network cards: name, number, address +traffic66.exe -capture Wi-Fi # capture on the wireless card (or by number: -capture 2) +``` + +В Linux нужны root или `setcap cap_net_raw,cap_net_admin+ep`, в macOS — root, +в Windows — [Npcap](https://npcap.com). Захваченные потоки приходят от +устройства `127.0.0.1`. У локального захвата нет интерфейсов и счётчиков +устройства, поэтому в **Сверке интерфейсов** для него нечего сравнивать. diff --git a/docs/README.ur.md b/docs/README.ur.md index b9c3c62..dbf71bd 100644 --- a/docs/README.ur.md +++ b/docs/README.ur.md @@ -354,8 +354,10 @@ Threat lists متن کی فائلیں ہیں، ہر لائن میں ایک addre **آف لائن pcap تجزیہ** پیکٹ کیپچر (pcap، pcapng) کو انہی صفحات پر دکھاتا ہے، لائیو ڈیٹا سے الگ: `traffic66 a.pcap b.pcapng` 127.0.0.1 پر شروع ہوتا ہے اور browser کھولتا ہے (زیادہ سے زیادہ 3 فائلیں، 3 GB؛ Ctrl+C امپورٹ شدہ ڈیٹا حذف کر دیتا -ہے)، یا اسی صفحے پر 50 MB تک کی 3 فائلیں اپ لوڈ کریں۔ یہ flows پر کام کرتا ہے، -پیکٹ کے مواد پر نہیں۔ +ہے)، یا اسی صفحے پر 50 MB تک کی 3 فائلیں اپ لوڈ کریں۔ ایک وقت میں ایک فائل کا +تجزیہ ہوتا ہے، ہر فائل اپنے الگ ڈیٹابیس میں: کسی فائل کی قطار پر +**تجزیہ کریں** اسے ہر صفحے پر دکھاتا ہے، اور اوپر کی پٹی دوسری فائل پر بدل دیتی +ہے۔ یہ flows پر کام کرتا ہے، پیکٹ کے مواد پر نہیں۔ ![آف لائن تجزیہ: کیپچر فائلیں، ان کے پیکٹ، فلو اور وقت](images/sandbox.png) @@ -370,9 +372,17 @@ browser میں کھولیں، q باہر نکلیں؛ `-lang` زبان چنتا **Local capture** ایک local interface سے flows بناتا ہے، بہترین ہے کہ وہ کسی switch کے mirror port سے جڑا port ہو: `traffic66 interfaces` ان کی فہرست دیتا -ہے، `-capture eth1` (یا Windows کا نام یا نمبر) capture کرتا ہے۔ Linux کو root یا -`setcap cap_net_raw,cap_net_admin+ep` چاہیے، macOS کو root، Windows کو -[Npcap](https://npcap.com)۔ capture شدہ flows ڈیوائس `127.0.0.1` سے آتے ہیں۔ +ہے، `-capture eth1` capture کرتا ہے۔ Windows پر: + +``` +traffic66.exe interfaces # list the network cards: name, number, address +traffic66.exe -capture Wi-Fi # capture on the wireless card (or by number: -capture 2) +``` + +Linux کو root یا `setcap cap_net_raw,cap_net_admin+ep` چاہیے، macOS کو root، +Windows کو [Npcap](https://npcap.com)۔ capture شدہ flows ڈیوائس `127.0.0.1` سے +آتے ہیں۔ Local capture میں ڈیوائس کے interfaces یا counters نہیں ہوتے، اس لیے +**انٹرفیس جانچ** کے پاس اس کے لیے موازنہ کرنے کو کچھ نہیں ہے۔ diff --git a/docs/README.zh.md b/docs/README.zh.md index 45e78a0..4502d89 100644 --- a/docs/README.zh.md +++ b/docs/README.zh.md @@ -272,7 +272,7 @@ snmp 192.0.2.9 s3cret 10.99.0.9:161 # other management address ## 9. 离线 pcap、终端界面、本地抓包 -**离线 pcap 分析** 用相同的页面查看抓包文件(pcap、pcapng),与实时数据分开:`traffic66 a.pcap b.pcapng` 在 127.0.0.1 上启动并打开浏览器(最多 3 个文件,3 GB;按 Ctrl+C 删除导入的数据),也可以在该页面上传最多 3 个 50 MB 的文件。它分析的是流,而不是包内容。 +**离线 pcap 分析** 用相同的页面查看抓包文件(pcap、pcapng),与实时数据分开:`traffic66 a.pcap b.pcapng` 在 127.0.0.1 上启动并打开浏览器(最多 3 个文件,3 GB;按 Ctrl+C 删除导入的数据),也可以在该页面上传最多 3 个 50 MB 的文件。一次分析一个文件,每个文件有自己独立的数据库:在文件所在行点 **分析**,所有页面都显示该文件,顶部的栏可切换到另一个文件。它分析的是流,而不是包内容。 ![离线分析:抓包文件及其包数、流数和时间](images/sandbox.png) @@ -282,7 +282,14 @@ snmp 192.0.2.9 s3cret 10.99.0.9:161 # other management address ![终端界面:Top 66 会话](images/tui-topn.png) -**本地抓包** 从本机网卡生成流,最好是接到交换机镜像端口的网口:`traffic66 interfaces` 列出网卡,`-capture eth1`(或 Windows 的名称或编号)开始抓包。Linux 需要 root 或 `setcap cap_net_raw,cap_net_admin+ep`,macOS 需要 root,Windows 需要 [Npcap](https://npcap.com)。抓到的流显示为来自设备 `127.0.0.1`。 +**本地抓包** 从本机网卡生成流,最好是接到交换机镜像端口的网口:`traffic66 interfaces` 列出网卡,`-capture eth1` 开始抓包。在 Windows 上: + +``` +traffic66.exe interfaces # list the network cards: name, number, address +traffic66.exe -capture Wi-Fi # capture on the wireless card (or by number: -capture 2) +``` + +Linux 需要 root 或 `setcap cap_net_raw,cap_net_admin+ep`,macOS 需要 root,Windows 需要 [Npcap](https://npcap.com)。抓到的流显示为来自设备 `127.0.0.1`。本地抓包没有设备接口和计数器,因此 **接口对账** 对它没有可对比的内容。 diff --git a/docs/images/sandbox.png b/docs/images/sandbox.png index e48ed47d3e574a1152e844f1cd2520681245e91d..0682f9f85320e8e361e3da84ab728538867f1e51 100644 GIT binary patch literal 112282 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 literal 111577 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%0DggBS3o88IFi7ZIr*SV3p< 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%0AVR$e@olBRL%bE{n{5r)6CW52<nC!r)Y>Yi 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

)eftheRAt`9XJ=as>eK>7JWKG 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 diff --git a/internal/api/sandbox.go b/internal/api/sandbox.go index bf58ebc..468c150 100644 --- a/internal/api/sandbox.go +++ b/internal/api/sandbox.go @@ -78,3 +78,16 @@ func (s *Server) deleteSandbox(w http.ResponseWriter, r *http.Request) { } writeJSON(w, http.StatusOK, s.SB.Info()) } + +// putSandboxActive makes one capture file the one the pages show. +func (s *Server) putSandboxActive(w http.ResponseWriter, r *http.Request) { + if s.SB == nil { + fail(w, errors.New("offline analysis is not available")) + return + } + if err := s.SB.Select(r.URL.Query().Get("name")); err != nil { + fail(w, err) + return + } + writeJSON(w, http.StatusOK, s.SB.Info()) +} diff --git a/internal/api/server.go b/internal/api/server.go index 6a1d826..421d483 100644 --- a/internal/api/server.go +++ b/internal/api/server.go @@ -112,6 +112,7 @@ func (s *Server) Handler() http.Handler { api("GET /api/sandbox", s.getSandbox) api("POST /api/sandbox/files", s.putSandboxFile) api("DELETE /api/sandbox/files", s.deleteSandbox) + api("POST /api/sandbox/active", s.putSandboxActive) api("POST /api/logo", s.putLogo) api("DELETE /api/logo", s.deleteLogo) api("GET /api/geo", s.getGeo) diff --git a/internal/capture/capture.go b/internal/capture/capture.go index 600e067..d4eeb62 100644 --- a/internal/capture/capture.go +++ b/internal/capture/capture.go @@ -38,6 +38,7 @@ type entry struct { first, last time.Time pkts, bytes uint64 flags uint8 + opener int8 // kept across active-timeout exports } // Capture is one running interface capture. @@ -111,7 +112,7 @@ func (c *Capture) readLoop(ctx context.Context) { c.Dropped.Add(1) return } - e = &entry{first: now} + e = &entry{first: now, opener: opener(r.TCPFlags)} c.table[k] = e } e.last = now @@ -145,6 +146,15 @@ func (c *Capture) expireLoop(ctx context.Context) { func (c *Capture) flush(now time.Time, all bool) { var out []flow.Record c.mu.Lock() + // first learn who opened each connection from either direction, before + // any entry is removed below + for k, e := range c.table { + if e.opener == 0 && e.pkts > 0 { + if re := c.table[key{k.dst, k.src, k.dport, k.sport, k.proto, k.vlan, k.encap}]; re != nil { + e.opener = -re.opener + } + } + } for k, e := range c.table { idle := now.Sub(e.last) >= idleTimeout active := now.Sub(e.first) >= activeTimeout @@ -157,15 +167,29 @@ func (c *Capture) flush(now time.Time, all bool) { } continue } + op := e.opener out = append(out, flow.Record{Start: e.first, End: e.last, Src: k.src, Dst: k.dst, SrcPort: k.sport, DstPort: k.dport, - Proto: k.proto, VLAN: k.vlan, Encap: k.encap, TCPFlags: e.flags, Bytes: e.bytes, Packets: e.pkts, L2: true, + Proto: k.proto, VLAN: k.vlan, Encap: k.encap, TCPFlags: e.flags, Bytes: e.bytes, Packets: e.pkts, L2: true, Opener: op, Sampling: 1, Mult: 1, SamplingKnown: true, Exporter: Exporter, Domain: c.domain, Source: flow.SrcCapture, Direction: 255}) if idle || all { delete(c.table, k) } else { - *e = entry{first: now, last: now} + *e = entry{first: now, last: now, opener: op} } } c.mu.Unlock() c.sink.Submit(out) } + +// opener reads the first packet of a TCP connection seen in one direction: +// a SYN alone opens it (1), a SYN+ACK answers (-1); anything else says +// nothing (0). +func opener(flags uint8) int8 { + switch flags & 0x12 { + case 0x02: + return 1 + case 0x12: + return -1 + } + return 0 +} diff --git a/internal/enrich/role_test.go b/internal/enrich/role_test.go new file mode 100644 index 0000000..1aa9282 --- /dev/null +++ b/internal/enrich/role_test.go @@ -0,0 +1,31 @@ +package enrich + +import ( + "net/netip" + "testing" + + "github.com/githubflyideas/traffic66/internal/flow" +) + +// Exported TCP records carry the flags of all their packets: both +// directions of a normal connection read SYN+ACK. Both must agree on who +// the client is. +func TestRoleMergedFlags(t *testing.T) { + pc, srv := netip.MustParseAddr("10.0.0.5"), netip.MustParseAddr("20.27.177.113") + up := flow.Record{Src: pc, Dst: srv, SrcPort: 52114, DstPort: 443, Proto: 6, TCPFlags: 0x1b, Packets: 40} + down := flow.Record{Src: srv, Dst: pc, SrcPort: 443, DstPort: 52114, Proto: 6, TCPFlags: 0x1b, Packets: 60} + if !Role(&up) || Role(&down) { + t.Fatalf("up=%v down=%v, want the PC as client both ways", Role(&up), Role(&down)) + } + // both ports unknown: the opener seen in the first packet decides + a := flow.Record{Src: pc, Dst: srv, SrcPort: 40000, DstPort: 50000, Proto: 6, TCPFlags: 0x1b, Packets: 9, Opener: 1} + b := flow.Record{Src: srv, Dst: pc, SrcPort: 50000, DstPort: 40000, Proto: 6, TCPFlags: 0x1b, Packets: 9, Opener: -1} + if !Role(&a) || Role(&b) { + t.Fatalf("opener ignored: a=%v b=%v", Role(&a), Role(&b)) + } + // a single sampled packet still reads its flags + syn := flow.Record{Src: pc, Dst: srv, SrcPort: 50000, DstPort: 40000, Proto: 6, TCPFlags: 0x02, Packets: 1} + if !Role(&syn) { + t.Fatal("a lone SYN opens the connection") + } +} diff --git a/internal/enrich/services.go b/internal/enrich/services.go index eb7ce92..3d3ebc6 100644 --- a/internal/enrich/services.go +++ b/internal/enrich/services.go @@ -60,10 +60,17 @@ func known(proto uint8, port uint16) bool { func Role(r *flow.Record) bool { switch r.Proto { case 6: - if r.TCPFlags&0x12 == 0x02 { + if r.Opener != 0 { + return r.Opener > 0 // the first packet of the connection was seen + } + // The flags of a record are those of all its packets together: a + // client's SYN followed by ACKs reads as SYN+ACK just like the + // server's answer. They tell the roles only for a single packet + // (an sFlow sample, a lone SYN of a scan). + if r.Packets == 1 && r.TCPFlags&0x12 == 0x02 { return true // SYN without ACK: source opened the connection } - if r.TCPFlags&0x12 == 0x12 { + if r.Packets == 1 && r.TCPFlags&0x12 == 0x12 { return false // SYN+ACK: source is answering } case 17, 132: diff --git a/internal/flow/flow.go b/internal/flow/flow.go index 1c981f0..ef59e44 100644 --- a/internal/flow/flow.go +++ b/internal/flow/flow.go @@ -85,6 +85,12 @@ type Record struct { Encap Encap // Direction as reported by the exporter: 0 ingress, 1 egress, 255 unknown. Direction uint8 + // Opener says who opened a TCP connection, when the packets showed it + // (local capture and pcap files see the first packet of each + // direction): 1 the source sent the SYN, -1 the source answered it with + // SYN+ACK, 0 unknown. Exported records carry only the merged flags of + // all packets, which cannot tell. + Opener int8 SrcAS, DstAS uint32 diff --git a/internal/sandbox/flows.go b/internal/sandbox/flows.go index 4e3fbf9..7fa3ca5 100644 --- a/internal/sandbox/flows.go +++ b/internal/sandbox/flows.go @@ -34,6 +34,7 @@ type fentry struct { first, last time.Time pkts, bytes uint64 flags uint8 + opener int8 // see flow.Record.Opener; kept across active-timeout exports } const ( @@ -89,6 +90,12 @@ func (b *builder) add(p *pcapfile.Packet) { b.sweep(p.Time, true) } e = &fentry{first: p.Time} + switch r.TCPFlags & 0x12 { + case 0x02: + e.opener = 1 + case 0x12: + e.opener = -1 + } b.table[k] = e } if p.Time.After(e.last) { @@ -111,6 +118,15 @@ func (b *builder) add(p *pcapfile.Packet) { func (b *builder) sweep(now time.Time, all bool) { b.swept = now var out []flow.Record + // first learn who opened each connection from either direction, before + // any entry is removed below + for k, e := range b.table { + if e.opener == 0 && e.pkts > 0 { + if re := b.table[fkey{k.dst, k.src, k.dport, k.sport, k.proto, k.vlan, k.encap, k.l2}]; re != nil { + e.opener = -re.opener + } + } + } for k, e := range b.table { idle := now.Sub(e.last) >= idleTimeout active := now.Sub(e.first) >= activeTimeout @@ -118,14 +134,14 @@ func (b *builder) sweep(now time.Time, all bool) { continue } if e.pkts > 0 { - out = append(out, flow.Record{Start: e.first, End: e.last, Src: k.src, Dst: k.dst, SrcPort: k.sport, DstPort: k.dport, + out = append(out, flow.Record{Start: e.first, End: e.last, Src: k.src, Dst: k.dst, SrcPort: k.sport, DstPort: k.dport, Opener: e.opener, Proto: k.proto, VLAN: k.vlan, Encap: k.encap, TCPFlags: e.flags, Bytes: e.bytes, Packets: e.pkts, L2: k.l2, Sampling: 1, Mult: 1, SamplingKnown: true, Exporter: b.exporter, Domain: b.domain, Source: flow.SrcCapture, Direction: 255}) } if idle || all { delete(b.table, k) } else { - *e = fentry{first: now, last: now} + *e = fentry{first: now, last: now, opener: e.opener} } } if len(out) > 0 { diff --git a/internal/sandbox/sandbox.go b/internal/sandbox/sandbox.go index 3121c8f..8f830ef 100644 --- a/internal/sandbox/sandbox.go +++ b/internal/sandbox/sandbox.go @@ -58,7 +58,9 @@ type File struct { Path string `json:"path,omitempty"` // a file opened in place (never deleted); else it is in Dir/files } -// Sandbox holds the uploaded files and their database. +// Sandbox holds the uploaded files. Each file has a database of its own, so +// one capture's flows and findings never mix with another's; the pages show +// one file at a time, the active one. type Sandbox struct { Dir string Inv *enrich.Inventory // the live inventory: names of networks and hosts @@ -72,14 +74,15 @@ type Sandbox struct { work sync.Mutex closed bool - mu sync.Mutex - files []*File - st *store.Store - det *detect.Detector - inv *enrich.Inventory // live inventory plus a device per file - busy bool - gen int // bumped by every rebuild; stale imports stop - wake chan struct{} + mu sync.Mutex + files []*File + active string // the file the pages show + st *store.Store // the active file's database, nil when not open + det *detect.Detector // its detection rules + inv *enrich.Inventory // live inventory plus a device per file + busy bool + gen int // bumped by every rebuild; stale imports stop + wake chan struct{} } // ErrLimit is returned when a file would exceed the limits. @@ -100,13 +103,6 @@ func NewWith(dir string, inv *enrich.Inventory, asn *enrich.ASNDB, thr *enrich.T sb.load() go sb.worker() if len(sb.files) > 0 { - sb.mu.Lock() - if sb.st == nil { // database missing: rebuild from the files - for _, f := range sb.files { - f.Status = "waiting" - } - } - sb.mu.Unlock() sb.kick() } return sb @@ -121,9 +117,23 @@ func (sb *Sandbox) filePath(f *File) string { } return filepath.Join(sb.pcapDir(), f.Name) } -func (sb *Sandbox) dbDir() string { return filepath.Join(sb.Dir, "db") } -func (sb *Sandbox) indexPath() string { - return filepath.Join(sb.Dir, "files.json") +func (sb *Sandbox) dbRoot() string { return filepath.Join(sb.Dir, "db") } +func (sb *Sandbox) dbDir(f *File) string { return filepath.Join(sb.dbRoot(), f.Exporter) } +func (sb *Sandbox) indexPath() string { return filepath.Join(sb.Dir, "files.json") } +func (sb *Sandbox) activePath() string { return filepath.Join(sb.Dir, "active") } +func (sb *Sandbox) hasDB(f *File) bool { + _, err := os.Stat(filepath.Join(sb.dbDir(f), "traffic66.duckdb")) + return err == nil +} + +// file returns the file of that name; sb.mu held. +func (sb *Sandbox) file(name string) *File { + for _, f := range sb.files { + if f.Name == name { + return f + } + } + return nil } func (sb *Sandbox) load() { @@ -140,16 +150,49 @@ func (sb *Sandbox) load() { sb.files = append(sb.files, f) } } - if _, err := os.Stat(filepath.Join(sb.dbDir(), "traffic66.duckdb")); err == nil { - if err := sb.open(); err != nil { + // before 1.5.2 all files shared one database: import them again + if _, err := os.Stat(filepath.Join(sb.dbRoot(), "traffic66.duckdb")); err == nil { + os.RemoveAll(sb.dbRoot()) + } + for _, f := range sb.files { + if f.Status != "error" && (f.Status != "done" || !sb.hasDB(f)) { + f.Status = "waiting" + } + } + if b, err := os.ReadFile(sb.activePath()); err == nil { + sb.active = strings.TrimSpace(string(b)) + } + sb.pickActive() + if f := sb.file(sb.active); f != nil && f.Status == "done" { + if err := sb.openActive(); err != nil { log.Printf("sandbox: %v", err) } } +} + +// pickActive keeps the active file if it is still there, else takes the +// first imported one; sb.mu held. +func (sb *Sandbox) pickActive() { + if f := sb.file(sb.active); f != nil && f.Status != "error" { + return + } + sb.active = "" for _, f := range sb.files { - if f.Status != "done" && f.Status != "error" { - f.Status = "waiting" + if f.Status == "done" { + sb.active = f.Name + break } } + sb.saveActive() +} + +func (sb *Sandbox) saveActive() { + if sb.active == "" { + os.Remove(sb.activePath()) + return + } + os.MkdirAll(sb.Dir, 0o755) + os.WriteFile(sb.activePath(), []byte(sb.active), 0o644) } func (sb *Sandbox) save() { @@ -161,13 +204,22 @@ func (sb *Sandbox) save() { } } -// open opens (or creates) the database; sb.mu held or not yet shared. -func (sb *Sandbox) open() error { +// openDB opens (or creates) one file's database. +func (sb *Sandbox) openDB(f *File) (*store.Store, error) { threads := 2 // beside live collection if sb.Mem > 0.1 { threads = 0 // on its own: all but one core } - st, err := store.Open(store.Options{Dir: sb.dbDir(), MemoryFraction: sb.Mem, Threads: threads}) + return store.Open(store.Options{Dir: sb.dbDir(f), MemoryFraction: sb.Mem, Threads: threads}) +} + +// openActive opens the active file's database for the pages; sb.mu held. +func (sb *Sandbox) openActive() error { + f := sb.file(sb.active) + if f == nil { + return errors.New("no capture file chosen") + } + st, err := sb.openDB(f) if err != nil { return err } @@ -177,6 +229,34 @@ func (sb *Sandbox) open() error { return nil } +// closeActive closes the pages' database; sb.mu held. +func (sb *Sandbox) closeActive() { + if sb.st != nil { + sb.st.Close() + } + sb.st, sb.det = nil, nil +} + +// Select makes the file of that name the one the pages show. +func (sb *Sandbox) Select(name string) error { + sb.mu.Lock() + defer sb.mu.Unlock() + f := sb.file(name) + if f == nil { + return errors.New("no such file") + } + if f.Status != "done" { + return errors.New("the file is not imported yet") + } + if sb.active == name && sb.st != nil { + return nil + } + sb.closeActive() + sb.active = name + sb.saveActive() + return sb.openActive() +} + // refreshInventory names each file's exporter after the file. func (sb *Sandbox) refreshInventory() { inv := enrich.NewInventory() @@ -197,7 +277,7 @@ func (sb *Sandbox) refreshInventory() { } } -// Store returns the sandbox database, or nil when there is none. +// Store returns the active file's database, or nil when there is none. func (sb *Sandbox) Store() (*store.Store, *detect.Detector, *enrich.Inventory) { sb.mu.Lock() defer sb.mu.Unlock() @@ -206,10 +286,11 @@ func (sb *Sandbox) Store() (*store.Store, *detect.Detector, *enrich.Inventory) { // Info describes the sandbox for the UI. type Info struct { - Files []File `json:"files"` - Busy bool `json:"busy"` - First time.Time `json:"first"` - Last time.Time `json:"last"` + Files []File `json:"files"` + Busy bool `json:"busy"` + Active string `json:"active"` // the file the pages show + First time.Time `json:"first"` // its time span + Last time.Time `json:"last"` Limits Ready bool `json:"ready"` // has data to look at } @@ -217,19 +298,13 @@ type Info struct { func (sb *Sandbox) Info() Info { sb.mu.Lock() defer sb.mu.Unlock() - in := Info{Files: []File{}, Busy: sb.busy, Limits: sb.Lim} + in := Info{Files: []File{}, Busy: sb.busy, Limits: sb.Lim, Active: sb.active} for _, f := range sb.files { in.Files = append(in.Files, *f) - if f.Flows == 0 { - continue - } - if in.First.IsZero() || f.First.Before(in.First) { - in.First = f.First - } - if f.Last.After(in.Last) { - in.Last = f.Last + if f.Name == sb.active && f.Flows > 0 { + in.First, in.Last = f.First, f.Last + in.Ready = sb.st != nil } - in.Ready = sb.st != nil } return in } @@ -408,15 +483,11 @@ func slicesDelete(fs []*File, f *File) []*File { return out } -// Delete removes one file (name) or everything (name ""). The database is -// rebuilt from the remaining files. +// Delete removes one file (name) or everything (name ""), with its +// database. The other files keep theirs. func (sb *Sandbox) Delete(name string) error { sb.mu.Lock() - found := name == "" - for _, f := range sb.files { - found = found || f.Name == name - } - if !found { + if name != "" && sb.file(name) == nil { sb.mu.Unlock() return errors.New("no such file") } @@ -433,31 +504,32 @@ func (sb *Sandbox) Delete(name string) error { keep = append(keep, f) continue } + if f.Name == sb.active { + sb.closeActive() + } if f.Path == "" { os.Remove(filepath.Join(sb.pcapDir(), f.Name)) } + os.RemoveAll(sb.dbDir(f)) continue } + if f.Status == "importing" { // stopped by the delete: start it again + f.Status = "waiting" + } keep = append(keep, f) } sb.files = keep - st := sb.st - sb.st, sb.det = nil, nil - for _, f := range sb.files { - if f.Status != "uploading" { - f.Status, f.Error, f.Packets, f.Skipped, f.Flows, f.First, f.Last = "waiting", "", 0, 0, 0, time.Time{}, time.Time{} + sb.pickActive() + if sb.st == nil && sb.active != "" { + if err := sb.openActive(); err != nil { + log.Printf("sandbox: %v", err) } } sb.save() sb.refreshInventory() + empty := len(keep) == 0 sb.mu.Unlock() - if st != nil { - st.Close() - } - if err := os.RemoveAll(sb.dbDir()); err != nil { - return err - } - if len(keep) == 0 { + if empty { os.RemoveAll(sb.Dir) } sb.kick() @@ -504,17 +576,25 @@ func (sb *Sandbox) importNext() bool { sb.mu.Unlock() return false } - if sb.st == nil { - if err := sb.open(); err != nil { - f.Status, f.Error = "error", err.Error() - sb.save() - sb.mu.Unlock() - return true - } + // a fresh database of its own + if f.Name == sb.active { + sb.closeActive() + } + os.RemoveAll(sb.dbDir(f)) + st, err := sb.openDB(f) + if err != nil { + f.Status, f.Error = "error", err.Error() + sb.save() + sb.mu.Unlock() + return true } f.Status = "importing" sb.busy = true - gen, st, det, inv := sb.gen, sb.st, sb.det, sb.inv + if sb.inv == nil { + sb.refreshInventory() + } + gen, inv := sb.gen, sb.inv + det := detect.New(st, inv, detect.Config{}) sb.mu.Unlock() res, err := sb.importFile(gen, f, st, inv) @@ -531,10 +611,11 @@ func (sb *Sandbox) importNext() bool { } } } + st.Close() sb.mu.Lock() defer sb.mu.Unlock() sb.busy = false - if gen != sb.gen { // deleted meanwhile + if gen != sb.gen { // deleted or stopped meanwhile return true } f.Packets, f.Skipped, f.Flows, f.First, f.Last = res.packets, res.skipped, res.flows, res.first, res.last @@ -546,6 +627,15 @@ func (sb *Sandbox) importNext() bool { default: f.Status = "done" } + if f.Status == "done" && (sb.active == "" || sb.active == f.Name) { + sb.active = f.Name + sb.saveActive() + if sb.st == nil { + if err := sb.openActive(); err != nil { + log.Printf("sandbox: %v", err) + } + } + } sb.save() log.Printf("sandbox: %s: %d packets, %d flows, %s – %s (%v)", f.Name, res.packets, res.flows, res.first.Format(time.RFC3339), res.last.Format(time.RFC3339), err) @@ -628,10 +718,6 @@ func (sb *Sandbox) Close() { sb.work.Lock() // wait for a running import to stop defer sb.work.Unlock() sb.mu.Lock() - st := sb.st - sb.st = nil + sb.closeActive() sb.mu.Unlock() - if st != nil { - st.Close() - } } diff --git a/internal/sandbox/sandbox_test.go b/internal/sandbox/sandbox_test.go index 4f9e1d2..aea5da3 100644 --- a/internal/sandbox/sandbox_test.go +++ b/internal/sandbox/sandbox_test.go @@ -153,3 +153,60 @@ func TestAddPath(t *testing.T) { t.Errorf("the original file was deleted: %v", err) } } + +// Two captures are analysed one at a time: each has its own flows and +// findings, the first imported is shown first, and switching shows the +// other one alone. +func TestOneFileAtATime(t *testing.T) { + dir := filepath.Join(t.TempDir(), "sandbox") + sb := New(dir, enrich.NewInventory(), enrich.NewASNDB(), enrich.NewThreats()) + var a, b bytes.Buffer + Sample(&a, time.Date(2026, 9, 20, 11, 0, 0, 0, time.UTC)) + Sample(&b, time.Date(2026, 9, 21, 11, 0, 0, 0, time.UTC)) + sb.Add("a.pcap", bytes.NewReader(a.Bytes()), false) + sb.Add("b.pcap", bytes.NewReader(b.Bytes()), false) + in := wait(t, sb) + if in.Active != "a.pcap" || !in.Ready || in.First.Day() != 20 { + t.Fatalf("active %q ready %v first %v", in.Active, in.Ready, in.First) + } + count := func() (n int, days string) { + st, _, _ := sb.Store() + st.DB.QueryRow(`SELECT count(*), string_agg(DISTINCT strftime(ts, '%d'), ',') FROM hot`).Scan(&n, &days) + return + } + if _, d := count(); d != "20" { + t.Errorf("a.pcap shows days %q", d) + } + if err := sb.Select("b.pcap"); err != nil { + t.Fatal(err) + } + if in := sb.Info(); in.Active != "b.pcap" || in.First.Day() != 21 { + t.Errorf("after switch: %q %v", in.Active, in.First) + } + if _, d := count(); d != "21" { + t.Errorf("b.pcap shows days %q", d) + } + // deleting the active file shows the other one; its data stays + if err := sb.Delete("b.pcap"); err != nil { + t.Fatal(err) + } + if in := sb.Info(); in.Active != "a.pcap" || !in.Ready { + t.Errorf("after delete: %q ready %v", in.Active, in.Ready) + } + if n, d := count(); n == 0 || d != "20" { + t.Errorf("a.pcap after delete: %d rows, days %q", n, d) + } + // a restart keeps the file and its database + sb.Close() + sb = New(dir, enrich.NewInventory(), enrich.NewASNDB(), enrich.NewThreats()) + defer sb.Close() + if in := wait(t, sb); in.Active != "a.pcap" || !in.Ready { + t.Errorf("after restart: %q ready %v", in.Active, in.Ready) + } + // a file added to a sandbox that has none open yet imports too + sb.Delete("") + sb.Add("b.pcap", bytes.NewReader(b.Bytes()), false) + if in := wait(t, sb); in.Active != "b.pcap" || !in.Ready { + t.Errorf("fresh: %q ready %v", in.Active, in.Ready) + } +} diff --git a/internal/web/static/app.css b/internal/web/static/app.css index ff3ae12..01e6458 100644 --- a/internal/web/static/app.css +++ b/internal/web/static/app.css @@ -365,3 +365,4 @@ label.btn.disabled{opacity:.5;cursor:not-allowed!important} .iflist .ifrow.peer>button:first-child{font-size:12px;color:var(--ink-3)} .iflist .ifrow.peer>button:first-child .muted{font-size:10.5px!important} .iflist .ifrow.peer>button:first-child .st{font-size:11px;opacity:.75} +#sbbar select{border:1px solid var(--line-2);border-radius:7px;padding:4px 8px;background:var(--surface);color:var(--ink);font-weight:600;max-width:260px} diff --git a/internal/web/static/app.js b/internal/web/static/app.js index 9cd1779..90c2f8e 100644 --- a/internal/web/static/app.js +++ b/internal/web/static/app.js @@ -214,6 +214,7 @@ async function renderIfsel() { w.hidden = !show; if (!show) return; const d = await loadIfaces(), list = d.ifaces || []; + if (!list.length) { w.hidden = true; return; } // e.g. local capture only: nothing to choose if (state.ifv === undefined) state.ifv = d.default || 'all'; const key = f => f.exporter + '/' + f.ifindex; const opt = (v, l, tt) => ``; @@ -1150,18 +1151,17 @@ views.sandbox = async (el) => { ${f.packets ? nf(f.packets) : '—'}${f.flows ? nf(f.flows) : '—'} ${f.flows ? esc(df.format(new Date(f.first))) + ' – ' + esc(df.format(new Date(f.last))) : ''} ${f.status === 'error' ? status('bad', f.error || t('sb.st_error')) : f.status === 'done' ? status('ok', t('sb.st_done')) : `${t('sb.st_' + f.status)}…`} - `).join(''); + `).join(''); el.innerHTML = `

${panel('c12', t('sb.title'), t('sb.sub'), `

${esc(t('sb.explain'))}

${rows || ``}
${t('sb.col_file')}${t('sb.col_size')}${t('sb.col_packets')}${t('sb.col_flows')}${t('sb.col_span')}${t('sb.col_status')}
${t('sb.empty')}
-
- +
${fs.length ? `` : ''}

${esc(sbInfo.max_total >= sbInfo.max_file_size * sbInfo.max_files ? t('sb.limits', {n: sbInfo.max_files, mb}) : sbInfo.max_total <= sbInfo.max_file_size ? t('sb.limits_total', {n: sbInfo.max_files, gb: fmtBytes(sbInfo.max_total)}) : t('sb.limits', {n: sbInfo.max_files, mb}) + ' ' + t('sb.limits_total', {n: sbInfo.max_files, gb: fmtBytes(sbInfo.max_total)}))} ${esc(t('sb.formats'))}

`)}
`; // the last upload problem stays shown after the page refreshes const msg = (ok, text) => { sbMsg = ok === false ? text : ''; const m = $('#sbMsg'); m.style.color = ok === null ? 'var(--ink-3)' : ok ? 'var(--good)' : 'var(--crit)'; m.textContent = text; }; if (sbMsg) msg(false, sbMsg); - $('#sbGo').onclick = () => { state.ds = 'sb'; go('overview'); }; + el.querySelectorAll('[data-sbgo]').forEach(b => b.onclick = async () => { if (await sbSelect(b.dataset.sbgo)) { state.ds = 'sb'; go('overview'); } }); el.querySelectorAll('[data-sbdel]').forEach(b => b.onclick = async () => { if (!confirm(t('sb.confirm', {f: b.dataset.sbdel}))) return; await fetch('/api/sandbox/files?name=' + encodeURIComponent(b.dataset.sbdel), {method: 'DELETE'}); @@ -1293,7 +1293,13 @@ views.ifaces = async (el) => { const d = await api('ifaces'); (d.ifaces || []).forEach(f => ifaceNames.set(f.exporter + '/' + f.ifindex, ifName(f) + ' · ' + (f.device || f.exporter))); const list = (d.ifaces || []).slice().sort((a, b) => (!!a.peer - !!b.peer) || (!!b.has_counters - !!a.has_counters) || ((devKind(b) === 'warn') - (devKind(a) === 'warn'))); - if (!list.length) { el.innerHTML = `
${t('empty.nodata')}
`; return; } + if (!list.length) { + // local capture has no device interfaces or counters to compare with + const src = await api('sources').catch(() => ({})); + const capOnly = (src.captures || []).length && !(src.sources || []).length; + el.innerHTML = `
${esc(t(capOnly ? 'if.capture_only' : 'empty.nodata'))}
`; + return; + } if (!state.ifc || !list.some(f => f.exporter === state.ifc.exporter && f.ifindex === state.ifc.ifindex)) { const d = list.find(f => f.default) || list.find(f => !f.peer) || list[0]; state.ifc = {exporter: d.exporter, ifindex: d.ifindex}; } const key = state.ifc.exporter + '/' + state.ifc.ifindex, sel = list.find(f => f.exporter === state.ifc.exporter && f.ifindex === state.ifc.ifindex); // one device's interface: count everything it saw, also traffic another device reported too @@ -1597,11 +1603,23 @@ function renderSB() { const r = sbRange(), span = r.to - r.from; const df = new Intl.DateTimeFormat(LANG, {dateStyle: 'medium', timeStyle: 'short'}), tf = new Intl.DateTimeFormat(LANG, {timeStyle: 'short'}); const sameDay = new Date(r.from).toDateString() === new Date(r.to).toDateString(); - const names = sbInfo.files.filter(f => f.status === 'done').map(f => f.name); - $('#sbbar').innerHTML = `${t('sb.banner')}${names.map(esc).join(' · ')} + // one file at a time; the others are a click away + const done = sbInfo.files.filter(f => f.status === 'done'); + const pick = done.length > 1 ? `` : `${esc(sbInfo.active)}`; + $('#sbbar').innerHTML = `${t('sb.banner')}${pick} ${esc(df.format(r.from))} – ${esc(sameDay ? tf.format(r.to) : df.format(r.to))} (${esc(fmtDur(span))}) ${offlineMode ? '' : ``}`; if ($('#sbBack')) $('#sbBack').onclick = () => { state.ds = ''; render(); }; + if ($('#sbPick')) $('#sbPick').onchange = async e => { if (await sbSelect(e.target.value)) render(); }; +} +// sbSelect makes one capture file the one every page shows. +async function sbSelect(name) { + if (name === sbInfo.active && sbInfo.ready) return true; + const res = await fetch('/api/sandbox/active?name=' + encodeURIComponent(name), {method: 'POST'}); + const j = await res.json().catch(() => ({})); + if (!res.ok) { toast(j.error || res.statusText); return false; } + sbInfo = j; + return true; } function fmtDur(ms) { const m = Math.round(ms / 6e4); diff --git a/internal/web/static/i18n/ar.json b/internal/web/static/i18n/ar.json index 7317999..70cb4cd 100644 --- a/internal/web/static/i18n/ar.json +++ b/internal/web/static/i18n/ar.json @@ -378,7 +378,7 @@ "nav.sandbox": "تحليل pcap دون اتصال", "sb.title": "ملفات الالتقاط", "sb.sub": "حلّل ملفات pcap بمعزل عن البيانات الحية", -"sb.explain": "ارفع ملفات التقاط من Wireshark أو tcpdump. تُحفظ في قاعدة بيانات منفصلة فلا تتأثر البيانات الحية وأرقامها واكتشافاتها. يعرض زر «تحليل» الملفات في كل الصفحات (نظرة عامة، أعلى 66، الاكتشافات، مسارات الحركة، الخريطة، سجلات التدفق)، ويحذف زر «حذف» الملفات وبياناتها.", +"sb.explain": "ارفع ملفات الالتقاط من Wireshark أو tcpdump. يذهب كل ملف إلى قاعدة بيانات خاصة به، فلا تتأثر البيانات الحية وأرقامها واكتشافاتها. يعرض «تحليل» ذلك الملف وحده في كل الصفحات (النظرة العامة، Top 66، الاكتشافات، مسارات التدفق، الخريطة، سجلات التدفق)؛ بدّل الملف من الشريط في الأعلى. «حذف» يزيل الملف وبياناته.", "sb.col_file": "الملف", "sb.col_size": "الحجم", "sb.col_packets": "الحزم", @@ -514,5 +514,6 @@ "if.peer_note": "واجهة الطرف الآخر: بلا عينات، فقط الحركة عبر الواجهة المأخوذ منها العينات في هذا الجهاز", "src.sampled_if": "العينات من: {v}", "src.dir_yes": "مع flowDirection (61)", -"src.dir_no": "بدون flowDirection (61): الواجهة مستنتجة من الحركة" +"src.dir_no": "بدون flowDirection (61): الواجهة مستنتجة من الحركة", +"if.capture_only": "تقارن مطابقة الواجهات التدفقات بعدادات الواجهات في أجهزة sFlow وNetFlow وIPFIX. الالتقاط المحلي على بطاقة شبكة هذا الجهاز لا يحمل واجهات أو عدادات أجهزة، لذا لا يوجد ما يُقارن هنا." } diff --git a/internal/web/static/i18n/bn.json b/internal/web/static/i18n/bn.json index a150a01..3e94cfa 100644 --- a/internal/web/static/i18n/bn.json +++ b/internal/web/static/i18n/bn.json @@ -378,7 +378,7 @@ "nav.sandbox": "অফলাইন pcap বিশ্লেষণ", "sb.title": "ক্যাপচার ফাইল", "sb.sub": "লাইভ ডেটা থেকে আলাদা করে pcap ফাইল বিশ্লেষণ", -"sb.explain": "Wireshark বা tcpdump-এর ক্যাপচার ফাইল আপলোড করুন। এগুলো আলাদা ডেটাবেসে যায়: লাইভ ডেটা, তার হিসাব ও ফলাফল বদলায় না। “বিশ্লেষণ” সব পেজে (সংক্ষেপ, Top 66, ফলাফল, ফ্লো পথ, মানচিত্র, ফ্লো রেকর্ড) ফাইলগুলো দেখায়; “মুছুন” ফাইল ও তার ডেটা মুছে দেয়।", +"sb.explain": "Wireshark বা tcpdump-এর ক্যাপচার ফাইল আপলোড করুন। প্রতিটি ফাইল নিজস্ব ডেটাবেসে যায়: লাইভ ডেটা, তার সংখ্যা ও শনাক্তকরণে কোনো প্রভাব পড়ে না। কোনো ফাইলের ‘বিশ্লেষণ’ চাপলে সব পেজ (সংক্ষিপ্তসার, Top 66, শনাক্তকরণ, ফ্লো পথ, মানচিত্র, ফ্লো রেকর্ড) শুধু সেই ফাইল দেখায়; উপরের বারে ফাইল বদলান। ‘মুছুন’ ফাইল ও তার ডেটা মুছে দেয়।", "sb.col_file": "ফাইল", "sb.col_size": "আকার", "sb.col_packets": "প্যাকেট", @@ -514,5 +514,6 @@ "if.peer_note": "বিপরীত ইন্টারফেস: স্যাম্পল নয়, শুধু এই ডিভাইসের স্যাম্পল করা ইন্টারফেস দিয়ে যাওয়া ট্রাফিক", "src.sampled_if": "স্যাম্পল ইন্টারফেস: {v}", "src.dir_yes": "flowDirection (61) সহ", -"src.dir_no": "flowDirection (61) ছাড়া: স্যাম্পল ইন্টারফেস ট্রাফিক থেকে অনুমান" +"src.dir_no": "flowDirection (61) ছাড়া: স্যাম্পল ইন্টারফেস ট্রাফিক থেকে অনুমান", +"if.capture_only": "ইন্টারফেস মিলান sFlow, NetFlow ও IPFIX ডিভাইসের ফ্লোকে ইন্টারফেস কাউন্টারের সঙ্গে মেলায়। এই মেশিনের নেটওয়ার্ক কার্ডে লোকাল ক্যাপচারে ডিভাইসের ইন্টারফেস বা কাউন্টার থাকে না, তাই এখানে মেলানোর কিছু নেই।" } diff --git a/internal/web/static/i18n/en.json b/internal/web/static/i18n/en.json index 5886d61..dcee5b2 100644 --- a/internal/web/static/i18n/en.json +++ b/internal/web/static/i18n/en.json @@ -378,7 +378,7 @@ "nav.sandbox": "Offline pcap analysis", "sb.title": "Capture files", "sb.sub": "Analyse pcap files apart from the live data", -"sb.explain": "Upload packet captures from Wireshark or tcpdump. They go into a separate database: the live data, its numbers and findings are not touched. Analyse shows the files on every page (overview, Top 66, findings, flow paths, map, flow records); Delete removes the files and their data.", +"sb.explain": "Upload packet captures from Wireshark or tcpdump. Each goes into a database of its own: the live data, its numbers and findings are not touched. Analyse shows that one file on every page (overview, Top 66, findings, flow paths, map, flow records); switch files in the bar at the top. Delete removes a file and its data.", "sb.col_file": "File", "sb.col_size": "Size", "sb.col_packets": "Packets", @@ -514,5 +514,6 @@ "if.peer_note": "Peer interface: not sampled, only the traffic through the sampled interface of this device", "src.sampled_if": "Sampled on: {v}", "src.dir_yes": "with flowDirection (61)", -"src.dir_no": "without flowDirection (61): sampled interface inferred from traffic" +"src.dir_no": "without flowDirection (61): sampled interface inferred from traffic", +"if.capture_only": "Interface check compares flows with the interface counters of sFlow, NetFlow and IPFIX devices. Local capture on this machine's network card has no device interfaces or counters, so there is nothing to compare here." } diff --git a/internal/web/static/i18n/es.json b/internal/web/static/i18n/es.json index 383ecec..c265b6a 100644 --- a/internal/web/static/i18n/es.json +++ b/internal/web/static/i18n/es.json @@ -378,7 +378,7 @@ "nav.sandbox": "Análisis offline de pcap", "sb.title": "Archivos de captura", "sb.sub": "Analizar archivos pcap aparte de los datos en vivo", -"sb.explain": "Suba capturas de Wireshark o tcpdump. Van a una base de datos aparte: los datos en vivo, sus cifras y hallazgos no se tocan. Analizar muestra los archivos en todas las páginas (resumen, Top 66, hallazgos, rutas, mapa, registros); Eliminar borra los archivos y sus datos.", +"sb.explain": "Sube capturas de Wireshark o tcpdump. Cada una va a su propia base de datos: los datos en vivo, sus cifras y hallazgos no se tocan. Analizar muestra ese archivo en todas las páginas (resumen, Top 66, hallazgos, rutas, mapa, registros de flujo); cambia de archivo en la barra superior. Eliminar borra un archivo y sus datos.", "sb.col_file": "Archivo", "sb.col_size": "Tamaño", "sb.col_packets": "Paquetes", @@ -514,5 +514,6 @@ "if.peer_note": "Interfaz del otro extremo: sin muestreo, solo el tráfico por la interfaz muestreada de este equipo", "src.sampled_if": "Muestreo en: {v}", "src.dir_yes": "con flowDirection (61)", -"src.dir_no": "sin flowDirection (61): interfaz muestreada deducida del tráfico" +"src.dir_no": "sin flowDirection (61): interfaz muestreada deducida del tráfico", +"if.capture_only": "La verificación de interfaces compara los flujos con los contadores de interfaz de equipos sFlow, NetFlow e IPFIX. La captura local en la tarjeta de red de este equipo no tiene interfaces ni contadores de dispositivo, así que aquí no hay nada que comparar." } diff --git a/internal/web/static/i18n/fr.json b/internal/web/static/i18n/fr.json index 153825e..abf3f22 100644 --- a/internal/web/static/i18n/fr.json +++ b/internal/web/static/i18n/fr.json @@ -378,7 +378,7 @@ "nav.sandbox": "Analyse hors ligne de pcap", "sb.title": "Fichiers de capture", "sb.sub": "Analyser des fichiers pcap à part des données en direct", -"sb.explain": "Importez des captures Wireshark ou tcpdump. Elles vont dans une base séparée : les données en direct, leurs chiffres et détections ne sont pas touchés. Analyser affiche les fichiers sur toutes les pages (vue d'ensemble, Top 66, détections, chemins, carte, enregistrements) ; Supprimer efface les fichiers et leurs données.", +"sb.explain": "Téléversez des captures Wireshark ou tcpdump. Chacune va dans sa propre base : les données en direct, leurs chiffres et détections ne sont pas touchés. Analyser affiche ce seul fichier sur toutes les pages (vue d’ensemble, Top 66, détections, chemins, carte, enregistrements de flux) ; changez de fichier dans la barre du haut. Supprimer efface un fichier et ses données.", "sb.col_file": "Fichier", "sb.col_size": "Taille", "sb.col_packets": "Paquets", @@ -514,5 +514,6 @@ "if.peer_note": "Interface d’en face : non échantillonnée, seulement le trafic passé par l’interface échantillonnée de cet équipement", "src.sampled_if": "Échantillonné sur : {v}", "src.dir_yes": "avec flowDirection (61)", -"src.dir_no": "sans flowDirection (61) : interface échantillonnée déduite du trafic" +"src.dir_no": "sans flowDirection (61) : interface échantillonnée déduite du trafic", +"if.capture_only": "Le contrôle des interfaces compare les flux aux compteurs d’interface des équipements sFlow, NetFlow et IPFIX. La capture locale sur la carte réseau de cette machine n’a ni interfaces ni compteurs d’équipement : il n’y a rien à comparer ici." } diff --git a/internal/web/static/i18n/hi.json b/internal/web/static/i18n/hi.json index 35c8467..0696fa9 100644 --- a/internal/web/static/i18n/hi.json +++ b/internal/web/static/i18n/hi.json @@ -378,7 +378,7 @@ "nav.sandbox": "ऑफ़लाइन pcap विश्लेषण", "sb.title": "कैप्चर फ़ाइलें", "sb.sub": "लाइव डेटा से अलग pcap फ़ाइलों का विश्लेषण", -"sb.explain": "Wireshark या tcpdump की कैप्चर फ़ाइलें अपलोड करें। वे अलग डेटाबेस में जाती हैं: लाइव डेटा, उसके आँकड़े और निष्कर्ष नहीं बदलते। “विश्लेषण करें” सभी पेजों (अवलोकन, Top 66, निष्कर्ष, फ़्लो पथ, मानचित्र, फ़्लो रिकॉर्ड) पर फ़ाइलें दिखाता है; “हटाएँ” फ़ाइलें और उनका डेटा मिटा देता है।", +"sb.explain": "Wireshark या tcpdump की कैप्चर फ़ाइलें अपलोड करें। हर फ़ाइल अपने अलग डेटाबेस में जाती है: लाइव डेटा, उसके आँकड़े और पहचानें प्रभावित नहीं होतीं। किसी फ़ाइल का ‘विश्लेषण करें’ दबाने पर हर पेज (अवलोकन, Top 66, पहचानें, फ़्लो पथ, नक्शा, फ़्लो रिकॉर्ड) सिर्फ़ वही फ़ाइल दिखाता है; ऊपर की पट्टी में फ़ाइल बदलें। ‘हटाएँ’ फ़ाइल और उसका डेटा हटाता है।", "sb.col_file": "फ़ाइल", "sb.col_size": "आकार", "sb.col_packets": "पैकेट", @@ -514,5 +514,6 @@ "if.peer_note": "सामने वाला इंटरफ़ेस: सैंपल नहीं, केवल इस डिवाइस के सैंपल किए इंटरफ़ेस से गुज़रा ट्रैफ़िक", "src.sampled_if": "सैंपल इंटरफ़ेस: {v}", "src.dir_yes": "flowDirection (61) सहित", -"src.dir_no": "flowDirection (61) के बिना: सैंपल इंटरफ़ेस ट्रैफ़िक से अनुमानित" +"src.dir_no": "flowDirection (61) के बिना: सैंपल इंटरफ़ेस ट्रैफ़िक से अनुमानित", +"if.capture_only": "इंटरफ़ेस मिलान sFlow, NetFlow और IPFIX डिवाइसों के फ़्लो की तुलना इंटरफ़ेस काउंटरों से करता है। इस मशीन के नेटवर्क कार्ड पर लोकल कैप्चर में डिवाइस इंटरफ़ेस या काउंटर नहीं होते, इसलिए यहाँ तुलना के लिए कुछ नहीं है।" } diff --git a/internal/web/static/i18n/id.json b/internal/web/static/i18n/id.json index da6a74c..62d816b 100644 --- a/internal/web/static/i18n/id.json +++ b/internal/web/static/i18n/id.json @@ -378,7 +378,7 @@ "nav.sandbox": "Analisis pcap offline", "sb.title": "File tangkapan", "sb.sub": "Analisis file pcap terpisah dari data langsung", -"sb.explain": "Unggah tangkapan paket dari Wireshark atau tcpdump. File masuk ke basis data terpisah: data langsung, angkanya, dan temuannya tidak tersentuh. Analisis menampilkan file di semua halaman (ringkasan, Top 66, temuan, jalur, peta, catatan flow); Hapus menghapus file dan datanya.", +"sb.explain": "Unggah file tangkapan dari Wireshark atau tcpdump. Masing-masing masuk ke basis data sendiri: data langsung, angka dan temuannya tidak tersentuh. Analisis menampilkan satu file itu di semua halaman (ringkasan, Top 66, temuan, jalur aliran, peta, catatan aliran); ganti file di bilah atas. Hapus menghapus file beserta datanya.", "sb.col_file": "File", "sb.col_size": "Ukuran", "sb.col_packets": "Paket", @@ -514,5 +514,6 @@ "if.peer_note": "Antarmuka lawan: tidak disampel, hanya trafik lewat antarmuka yang disampel di perangkat ini", "src.sampled_if": "Disampel di: {v}", "src.dir_yes": "dengan flowDirection (61)", -"src.dir_no": "tanpa flowDirection (61): antarmuka yang disampel ditebak dari trafik" +"src.dir_no": "tanpa flowDirection (61): antarmuka yang disampel ditebak dari trafik", +"if.capture_only": "Pencocokan antarmuka membandingkan aliran dengan penghitung antarmuka perangkat sFlow, NetFlow, dan IPFIX. Tangkapan lokal di kartu jaringan mesin ini tidak punya antarmuka atau penghitung perangkat, jadi tidak ada yang dibandingkan di sini." } diff --git a/internal/web/static/i18n/ja.json b/internal/web/static/i18n/ja.json index 8485b91..5db1f1c 100644 --- a/internal/web/static/i18n/ja.json +++ b/internal/web/static/i18n/ja.json @@ -378,7 +378,7 @@ "nav.sandbox": "オフライン pcap 分析", "sb.title": "キャプチャファイル", "sb.sub": "pcap ファイルをライブデータと分けて分析", -"sb.explain": "Wireshark や tcpdump のキャプチャファイルをアップロードします。別のデータベースに入るため、ライブデータや集計、検出結果には影響しません。「分析」を押すと全ページ(概要、Top 66、検出、フローパス、地図、フローレコード)にファイルの内容が表示されます。「削除」でファイルとデータを消します。", +"sb.explain": "Wireshark や tcpdump のキャプチャファイルをアップロードします。ファイルごとに専用のデータベースに入り、ライブデータや統計、検知には影響しません。ファイルの「分析」を押すと、すべてのページ(概要、上位 66、検知、フロー経路、地図、フローレコード)がそのファイルだけを表示します。上部のバーでファイルを切り替えられます。「削除」でファイルとそのデータを削除します。", "sb.col_file": "ファイル", "sb.col_size": "サイズ", "sb.col_packets": "パケット", @@ -514,5 +514,6 @@ "if.peer_note": "対向インターフェース:未サンプリング。このデバイスのサンプリング対象を通った分のみ", "src.sampled_if": "サンプリング対象:{v}", "src.dir_yes": "方向フィールド(61)あり", -"src.dir_no": "方向フィールド(61)なし:サンプリング対象はトラフィックから推定" +"src.dir_no": "方向フィールド(61)なし:サンプリング対象はトラフィックから推定", +"if.capture_only": "インターフェース照合は sFlow・NetFlow・IPFIX 機器のフローとインターフェースカウンターを比べます。このマシンの NIC でのローカルキャプチャには機器のインターフェースもカウンターもないため、ここで比べるものはありません。" } diff --git a/internal/web/static/i18n/ko.json b/internal/web/static/i18n/ko.json index 90763f5..d79a0f7 100644 --- a/internal/web/static/i18n/ko.json +++ b/internal/web/static/i18n/ko.json @@ -378,7 +378,7 @@ "nav.sandbox": "오프라인 pcap 분석", "sb.title": "캡처 파일", "sb.sub": "실시간 데이터와 따로 pcap 파일 분석", -"sb.explain": "Wireshark나 tcpdump 캡처 파일을 올립니다. 별도 데이터베이스에 들어가므로 실시간 데이터, 집계, 탐지 결과에는 영향이 없습니다. '분석'을 누르면 모든 페이지(개요, Top 66, 탐지, 플로 경로, 지도, 플로 레코드)에 파일 내용이 나오고, '삭제'는 파일과 데이터를 지웁니다.", +"sb.explain": "Wireshark나 tcpdump의 캡처 파일을 올립니다. 파일마다 별도 데이터베이스에 들어가며 실시간 데이터, 통계, 탐지에는 영향이 없습니다. 파일의 '분석'을 누르면 모든 페이지(개요, Top 66, 탐지, 흐름 경로, 지도, 플로 레코드)가 그 파일만 보여 줍니다. 위쪽 막대에서 파일을 바꿀 수 있습니다. '삭제'는 파일과 데이터를 지웁니다.", "sb.col_file": "파일", "sb.col_size": "크기", "sb.col_packets": "패킷", @@ -514,5 +514,6 @@ "if.peer_note": "상대 인터페이스: 샘플링 안 됨, 이 장비의 샘플링 인터페이스를 거친 트래픽만", "src.sampled_if": "샘플링 인터페이스: {v}", "src.dir_yes": "방향 필드(61) 있음", -"src.dir_no": "방향 필드(61) 없음: 샘플링 인터페이스를 트래픽으로 추정" +"src.dir_no": "방향 필드(61) 없음: 샘플링 인터페이스를 트래픽으로 추정", +"if.capture_only": "인터페이스 대조는 sFlow, NetFlow, IPFIX 장비의 플로와 인터페이스 카운터를 비교합니다. 이 컴퓨터 네트워크 카드의 로컬 캡처에는 장비 인터페이스와 카운터가 없어 여기서 비교할 것이 없습니다." } diff --git a/internal/web/static/i18n/pt.json b/internal/web/static/i18n/pt.json index 81bfb89..2ef9731 100644 --- a/internal/web/static/i18n/pt.json +++ b/internal/web/static/i18n/pt.json @@ -378,7 +378,7 @@ "nav.sandbox": "Análise offline de pcap", "sb.title": "Arquivos de captura", "sb.sub": "Analisar arquivos pcap separados dos dados ao vivo", -"sb.explain": "Envie capturas do Wireshark ou tcpdump. Elas vão para um banco separado: os dados ao vivo, seus números e detecções não são afetados. Analisar mostra os arquivos em todas as páginas (visão geral, Top 66, detecções, caminhos, mapa, registros); Excluir apaga os arquivos e seus dados.", +"sb.explain": "Envie capturas do Wireshark ou tcpdump. Cada uma vai para um banco de dados próprio: os dados ao vivo, seus números e detecções não são afetados. Analisar mostra esse arquivo em todas as páginas (visão geral, Top 66, detecções, caminhos, mapa, registros de fluxo); troque de arquivo na barra superior. Excluir apaga um arquivo e seus dados.", "sb.col_file": "Arquivo", "sb.col_size": "Tamanho", "sb.col_packets": "Pacotes", @@ -514,5 +514,6 @@ "if.peer_note": "Interface do outro lado: sem amostragem, só o tráfego pela interface amostrada deste equipamento", "src.sampled_if": "Amostragem em: {v}", "src.dir_yes": "com flowDirection (61)", -"src.dir_no": "sem flowDirection (61): interface amostrada deduzida do tráfego" +"src.dir_no": "sem flowDirection (61): interface amostrada deduzida do tráfego", +"if.capture_only": "A conferência de interfaces compara os fluxos com os contadores de interface de equipamentos sFlow, NetFlow e IPFIX. A captura local na placa de rede desta máquina não tem interfaces nem contadores de equipamento, então não há o que comparar aqui." } diff --git a/internal/web/static/i18n/ru.json b/internal/web/static/i18n/ru.json index 78cad1f..bca26c4 100644 --- a/internal/web/static/i18n/ru.json +++ b/internal/web/static/i18n/ru.json @@ -378,7 +378,7 @@ "nav.sandbox": "Офлайн-анализ pcap", "sb.title": "Файлы захвата", "sb.sub": "Анализ pcap-файлов отдельно от живых данных", -"sb.explain": "Загрузите захваты Wireshark или tcpdump. Они попадают в отдельную базу: живые данные, их статистика и находки не затрагиваются. «Анализ» показывает файлы на всех страницах (обзор, Top 66, находки, пути, карта, записи потоков); «Удалить» стирает файлы и их данные.", +"sb.explain": "Загрузите захваты Wireshark или tcpdump. Каждый попадает в собственную базу: живые данные, их цифры и обнаружения не затрагиваются. «Анализ» показывает этот файл на всех страницах (обзор, Топ 66, обнаружения, пути, карта, записи потоков); переключайте файлы в полосе сверху. «Удалить» удаляет файл и его данные.", "sb.col_file": "Файл", "sb.col_size": "Размер", "sb.col_packets": "Пакеты", @@ -514,5 +514,6 @@ "if.peer_note": "Встречный интерфейс: без выборки, только трафик через интерфейс с выборкой этого устройства", "src.sampled_if": "Выборка на: {v}", "src.dir_yes": "с flowDirection (61)", -"src.dir_no": "без flowDirection (61): интерфейс с выборкой определён по трафику" +"src.dir_no": "без flowDirection (61): интерфейс с выборкой определён по трафику", +"if.capture_only": "Сверка интерфейсов сравнивает потоки со счётчиками интерфейсов устройств sFlow, NetFlow и IPFIX. У локального захвата с сетевой карты этой машины нет интерфейсов и счётчиков устройства, поэтому сравнивать здесь нечего." } diff --git a/internal/web/static/i18n/ur.json b/internal/web/static/i18n/ur.json index 530f1f0..8426102 100644 --- a/internal/web/static/i18n/ur.json +++ b/internal/web/static/i18n/ur.json @@ -378,7 +378,7 @@ "nav.sandbox": "آف لائن pcap تجزیہ", "sb.title": "کیپچر فائلیں", "sb.sub": "لائیو ڈیٹا سے الگ pcap فائلوں کا تجزیہ", -"sb.explain": "Wireshark یا tcpdump کی کیپچر فائلیں اپ لوڈ کریں۔ یہ الگ ڈیٹابیس میں جاتی ہیں: لائیو ڈیٹا، اس کے اعداد اور نتائج متاثر نہیں ہوتے۔ «تجزیہ کریں» تمام صفحات (جائزہ، Top 66، نتائج، فلو راستے، نقشہ، فلو ریکارڈز) پر فائلیں دکھاتا ہے؛ «حذف کریں» فائلیں اور ان کا ڈیٹا مٹا دیتا ہے۔", +"sb.explain": "Wireshark یا tcpdump کی کیپچر فائلیں اپ لوڈ کریں۔ ہر فائل اپنے الگ ڈیٹا بیس میں جاتی ہے: لائیو ڈیٹا، اس کے اعداد اور نشاندہیاں متاثر نہیں ہوتیں۔ کسی فائل کا ”تجزیہ کریں“ دبانے پر ہر صفحہ (جائزہ، Top 66، نشاندہیاں، فلو راستے، نقشہ، فلو ریکارڈ) صرف وہی فائل دکھاتا ہے؛ اوپر کی پٹی میں فائل بدلیں۔ ”حذف کریں“ فائل اور اس کا ڈیٹا ہٹا دیتا ہے۔", "sb.col_file": "فائل", "sb.col_size": "سائز", "sb.col_packets": "پیکٹ", @@ -514,5 +514,6 @@ "if.peer_note": "مخالف سرے کا انٹرفیس: سیمپل نہیں، صرف اس ڈیوائس کے سیمپل والے انٹرفیس سے گزری ٹریفک", "src.sampled_if": "سیمپل انٹرفیس: {v}", "src.dir_yes": "flowDirection (61) کے ساتھ", -"src.dir_no": "flowDirection (61) کے بغیر: سیمپل انٹرفیس ٹریفک سے اخذ" +"src.dir_no": "flowDirection (61) کے بغیر: سیمپل انٹرفیس ٹریفک سے اخذ", +"if.capture_only": "انٹرفیس ملان sFlow، NetFlow اور IPFIX آلات کے فلو کا انٹرفیس کاؤنٹرز سے موازنہ کرتا ہے۔ اس مشین کے نیٹ ورک کارڈ پر لوکل کیپچر میں آلے کے انٹرفیس یا کاؤنٹر نہیں ہوتے، اس لیے یہاں موازنے کو کچھ نہیں۔" } diff --git a/internal/web/static/i18n/zh.json b/internal/web/static/i18n/zh.json index f9e0b8c..e16bc0a 100644 --- a/internal/web/static/i18n/zh.json +++ b/internal/web/static/i18n/zh.json @@ -378,7 +378,7 @@ "nav.sandbox": "离线 pcap 分析", "sb.title": "抓包文件", "sb.sub": "在实时数据之外分析 pcap 文件", -"sb.explain": "上传 Wireshark 或 tcpdump 的抓包文件。它们进入一个单独的数据库,不影响实时数据、统计和发现。点“分析”后,所有页面(概览、Top 66、发现、流向、地图、流记录)都显示这些文件的内容;“删除”会删除文件及其数据。", +"sb.explain": "上传 Wireshark 或 tcpdump 的抓包文件。每个文件进入各自单独的数据库,不影响实时数据、统计和发现。点某个文件的“分析”,所有页面(概览、Top 66、发现、流向、地图、流记录)都只显示这一个文件;在顶部的条上可以切换文件。“删除”会删除文件及其数据。", "sb.col_file": "文件", "sb.col_size": "大小", "sb.col_packets": "包数", @@ -514,5 +514,6 @@ "if.peer_note": "对端接口:未采样,只含经过本设备采样接口的流量", "src.sampled_if": "采样接口:{v}", "src.dir_yes": "带方向字段(61)", -"src.dir_no": "不带方向字段(61),采样接口按流量推断" +"src.dir_no": "不带方向字段(61),采样接口按流量推断", +"if.capture_only": "接口对账用来对比 sFlow、NetFlow、IPFIX 设备的流量和接口计数器。本机网卡抓包没有设备接口和计数器,所以这里没有可对比的内容。" }