Przekodowanie EEPROM: hasła i mechanika · Typowe problemy i rozwiązania · Transceivery optyczne i kable · Dokumentacja · CodingBox
CodingBox Dokumentacja

Przekodowanie EEPROM: hasła i mechanika

Kluczowy wniosek z lat dyskusji inżynierskich: kompatybilność transceivera to nie firmware — to ciągi identyfikacyjne w EEPROM, odczytywane przez I²C. Przełącznik odrzuca moduł po prostu dlatego, że nie rozpoznaje ciągu producenta. Ten jeden fakt wyjaśnia powszechną praktykę „kodowania wszystkiego jako Cisco — działa niemal wszędzie” oraz cały rynek narzędzi kodujących.

Gdzie mieszkają hasła

Zapis do zabezpieczonych obszarów pamięci modułu wymaga 4-bajtowego hasła wprowadzonego pod stałym adresem przed zapisem:

Typ modułuBlok pamięciOffset hasła
SFP / SFP+A2h (adres I²C 0x51)0x7B–0x7E
QSFP / XFPA0h0x7B

Często cytowane hasła

HasłoUwagi
00 00 10 11domyślne MSA — pierwsze do wypróbowania
00 00 00 00, FF FF FF FFczęsto spotykane wartości domyślne
9B B0 3D FAspotykane w wielu modułach
4F 43 50 00ASCII „OCP”

Moduły QSFP-DD niektórych producentów są dostarczane z własnymi stałymi wartościami domyślnymi, a kilka modułów opartych na mikroprocesorze używa zmiennego hasła, które się zmienia — pułapka dla każdego, kto próbuje ataku siłowego.

Dlaczego atak siłowy nie jest rozwiązaniem

Złamanie hasła na poziomie producenta, które chroni całą mapę pamięci, atakiem siłowym zajmuje rzędu 100+ dni; nawet hasło ASCII na poziomie hosta zajmuje do około trzech dni. Praktyczną drogą jest baza danych znanych kodów i haseł przechwyconych z oryginalnych modułów — to w niej tkwi prawdziwa wartość narzędzia kodującego, a nie w sprzęcie I²C (który jest prosty).

Pułapki samodzielnych programatorów

  • Tanie programatory CH341A nie obliczają sumy kontrolnej SFP. Zapisanie obrazu bez prawidłowych CC_BASE/CC_EXT daje moduł, który przełącznik odrzuci. Potrzebne jest narzędzie, które automatycznie przelicza sumy kontrolne.
  • Niektóre przełączniki zapisują tylko pod adresem 0x50, więc hasła pod 0x51 nie da się dosięgnąć z samego przełącznika — potrzebna jest właściwa płytka programatora.
  • Pin zabezpieczenia przed zapisem EEPROM — niektóre fabryki podpinają WP do Vcc, więc moduł jest zablokowany przed zapisem w terenie.

Przypadki z terenu

  • Moduły zakodowane pod jednego producenta nie negocjowały automatycznie na przełączniku innego; przekodowane na własny ciąg producenta przełącznika, podniosły się natychmiast.
  • Niektórzy producenci optyki celowo dostarczają moduły niezakodowane, oczekując, że kupujący zakoduje je pod docelową platformę.
  • Moduły DWDM są strojone na długość fali przez ten sam interfejs zarządzania, który służy do kodowania.

Jak to zrobić w CodingBox

  1. Odczytaj moduł; zostaje on automatycznie zapisany w code database, a przed każdym zapisem tworzona jest kopia zapasowa.
  2. Ustaw adres tabeli, adres hasła i wartość hasła w Pamięć zabezpieczona przed zapisem i hasła — znane hasła z bazy danych są stosowane automatycznie.
  3. Edytuj producenta, numer katalogowy i inne pola danych identyfikacyjnych w EEPROM editor. CC_BASE i CC_EXT są przeliczane automatycznie.
  4. Zapisz wybrane strony, a potem odczytaj ponownie, aby zweryfikować. Sprawdź moduł na przełączniku poleceniami z Weryfikacji optyki.

Koduj moduły tylko dla interoperacyjności, do której masz prawo, i przestrzegaj polityk swojej organizacji oraz producentów.

Reguły stojące za czystym przekodowaniem — formaty pól, które bity ustawić i które sumy poprawić — są w Pola producenta, Kody zgodności i Sumy kontrolne.

Co na tym samym etapie robi fabryka i które obszary trzymają kalibrację, którą nieostrożny zapis może zniszczyć: Produkcja i testy, Kontroler i firmware.

Który bajt co zawiera, zanim zaczniesz edytować: Mapa A0h SFF-8472, Mapa górnych stron SFF-8636, Mapa górnych stron CMIS, Mapa XFP.

Docelowe numery katalogowe i ich gramatyka u poszczególnych producentów: Numeracja części OEM; co sprawdza każda klasa platformy po zapisie: Jak każdy NOS weryfikuje moduł.


Jeśli znajdziesz nieścisłość lub błąd w tym materiale, zaznacz odpowiedni fragment i naciśnij Ctrl+Enter, aby .