Перекодировка 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 пересчитаются сами.
- Запишите выбранные страницы, затем прочитайте обратно для проверки. Проверьте модуль на коммутаторе командами из Проверки оптики.
Кодируйте модули только ради совместимости, на которую у вас есть право, и следуйте политикам вашей организации и вендоров.
Правила чистой перекодировки — форматы полей, какие биты ставить и какие суммы править — в Полях вендора, Кодах соответствия и Контрольных суммах.
Что завод делает на том же шаге и в каких областях лежит калибровка, которую может уничтожить неосторожная запись: Производство и тестирование, Контроллер и прошивка.
Какой байт что хранит, прежде чем править: Карта SFF-8472 A0h, Карта верхней страницы SFF-8636, Карта верхних страниц CMIS, Карта XFP.
Целевые партномера и их грамматика по вендорам: Партномера OEM; что проверяет каждый класс платформ после записи: Как каждая NOS проверяет модуль.