ByteScope

NFC Reader

線上讀 NFC 標籤,不用裝 App 就能寫。Android Chrome。只在這台手機裡。

不上傳、不記錄。標籤內容只留在這個分頁,離開就沒了。

讀取 NDEF

點了才會掃——這一頁不會自己去讀標籤。要 Android 的 Chrome、HTTPS,還要你動手。

你現在這個瀏覽器: 檢查中

nfc 權限: 檢查中

寫入 NDEF

鎖定標籤

瀏覽器能不能用

只是典型情況。請看上面 NDEFReader 的現場結果。標 ? 的格子,這裡沒有用真機查過。

APIChromeEdgeFirefoxSafari
NDEFReader (Web NFC)規格寫的是 Android Chrome(要 HTTPS 和使用者手勢)。桌面 Chrome 沒有。Edge 的 Android 這裡沒實測。?
iOS Safari/桌面沒有 Web NFC。iPhone 和桌面使用者照樣看得到說明、FAQ 和這張表。

你現在這個瀏覽器: 檢查中

關於這個工具

這一頁是線上 NFC 讀取器,也是不用裝 App 就能寫入 NFC 標籤的地方。它用 Web NFC 的 NDEFReader,在這個分頁裡跟標籤說話。不會上傳。能跑的是 Android 的 Chrome、HTTPS、而且要你點一下。iPhone 和桌面使用者照樣看得到說明、FAQ,還有一張誠實的支援表——工具不會因為你的瀏覽器沒有 API 就整頁消失。

標籤裡可以有什麼

reading 事件帶著 serialNumbermessage.records。每筆 record 有 recordTypemediaTypeiddata(DataView)、encodinglangtext 顯示文字加上 lang 和 encoding。url / absolute-url 只有 http:https:mailto:tel: 這種白名單才會做成連結——javascript:data:vbscript: 維持純文字,並標成不安全。mimemediaType 加上跟 hex editor 同一套 hex。application/vnd.wfa.wsc 是 Wi-Fi 的 WPS 憑證:SSID、認證、加密;Network Key 預設遮蔽,要點一下才顯示,並警告畫面上會出現明文密碼。unknown 和外部型別(example.com:foo)走 hex。認不出來的 bytes 一律 hex,不會猜一個型別。

寫入會覆蓋。鎖定是永久的

ndef.write(message, { overwrite: true }) 會蓋掉標籤上現有的內容。除非你已經從讀取結果匯出備份,否則舊內容救不回來。ndef.makeReadOnly() 會把標籤永久鎖死。沒有救援——沒有重設、沒有燒錄器能救。兩個動作都藏在預設關閉的危險區後面,接著是跟 fuse 寫入同一套「準備 → 確認」。鎖定還要你打字輸入 LOCK。掃描過程絕不會寫入。讀是讀,寫是寫。

還沒讀到,不是空的

手機湊上去、什麼都還沒出現,是「還沒讀到」,不是「標籤是空的」。空的 NDEF(零筆 record)是另一種結果。readingerror 是「這張標籤讀不到」。NotAllowedError 是權限或標籤已被鎖死,不是沒有標籤。permissions.query({ name: "nfc" }) 若 throw,顯示 unknown,不會寫成 denied

只有 Android Chrome

Web NFC 的規格舞台是 Android Chrome。桌面 Chrome 沒有 NDEFReader。iOS Safari 也沒有。Edge 在 Android 上這裡沒實測,格子會標未實測。能力偵測在掛載之後才做("NDEFReader" in window)。請相信上面那列現場結果,不要背版本表。

常見問題

哪些瀏覽器能在這裡讀 NFC 標籤?

Android 的 Chrome,而且要 HTTPS、還要你點一下。桌面 Chrome、Firefox、Safari(含 iPhone)沒有 Web NFC。那些瀏覽器照樣看得到說明、FAQ 和支援表——不會 early return null。

會上傳標籤裡的內容嗎?

不會。bytes 只留在這個分頁。沒有把內容打到伺服器。匯出備份是你自己存到手機裡的檔。關掉分頁,這次讀到的就沒了。

我點了掃描,什麼都沒發生。標籤是空的嗎?

不是。那是等待中:reading 事件還沒來。空的標籤是「有 reading、但沒有 record」。這兩句在這一頁不會混在一起。

makeReadOnly 做什麼?救得回來嗎?

它會把標籤永久鎖死。之後再也無法寫入。完全沒有救援。這一頁不會把這句話說軟。你得打開危險區、打字輸入 LOCK、準備、再確認。除非你打定主意讓這張標籤再也不能寫,否則不要按。

標籤上的網址是 javascript: 開頭。會變成連結嗎?

不會。只有白名單裡的 scheme 會做成 <a href>javascript:data:vbscript:、編碼變體,還有 // 開頭的 protocol-relative,都維持文字並標成不安全。標籤內容是不受信任的輸入:沒有 innerHTML,沒有 eval

標籤裡有我的 Wi-Fi 密碼。這一頁會顯示出來嗎?

Network Key 一開始是遮蔽的。點一下才顯示,並警告畫面上會出現明文密碼。匯出備份會包含它——少了密碼的備份不算備份。把那個檔當秘密保管。