CodingBox 說明文件

EEPROM 改碼:密碼與原理

多年工程討論沉澱下的核心認知:光模組兼容性不是固件問題——而是通過 I²C 讀取的 EEPROM 中的識別字元串。 交換機拒絕一個模組,僅僅是因為它不認識其中的廠商字元串。正是這個事實解釋了「把所有模組都編碼成 Cisco——幾乎哪裏都能用」這一常見做法,也解釋了整個編碼工具市場的存在。

密碼存放在哪裏

寫入模組記憶體的受保護區域,需要在寫入前把一個 4 位元組密碼寫到固定地址:

模組類型記憶體塊密碼偏移量
SFP / SFP+A2h(I²C 地址 0x51)0x7B–0x7E
QSFP / XFPA0h0x7B

常見密碼

密碼說明
00 00 10 11MSA 預設值——第一個該嘗試的
00 00 00 00FF FF FF FF常見的預設值
9B B0 3D FA在不少模組上見過
4F 43 50 00ASCII 編碼的「OCP」

部分廠商的 QSFP-DD 模組自帶獨有的固定預設密碼,還有一些基於微處理器的模組使用會變化的可變密碼——這對任何想暴力破解的人來說都是一個陷阱。

為甚麼暴力破解不是辦法

守護整個記憶體映射的廠商級密碼,暴力破解大約需要 100 多天;即便是主機級的 ASCII 密碼,也要耗時近三天。實際可行的路徑是建立一個已知代碼和密碼的資料庫,從原廠模組中採集而來——這才是編碼工具真正的價值所在,而不是 I²C 硬件本身(那部分很簡單)。

自製編程器的坑

  • 廉價的 CH341A 編程器不會計算 SFP 校驗和。 寫入一份沒有有效 CC_BASE/CC_EXT 的鏡像,得到的模組會被交換機拒絕。你需要一個能自動重新計算校驗和的工具。
  • 有些交換機只能寫入地址 0x50,因此 0x51 上的密碼從交換機本身無法觸及——需要專用的編程器板卡。
  • EEPROM 寫保護引腳——有些廠家在生產時把 WP 接到 Vcc,使模組在現場被鎖定、無法寫入。

來自現場的案例

  • 編碼成某廠商身份的模組,在另一廠商的交換機上無法自動協商;重新編碼為該交換機自身的廠商字元串後,立刻就通了。
  • 部分光模組廠商按設計出貨未編碼的模組,預期由買家自行為目標平台編碼。
  • DWDM 模組通過同一個管理介面調諧波長,與編碼用的是同一套介面。

在 CodingBox 中操作

  1. 讀取模組;它會自動保存到code database,寫入前會先取一份備份。
  2. 受保護記憶體與密碼中設定表地址、密碼地址和密碼值——資料庫中已知的密碼會自動應用。
  3. EEPROM editor 中編輯廠商、型號及其他身份欄位。 CC_BASE 和 CC_EXT 會為你自動重新計算。
  4. 寫入選定的頁面,然後讀回驗證。用 核實光模組中的命令在交換機上檢查模組。

只為你有權獲得的互操作性對模組編碼,並遵守所在組織及廠商的政策。

一次乾淨的改碼背後的規則——欄位格式、需要設定哪些位元、需要修正哪些校驗和——見 廠商欄位合規代碼校驗和

工廠在同一步驟會做甚麼,哪些區域保存著粗心的寫入會破壞的校準數據: 生產與測試控制器與固件

編輯前先弄清哪個位元組保存甚麼:SFF-8472 A0h 映射SFF-8636 高位頁面映射CMIS 高位頁面映射XFP 映射

各廠商的目標型號及其命名規則:OEM 型號;各平台在寫入後各自檢查甚麼: 各 NOS 如何校驗模組


如果您發現本文有不準確之處或錯誤,請選取相應片段並按 Ctrl+Enter,即可