ByteScope

PCAP Viewer

打開擷取檔,一個封包一個封包讀——檔案不會離開這個分頁。

檔案不會離開你的瀏覽器 — 全部在本機處理。

把 .pcap 或 .pcapng 丟進來

也可以點一下選檔——在這個分頁裡讀,不會上傳

這個工具不做哪些事

什麼都不會上傳。檔案在這個分頁裡讀取,交給 Web Worker 解析——打開擷取檔完全不會發出網路請求,你可以開著開發者工具看它一直是空的。

  • TLS 的應用層資料不解密。明文流動的握手欄位一律照列:SNI、ALPN、提出與協商的版本、cipher suite,以及憑證的主體、簽發者、有效期間與 SAN。
  • HTTP/2 只有在明文(h2c 或 prior knowledge)時讀得到;跑在 TLS 上就讀不到。
  • QUIC 只有 Initial 封包能解,因為它的金鑰由公開值推導出來(RFC 9001)。Handshake 與 1-RTT 不解,所以 HTTP/3 的請求與回應內容讀不到——這頁能說「這是 HTTP/3」並列出 ClientHello 的 SNI 與 ALPN,就到這裡。
  • 未支援的協定只顯示原始 payload,工具不會用猜的。
  • v1 解析的鏈結層:Ethernet、802.1Q/QinQ VLAN、Linux SLL / SLL2、raw IP、Null/Loopback。Frame Relay、Token Ring、FDDI 的擷取檔打得開但不解析;遇到這種情況,頁面會寫出鏈結類型的名字,而不是丟一棵空樹給你。

關於這個工具

.pcap.pcapng 丟進來,你會拿到分析封包時真正在用的三個面板:虛擬滾動的封包列表(No. / Time / Source / Destination / Protocol / Length / Info)、選中封包的協定解析樹,以及和樹雙向連動的十六進位 / ASCII 面板。點樹上的欄位,就只有它那幾個位元組會亮;點十六進位面板裡的一個位元組,涵蓋它的最內層欄位會展開並被選起來。像 TCP 旗標、IP 分片旗標這種住在位元組內部的值,除了把所在位元組亮起來,還會把位元位置畫出來——只給你一個位元組並不算回答。

不上傳不是這個工具的賣點,是它的前提。擷取檔就是那個網路的地圖:內部定址、DNS 查詢與 TLS SNI 裡的主機名稱、憑證主體、User-Agent,遇到明文協定連帳密都在裡面。別家線上檢視器要你把這些丟到他們的伺服器。這裡是分頁自己讀檔、交給 Web Worker、在記憶體裡解析——根本沒有上傳的端點,你可以開著開發者工具驗證:打開一個擷取檔,一個網路請求都不會出現。

容器層讀得懂傳統 libpcap 的四種 magic(小端 / 大端 × 微秒 / 奈秒),也讀 pcapng 的多個介面區塊、EPB / SPB、註解與名稱解析區塊。摘要卡會列出格式、位元組序、版本、每個介面的鏈結類型與 snaplen、封包數、擷取的時間範圍,以及容器產生的每一條警告和造成它的封包編號。檔案被截斷或損壞不會直接陣亡:讀得到的封包照樣顯示,壞掉的地方以警告回報,而不是丟一頁錯誤給你。

解析範圍在鏈結層是 Ethernet、802.1Q / QinQ VLAN、Linux SLL / SLL2、raw IP 與 Null/Loopback;往上是 ARP、含選項與分片重組的 IPv4、含擴充標頭的 IPv6、ICMPv4、含 NDP 的 ICMPv6、旗標/選項/序號分析齊全的 TCP,以及 UDP;再上去是 DNS、含 chunked 與跨 segment 重組的 HTTP/1、TLS 的 record 與 handshake、明文的 HTTP/2(含 HPACK)與 QUIC。哪些東西**不會被解開**沒有藏在註腳裡,就寫在解析樹上方的誠實聲明面板。

常見問題

我的擷取檔會被上傳嗎?

不會。檔案由 FileReader 讀進來,交給同一個分頁裡的 Web Worker,在那裡解析。使用期間這頁不會發出任何網路請求,你可以開著開發者工具的 Network 分頁,看它一直是空的。這件事在這個工具上特別重要:擷取檔裡有你的內部拓撲、主機名稱,常常還有憑證,為了讀兩個封包就把這些交給陌生伺服器並不划算。

最大能開多大的擷取檔?

256 MiB。解析時整份檔案必須放在分頁的記憶體裡,超過這個量瀏覽器通常會直接把分頁殺掉而不是跑完,所以工具會誠實拒絕,而不是讓你卡在那裡。更大的檔先切開:editcap -c 200000 big.pcap part.pcap 會切成每 20 萬個封包一份,tcpdump -r big.pcap -w small.pcap -c 100000 取前 10 萬個封包。.pcap.gz 會在分頁裡解壓縮,同樣的上限套在解壓縮後的大小。

它能解密 TLS 或 HTTPS 嗎?

不能,也不會假裝能。沒有工作階段金鑰,TLS 的應用層資料就是密文,而且維持是密文。明文流動的東西一律照列:record 層、handshake、SNI、ALPN 清單、提出與協商的版本與 cipher suite,以及憑證的主體、簽發者、有效期間與 SAN。HTTP/2 只有在明文(h2c 或 prior knowledge)時讀得到;跑在 TLS 上的 h2 讀不到。QUIC 只有 Initial 封包能解(金鑰由 RFC 9001 的公開值推導出來),所以這頁能告訴你「這是 HTTP/3」並列出 ClientHello 的 SNI 與 ALPN,就到這裡為止。

pcapng 可以夾帶 TLS 金鑰,它會拿來用嗎?

會回報,但不會用。pcapng 有 Decryption Secrets Block,用設了 SSLKEYLOGFILE 的瀏覽器抓下來的檔案,可能把工作階段金鑰包在檔案裡——Wireshark 會拿它解密。這個工具會讀這個區塊,告訴你檔案裡有幾組、哪些型別的金鑰,然後什麼都不解。手上握著金鑰卻只說「這段是加密的」,或是對檔案裡明擺著的金鑰裝作沒看到,兩種都不誠實;回報完就停手才是 v1 該有的立場。

檔案打開了,可是解析樹是空的,為什麼?

幾乎可以確定是這一版不解析的鏈結層。v1 處理 Ethernet、802.1Q / QinQ、Linux SLL / SLL2、raw IP 與 Null/Loopback。Frame Relay、Token Ring、FDDI、帶 radiotap 的 802.11 和各種序列封裝在真實世界都存在,這種檔案在這裡也打得開——容器、封包列表、時間戳記、原始位元組都是真的——但解析會停在鏈結層。頁面會直接寫出鏈結類型的名稱,並說明解析停在哪裡;不給任何說明的空樹才是最不誠實的壞法。

它能取代 Wireshark 嗎?

如果只是要讀別人傳給你的擷取檔,多半可以,而且不用裝任何東西,也不用相信誰家的上傳表單。即時抓包則完全比不了:瀏覽器沒有抓封包的 API,這個工具只能打開別的東西錄下來的檔案。Wireshark 還有給金鑰後的解密、橫跨數千個解析器的專家分析,以及 Lua 擴充。這頁瞄準的是日常的那一半——打開檔案、找到那個封包、把位元組讀出來——而且不遮掩那一半到哪裡結束。