Pengodean ulang EEPROM: kata sandi dan mekanisme
Wawasan kunci dari bertahun-tahun diskusi teknik: kompatibilitas transceiver bukan soal firmware — melainkan string identifikasi dalam EEPROM, yang dibaca lewat I²C. Sebuah switch menolak sebuah modul semata-mata karena switch itu tidak mengenali string vendornya. Fakta tunggal ini menjelaskan praktik umum “mengodekan semuanya sebagai Cisco — itu bekerja di hampir semua tempat” dan seluruh pasar alat pengodean.
Di mana kata sandi berada
Menulis ke area memori modul yang dilindungi memerlukan kata sandi 4-byte yang dimasukkan pada alamat tetap sebelum penulisan:
| Jenis modul | Blok memori | Offset kata sandi |
|---|---|---|
| SFP / SFP+ | A2h (alamat I²C 0x51) | 0x7B–0x7E |
| QSFP / XFP | A0h | 0x7B |
Kata sandi yang umum disebutkan
| Kata sandi | Catatan |
|---|---|
00 00 10 11 | default MSA — hal pertama yang perlu dicoba |
00 00 00 00, FF FF FF FF | default yang sering dijumpai |
9B B0 3D FA | dijumpai pada sejumlah modul |
4F 43 50 00 | ASCII “OCP” |
Modul QSFP-DD dari sebagian vendor dikirim dengan default tetap milik mereka sendiri, dan beberapa modul berbasis mikroprosesor memakai kata sandi variabel yang berubah-ubah — jebakan bagi siapa pun yang mencoba brute force.
Mengapa brute force bukan jawabannya
Kata sandi level-produsen yang menjaga seluruh peta memori memerlukan waktu sekitar 100+ hari untuk di-brute-force; bahkan kata sandi ASCII level-host memerlukan waktu hingga sekitar tiga hari. Rute yang praktis adalah basis data kode dan kata sandi yang sudah diketahui, yang direkam dari modul asli — di sinilah letak nilai sesungguhnya dari sebuah alat pengodean, bukan pada perangkat keras I²C-nya (yang sederhana).
Jebakan programmer DIY
- Programmer CH341A yang murah tidak menghitung checksum SFP. Menulis sebuah image tanpa CC_BASE/CC_EXT yang valid menghasilkan modul yang akan ditolak switch. Anda memerlukan tool yang menghitung ulang checksum secara otomatis.
- Sebagian switch hanya menulis ke alamat 0x50, sehingga kata sandi di 0x51 tidak dapat dijangkau dari switch itu sendiri — diperlukan papan programmer yang sesuai.
- Pin write-protect EEPROM — sebagian pabrik mengikat WP ke Vcc sehingga modul terkunci dari penulisan di lapangan.
Kasus dari lapangan
- Modul yang dikodekan sebagai satu vendor tidak mau melakukan autonegosiasi pada switch vendor lain; setelah dikodekan ulang ke string vendor milik switch itu sendiri, modul langsung naik.
- Sebagian vendor optik memang sengaja mengirim modul tanpa kode (uncoded), dengan asumsi pembeli akan mengodekannya untuk platform tujuan.
- Modul DWDM disetel ke panjang gelombangnya melalui antarmuka manajemen yang sama dengan yang dipakai untuk pengodean.
Melakukannya di CodingBox
- Baca modulnya; modul otomatis disimpan ke code database dan sebuah backup diambil sebelum penulisan apa pun.
- Atur alamat tabel, alamat kata sandi, dan nilai kata sandi di Memori yang dilindungi tulis & kata sandi — kata sandi yang sudah diketahui dari basis data diterapkan secara otomatis.
- Edit bidang vendor, part number, dan bidang identitas lainnya di EEPROM editor. CC_BASE dan CC_EXT dihitung ulang untuk Anda.
- Tulis halaman yang dipilih, lalu baca kembali untuk verifikasi. Periksa modul pada switch dengan perintah di Memverifikasi optik.
Kodekan modul hanya untuk interoperabilitas yang menjadi hak Anda, dan ikuti kebijakan organisasi serta vendor Anda.
Aturan di balik sebuah pengodean ulang yang bersih — format bidang, bit mana yang harus diset dan checksum mana yang harus diperbaiki — ada di Bidang vendor, Kode kepatuhan, dan Checksum.
Apa yang dilakukan pabrik pada langkah yang sama, dan area mana yang menyimpan kalibrasi yang bisa rusak oleh penulisan yang ceroboh: Manufaktur & pengujian, Kontroler & firmware.
Byte mana yang menyimpan apa sebelum Anda mengedit: Peta A0h SFF-8472, Peta halaman atas SFF-8636, Peta halaman atas CMIS, Peta XFP.
Nomor part tujuan dan tata bahasanya per vendor: Nomor part OEM; apa yang diperiksa oleh setiap kelas platform setelah penulisan: Bagaimana setiap NOS memvalidasi modul.