Перекодировка EEPROM: пароли и механика
Ключевой инсайт многолетних инженерных дискуссий: совместимость трансивера — это не firmware, а строки идентификации в EEPROM, читаемые по I²C. Коммутатор отвергает модуль просто потому, что не узнаёт строку вендора. Один этот факт объясняет распространённую практику «прошиваем всё в Cisco — так работает почти везде» и весь рынок инструментов кодирования.
Где живут пароли
Запись в защищённые области памяти модуля требует 4-байтового пароля, вводимого по фиксированному адресу перед записью:
| Тип модуля | Блок памяти | Смещение пароля |
|---|---|---|
| SFP / SFP+ | A2h (I²C-адрес 0x51) | 0x7B–0x7E |
| QSFP / XFP | A0h | 0x7B |
Часто упоминаемые пароли
| Пароль | Примечание |
|---|---|
00 00 10 11 | Дефолт MSA — первое, что стоит попробовать |
00 00 00 00, FF FF FF FF | часто встречающиеся дефолты |
9B B0 3D FA | встречается на ряде модулей |
4F 43 50 00 | ASCII «OCP» |
QSFP-DD некоторых вендоров поставляются со своими фиксированными дефолтами, а отдельные модули на микропроцессоре используют переменный пароль, который меняется, — ловушка для тех, кто пытается перебирать.
Почему перебор — не выход
Пароль уровня производителя, закрывающий всю карту памяти, перебирается порядка 100+ дней; даже хостовый ASCII-пароль — до примерно трёх дней. Практический путь — база известных кодов и паролей, снятых с оригинальных модулей. Именно в ней, а не в I²C-железе (оно простое), реальная ценность инструмента кодирования.
Грабли самодельных программаторов
- Дешёвые программаторы CH341A не считают контрольную сумму SFP. Запись образа без
валидных CC_BASE/CC_EXT даёт модуль, который коммутатор отвергнет. Нужен инструмент с автоматическим пересчётом контрольных сумм.
- Некоторые коммутаторы пишут только по адресу 0x50, поэтому до пароля по 0x51 с
самого коммутатора не добраться — нужна полноценная плата-программатор.
- Пин защиты записи EEPROM — часть заводов подтягивает WP к Vcc, и модуль в поле
оказывается закрыт от записи.
Кейсы из практики
- Модули, закодированные под одного вендора, не поднимали автосогласование на
коммутаторе другого; перекодированные под строку вендора коммутатора — поднялись сразу.
- Некоторые вендоры оптики намеренно поставляют некодированные модули, ожидая, что
покупатель закодирует их под целевую платформу.
- DWDM-модули тюнингуются по длине волны через тот же интерфейс управления, что и
кодирование.
Как это делается в CodingBox
- Прочитайте модуль; он автоматически сохраняется в базу кодов,
а перед любой записью снимается резервная копия.
- Задайте адрес таблицы, адрес пароля и значение пароля в
Защищённой памяти и паролях — известные пароли из базы применяются автоматически.
- Отредактируйте вендора, парт-номер и другие поля идентификации в
редакторе EEPROM. CC_BASE и CC_EXT пересчитаются сами.
- Запишите выбранные страницы, затем
прочитайте обратно для проверки. Проверьте модуль на коммутаторе командами из Проверки оптики.
Кодируйте модули только ради совместимости, на которую у вас есть право, и следуйте политикам вашей организации и вендоров.
Источники
- GitHub — hfuller/transceiver-notes: пароли, адреса, железо
- Habr / Selectel — диагностика и перепрошивка оптики
- forum.nag.ru — прошивка CWDM, образы SFP
- ServeTheHome — тред «Transceiver programmer»; форум Reveltronics о паролях SFP