CodingBox Документация

Перекодировка EEPROM: пароли и механика

Ключевой инсайт многолетних инженерных дискуссий: совместимость трансивера — это не firmware, а строки идентификации в EEPROM, читаемые по I²C. Коммутатор отвергает модуль просто потому, что не узнаёт строку вендора. Один этот факт объясняет распространённую практику «прошиваем всё в Cisco — так работает почти везде» и весь рынок инструментов кодирования.

Где живут пароли

Запись в защищённые области памяти модуля требует 4-байтового пароля, вводимого по фиксированному адресу перед записью:

Тип модуляБлок памятиСмещение пароля
SFP / SFP+A2h (I²C-адрес 0x51)0x7B–0x7E
QSFP / XFPA0h0x7B

Часто упоминаемые пароли

ПарольПримечание
00 00 10 11Дефолт MSA — первое, что стоит попробовать
00 00 00 00, FF 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. Прочитайте модуль; он автоматически сохраняется в базу кодов,

а перед любой записью снимается резервная копия.

  1. Задайте адрес таблицы, адрес пароля и значение пароля в

Защищённой памяти и паролях — известные пароли из базы применяются автоматически.

  1. Отредактируйте вендора, парт-номер и другие поля идентификации в

редакторе EEPROM. CC_BASE и CC_EXT пересчитаются сами.

  1. Запишите выбранные страницы, затем

прочитайте обратно для проверки. Проверьте модуль на коммутаторе командами из Проверки оптики.

Кодируйте модули только ради совместимости, на которую у вас есть право, и следуйте политикам вашей организации и вендоров.

Источники

  • GitHub — hfuller/transceiver-notes: пароли, адреса, железо
  • Habr / Selectel — диагностика и перепрошивка оптики
  • forum.nag.ru — прошивка CWDM, образы SFP
  • ServeTheHome — тред «Transceiver programmer»; форум Reveltronics о паролях SFP