Programlayıcı, temiz dump veren bir SFP+'ta WRITE FAIL döndürüyor: ölü EEPROM mu, yoksa yazmayı engelleyen bir şey mi?
Çoğu ay müşteri host'ları için küçük bir modül partisini yeniden kodluyoruz, egzotik bir şey değil: orijinal sayfayı oku, host'un istediği vendor string'i yaz, modülü switch'e tak ve devam et. Mevcut partiden bir modül, mükemmel geri okunurken her yazmayı reddediyor, ve onu çöpe atmadan önce denenecek başka bir şey kalıp kalmadığını bilmek isterim.
Tezgah:
- SFP breakout board'lu CH341 sınıfı bir USB programlayıcı
- SFP+ modül, diagnostik kapasiteli, soğukken ve bir güç döngüsünden sonra düzgün okuyor
- aynı düzenek bir saat önce aynı tepsiden üç modül daha yazmıştı
Write'a bastığım anda aracın yazdırdığı:
WRITE FAIL
Bunun hemen ardından yeniden okumak bana orijinal sayfayı byte byte geri veriyor, yani hiçbir şey inmemiş, kısmen bile değil.
Denediklerim:
- modülü yeniden oturttum ve breakout board'u bir yedekle değiştirdim
- tüm sayfa yerine önemsemediğim bir bölgeye tek bir byte yazdım, sonuç aynı
- okumanın birkaç güç döngüsü boyunca kararlı olduğunu doğruladım, yani kablolama sınırda değil
Temiz okuyan ama hiçbir zaman yazma kabul etmeyen bir modül basitçe yıpranmış mı, yoksa modülün kendisinde kasıtlı olarak yazmaları reddedebilen bir şey mi var?
Comments 5
Temiz okuyor, yazmalar reddediliyor, sonrasında orijinal sayfa bozulmamış. Yıpranmış bir EEPROM normalde böyle davranmaz. Ölü hücreler sana kötü bir geri okuma ya da yazmanın yarısını almış bir sayfa verir, her şey el değmemiş halde düzgün bir ret değil.
Ve vendor alanının dışındaki o tek byte bile geri sekince, bu chip üzerinde kötü bir bölge değil, parçanın yazmaları toptan geri çevirmesi. Herhangi bir şeye karar vermeden önce netleştirmeye değer iki şey var. Birincisi, modülü gerçekte kim üretti: tepside ne yazıyorsa ona göre değil, zaten dump ettiğin sayfadaki vendor string'e göre git. İkincisi, güç geldiği anda, bus üzerinde başka hiçbir şey modülle konuşmadan bir yazma ateşlersen inip inmediği. Muhtemel açıklama bu cevaplara göre değişiyor, ve bunlardan biri hiç arıza bile değil.
Bu, hasardan çok parola korumasına benziyor. SFF-8472, diagnostik kapasiteli bir modülün herhangi bir yazmayı kabul etmeden önce 4 byte'lık bir parola istemesine izin veriyor. Hiçbir şey gönderme, ya da yanlışını gönder, modül yazmayı bir hatayla yanıtlarken okumalar ardına kadar açık kalır - ki bu tam olarak senin sayfa değişmeden geri gelen WRITE FAIL'in. Ölmekte olan bir parçanın belirtisi değil, parçanın bir özelliği.
Bu senin tezgahın için ne anlama geliyor: bunu bilen bir programlayıcı sana bir üretici ya da host parolası girmene izin verir, ve daha iyileri bilinmeyen bir parolayı brute force ile deneyip yazmadan sonra checksum'ları senin için yeniden hesaplar. CH341 sınıfı bir düzenekte checksum otomasyonu hiç yok, yani paroladan geçtikten sonra bile checksum'ları kendin düzeltmek zorundasın, yoksa sayfası sana doğru görünen ama host'un yine de reddettiği bir modülle kalırsın.
Her zamanki çekince: bunu bir avuç modülde yaşadım ve parola yolu orada işe yaradı, o yüzden herhangi bir şeyi çöpe atmadan önce kendi parçanda dene.
Buna ekleyeyim: bazı üreticiler için parolalar gerçekten gizli değil. Dolaşımda 0x00001011 gibi girdiler ve SFPX ile QSFP gibi düz string'lerle Ubiquiti transceiver parolalarının paylaşılan derlemeleri var, yani modül o ekosistemden çıktıysa, brute force'a hiç yaklaşmadan önce bilinenleri denemek sana beş dakikaya mal olur.
Ve jenerik bir programlayıcıyla boğuşmak yerine tüm akışı zaten bilen bir araç istiyorsan, insanların uzandığı ucuz seçenek UACC-SFP-WIZARD. Bir laboratuvar cihazı değil, ama modül tarafını düzgün hallediyor.
İlgili bir konu, Huawei S5731 ve S6730 host'ları ile eski bir HP 6120XG için modül yeniden kodlamaktan. Zayıf halka modül değil de kafes ya da breakout olduğunda, insanlar modül üzerindeki 4 ve 7 numaralı pinlere - ki bunlar I2C SDA ve SCL hatları - doğrudan lehim yapıp kafesi tamamen resmin dışına atarak EEPROM'u sürüyor. Çirkin, ve bunu sadece kaybetmeye hazır olduğun parçalarda yapıyorsun, ama bütün bir temas sorunu sınıfını ortadan kaldırıyor.
Burada bundan geçen parçalar: Finisar FTLX8571D3BCV ve FTLX8574D3BCV, Intel SFP+ LR ve SR modülleri, SNR-SFP+W73-3 ve SNR-SFP+W37-3, ayrıca bir HP J9150A.
Senin durumunda okuma güç döngüleri boyunca zaten kaya gibi sağlam, yani temas senin sorunun değil. Önce parola tarafını kovala.
Parola muhtemel cevap, ama işi "parolayı yaz ve bitir"de bırakma, çünkü hemen ardından insanları iki şey ısırıyor.
Birincisi, bazı parçalarda modül güçsüz bırakıldıktan sonra giriş tekrar isteniyor, yani sırayla birkaç sayfa yazan bir script, bir unlock'un tüm oturumu kapsadığını varsaymak yerine onu tekrar girmeye hazır olmalı.
İkincisi, checksum'lar. CH341 sınıfı bir programlayıcıyla bunları elle yeniden hesaplarsın. Bayat bırakırsan modül yine de düzgün okur, aracın başarı bildirir, ve host modülü yine de sessizce reddeder, bu noktada herkes donanımı suçlamaya geri döner. O modül bir müşteri switch'ine girmeden önce sayfayı geri oku ve toplamları doğrula.