Zapomniane hasło BIOS może uniemożliwić korzystanie z laptopa, nawet gdy sam komputer jest w pełni sprawny. W ASUS VivoBook F541UJ-DM494T problem rozwiązano przez odczyt pamięci SPI Flash programatorem CH341A, analizę oryginalnego wsadu UEFI oraz precyzyjną modyfikację danych w obszarze NVRAM. Po operacji laptop uruchomił Windows, a w zakładce Security wszystkie hasła miały status „NOT INSTALLED”.

Kluczowe było zachowanie oryginalnego firmware. Zamiast zastępować BIOS zawartością pamięci z innego laptopa, zmieniono tylko 80 bajtów w obrazie o pojemności 8 MiB. Pozostałe elementy, w tym Intel Flash Descriptor, Intel Management Engine i dane identyfikacyjne urządzenia, pozostały nietknięte.

ASUS VivoBook F541UJ – na czym polegał problem z hasłem BIOS?

Laptop był zabezpieczony zapomnianym hasłem BIOS/UEFI. Żądanie hasła pojawiało się na wczesnym etapie uruchamiania komputera, przed startem Windows. Blokada nie oznaczała uszkodzenia dysku czy płyty głównej, lecz wynikała z aktywnego zabezpieczenia firmware.

Hasło BIOS-u może być przechowywane w pamięci nieulotnej, niezależnie od danych na dysku. Z tego powodu reinstalacja Windows lub wymiana nośnika nie rozwiązuje takiego problemu. Przywracanie ustawień domyślnych UEFI również nie musi usuwać hasła.

Zdecydowano się na odczyt pamięci BIOS przez zewnętrzny programator, wykonanie bezpiecznych kopii oraz analizę struktur odpowiedzialnych za konfigurację zabezpieczeń.

Identyfikacja modelu ASUS F541UJ-DM494T

Etykieta na obudowie pozwoliła ustalić dokładny model komputera: ASUS VivoBook F541UJ-DM494T, wyprodukowany w lipcu 2017 roku. Dokumentacja serwisowa dla zbliżonej konfiguracji wskazywała płytę X541UVK REV. 2.0; jej rewizja stanowiła punkt odniesienia i nie została niezależnie potwierdzona z nadruku PCB.

Parametr Wartość
Model ASUS VivoBook F541UJ-DM494T
Rodzina F541U
Produkcja Lipiec 2017
Procesor Intel Core i3-6006U, 2,0 GHz
Pamięć RAM 4 GB
BIOS/UEFI American Megatrends, wersja 304
Pamięć firmware Winbond W25Q64FVSSIG
Pojemność pamięci 8 MiB

Firmware oparto na rozwiązaniu AMI UEFI. Miało to znaczenie w późniejszej identyfikacji zmiennych zapisanych w pamięci NVRAM.

Lokalizacja pamięci Winbond W25Q64FV

Po rozebraniu laptopa i wyjęciu płyty głównej zlokalizowano szeregowy układ SPI Flash w obudowie SOIC8. Na jego powierzchni odczytano oznaczenie Winbond 25Q64FVSIG, odpowiadające wariantowi W25Q64FVSSIG.

Podstawowe parametry układu:

  • Pojemność 64 Mbit, czyli 8 388 608 bajtów.
  • Napięcie zasilania 2,7-3,6 V, nominalnie 3,3 V.
  • Interfejs SPI.
  • Obudowa SOIC8 z ośmioma wyprowadzeniami.
  • Strony programowania po 256 bajtów.

Pamięć była dostępna dla klipsa SOIC8, więc w tym egzemplarzu nie trzeba było jej wylutowywać. Przed podłączeniem przewodów konieczne było ustalenie położenia pinu 1, oznaczonego wgłębieniem na obudowie.

CH341A i AsProgrammer – przygotowanie do odczytu

Instalacja CH341A

Instalacja CH341A

Do pracy wykorzystano programator USB CH341A z taśmą i klipsem SOIC8 oraz aplikację AsProgrammer. Dodatkowo użyto komputera serwisowego z Windows i środowiskiem WSL, w którym można było porównywać pliki binarne oraz sprawdzać ich sumy SHA-256.

Przed kontaktem programatora z płytą odłączono zasilanie laptopa. Przy tego typu pracach należy także odłączyć akumulator i zweryfikować napięcie podawane na układ SPI. Niektóre starsze wersje CH341A mają linie sygnałowe pracujące na niewłaściwych poziomach; samo wyjście 3,3 V nie gwarantuje bezpiecznej komunikacji.

Odczyt pamięci pozostającej na płycie głównej może być dodatkowo utrudniony przez połączenia z innymi układami. Stabilny kontakt klipsa i co najmniej dwa niezależne odczyty są zatem bardzo ważne.

Odczyt BIOS-u i wykonanie dwóch kopii

W AsProgrammer wybrano układ W25Q64FV i odczytano pełną zawartość pamięci dwukrotnie. Otrzymano pliki W25Q64FVSSIG.bin oraz W25Q64FVSSIG1.bin. Obydwa miały rozmiar 8 388 608 bajtów, zgodny z fizyczną pojemnością pamięci.

Rozmiary sprawdzono w WSL poleceniem:

wc -c *.bin

Wynik zawierał trzy osobne linie:

8388608 W25Q64FVSSIG.bin
8388608 W25Q64FVSSIG1.bin
16777216 total

Następnie porównano zawartość plików bajt po bajcie:

cmp -s W25Q64FVSSIG.bin W25Q64FVSSIG1.bin && echo "BIOS IDENTYCZNY - OK" || echo "ROZNICE W DUMPACH"

Wynik:

BIOS IDENTYCZNY - OK

Dwa identyczne odczyty były mocną przesłanką, że komunikacja SPI przebiegła prawidłowo. Dodatkowo obliczono sumę SHA-256 oryginalnego obrazu:

dd69167d5b6ca23e3d6be38e7e0303bdaf9d00651bf57a20c0ee4be88a93613b

Niezmienioną kopię oryginalnej pamięci zabezpieczono przed dalszą analizą. Zachowanie takiego pliku daje możliwość odtworzenia pierwotnego stanu w przypadku nieudanego programowania.

Analiza struktury firmware ASUS F541UJ

Analiza obrazu SPI wykazała obecność deskryptora Intel Flash, regionu Intel Management Engine oraz właściwego regionu BIOS z wolumenami UEFI. Był to pełny zrzut pamięci, a nie standardowy pakiet aktualizacyjny udostępniany przez producenta.

Obszar pamięci Zakres w obrazie Rozmiar
Intel Flash Descriptor 0x000000-0x000FFF 4 KiB
Intel ME 0x001000-0x1FFFFF 2044 KiB
BIOS 0x200000-0x7FFFFF 6 MiB

Sygnatura deskryptora została rozpoznana pod adresem 0x10. Umożliwiło to rozdzielenie regionów i skupienie analizy na danych konfiguracyjnych BIOS-u.

To ważne, ponieważ plik aktualizacji BIOS-u pobrany ze strony producenta nie zawsze zawiera wszystkie regiony kości SPI ani dane przypisane do konkretnego egzemplarza. Wgranie nieodpowiedniego obrazu może powodować problemy z rozruchem lub utratę informacji identyfikacyjnych.

NVRAM i zmienna AMITSESetup

W regionie BIOS zidentyfikowano wolumen UEFI zawierający rekordy AMI NVAR. Analizowany obszar obejmował zakres:

0x220000-0x23FFFF

W jego obrębie znajdował się aktywny rekord o nazwie AMITSESetup, rozpoczynający się pod adresem:

0x22A7A5

Zawartość tego rekordu obejmowała dwa identyczne, niezerowe bloki danych, każdy o długości 40 bajtów. Były one powiązane z mechanizmem haseł UEFI. Dla porównania odpowiednie bloki we wbudowanych strukturach ustawień domyślnych były wyzerowane.

Nie oznacza to, że hasło zostało odzyskane w postaci tekstowej. Zidentyfikowano dane wykorzystywane przez mechanizm zabezpieczeń firmware. Ich dokładna interpretacja może różnić się zależnie od wersji AMI UEFI i konfiguracji producenta.

Minimalna modyfikacja NVRAM – 80 bajtów

Zamiast wymieniać całą zawartość BIOS-u, przygotowano zmodyfikowany obraz tego samego, oryginalnego wsadu. Zmieniono wyłącznie dwa bloki związane z aktywnymi danymi haseł w rekordzie AMITSESetup.

Zmodyfikowany zakres opisują trzy niezależne wartości:

Początek: 0x22A7BC
Koniec: 0x22A80B
Długość: 80 bajtów

Bajty tego obszaru ustawiono na 00. Nie zmieniano nagłówka rekordu, jego nazwy, atrybutów ani pozostałych danych w NVRAM. Ostatni bajt struktury, znajdujący się poza zmienianym zakresem, zachował wartość 01.

Dzięki temu bez zmian pozostały deskryptor Intel Flash, Intel ME, kod UEFI i pozostałe dane laptopa. Plik wynikowy nazwano ASUS_F541UJ_AMITSESetup_clear.bin.

Nowy obraz nadal miał 8 388 608 bajtów. Porównanie go z oryginałem wykazało dokładnie 80 zmienionych bajtów, wszystkie w jednym ciągłym zakresie. Skontrolowano również sumy nagłówków wolumenów UEFI; pozostały poprawne.

Suma SHA-256 zmodyfikowanego obrazu:

66e6696ad232b65d992289f3e3251f7a5a5118c00073e944ebb1a5f562ddc746

Podane adresy pochodzą z jednego konkretnego obrazu BIOS-u. Nie są uniwersalnym wzorcem dla wszystkich ASUS-ów ani nawet dla wszystkich wydań firmware F541UJ.

Wgrywanie zmodyfikowanego BIOS-u przez AsProgrammer

Po analizie i kontroli pliku ponownie użyto programatora CH341A oraz AsProgrammer. Wybrano pamięć W25Q64FV i wczytano zmodyfikowany plik BIOS-u.

Uruchomiono programowanie z weryfikacją. Dziennik programu zakończył się następującymi komunikatami:

Programming memory (with verification)...
Done
Execution time: 00:02:54

Cała operacja trwała 2 minuty i 54 sekundy. Brak błędu weryfikacji oznaczał, że program nie wykrył niezgodności zapisanej pamięci z obrazem przeznaczonym do programowania.

Nie należy pomijać weryfikacji po zapisie. Nawet niewielki błąd zawartości firmware może uniemożliwić prawidłowy rozruch laptopa.

Pierwsze uruchomienie po naprawie

Po zakończeniu programowania ponownie uruchomiono laptop. ASUS przeszedł procedurę POST i prawidłowo uruchomił system Windows. Był to pierwszy praktyczny dowód, że zmodyfikowany firmware nie zakłócił podstawowej inicjalizacji sprzętu.

Następnie przy uruchamianiu wciśnięto klawisz F2, aby wejść do ASUS BIOS Utility. W trybie Advanced Mode na ekranie Main widniała informacja:

Access Level: Administrator

Oznaczało to pełny dostęp do ustawień BIOS-u. Sam dostęp do interfejsu nie rozstrzygał jednak jeszcze, czy hasło zostało wyczyszczone. Potrzebna była weryfikacja w zakładce Security.

Zakładka Security – potwierdzenie usunięcia hasła

W ustawieniach zabezpieczeń BIOS-u otrzymano następujący stan:

Opcja Wynik
Administrator Password Status NOT INSTALLED
User Password Status NOT INSTALLED
HDD Password Status NOT INSTALLED

Statusy potwierdziły, że firmware nie wykrywa aktywnego hasła administratora ani użytkownika. Dodatkowo BIOS wyświetlał brak hasła dysku. Są to jednak odrębne zabezpieczenia i nie należy utożsamiać ich z szyfrowaniem danych, np. BitLocker.

W tym przypadku naprawa zakończyła się powodzeniem: laptop uruchamiał Windows, umożliwiał dostęp do ustawień firmware na poziomie Administrator, a w zakładce Security wszystkie hasła były oznaczone jako „NOT INSTALLED”.

Dlaczego nie wykorzystano gotowego wsadu z internetu?

W internecie można znaleźć wiele plików BIOS przeznaczonych dla podobnych płyt głównych. Nie zawsze wiadomo jednak, czy odpowiadają dokładnej wersji sprzętowej i jakie indywidualne dane zawierają.

Pełna pamięć SPI może przechowywać nie tylko kod UEFI, ale również informacje charakterystyczne dla danego urządzenia, konfigurację Intel ME i dane identyfikacyjne. Wgranie całego obrazu z obcego laptopa może prowadzić do niezgodności sprzętowych, zmiany danych urządzenia lub braku rozruchu.

W opisywanym ASUS-ie zachowano więc oryginalny dump i wykonano minimalną modyfikację tylko jednego zakresu NVRAM. Takie podejście ograniczyło zakres ingerencji i pozwoliło precyzyjnie zweryfikować każdą zmianę.

Czy programator CH341A usuwa każde hasło BIOS?

Nie. CH341A jest programatorem pamięci, a nie uniwersalnym narzędziem do usuwania haseł. Wynik zależy od konstrukcji konkretnej płyty, wersji firmware i sposobu przechowywania zabezpieczeń.

W części laptopów dane haseł znajdują się w SPI Flash, w innych mogą być związane z kontrolerem EC/KBC, osobnym EEPROM-em lub dodatkowymi mechanizmami ochrony. Nie należy więc kopiować opisanych adresów ani kasować całego obszaru NVRAM bez osobnej analizy.

Prace powinny być wykonywane wyłącznie przy urządzeniach, do których ma się odpowiednie uprawnienia, z zachowaniem pełnej i sprawdzonej kopii oryginalnego firmware.

Jak ograniczyć ryzyko podczas naprawy BIOS-u?

Do najważniejszych zasad należą poprawna identyfikacja pamięci SPI, ustalenie bezpiecznego napięcia, odłączenie zasilania laptopa, wykonanie co najmniej dwóch zgodnych odczytów, zachowanie oryginalnego obrazu i kontrola wszystkich zmian przed ponownym programowaniem.

Po zapisie należy wykonać weryfikację zawartości pamięci oraz sprawdzić POST, dostęp do BIOS-u, ustawienia zabezpieczeń i uruchamianie systemu operacyjnego. Dopiero test na fizycznym sprzęcie pozwala potwierdzić rezultat.

Przypadek ASUS VivoBook F541UJ pokazuje, że skuteczne przywrócenie dostępu do firmware nie musi wymagać wymiany kości ani zastępowania całego BIOS-u. W tej naprawie wystarczyła analiza oryginalnego obrazu i precyzyjna modyfikacja 80 bajtów, potwierdzona następnie prawidłowym działaniem laptopa.

Źródła:


mgr Bartłomiej_Speth

Absolwent wydziału Fizyki Uniwersytetu im. Adama Mickiewicza w Poznaniu na kierunku Fizyka z informatyką. Miłośnik komputerów, sprzętu komputerowego oraz otwartego oprogramowania. Specjalizuje się w budowie, naprawach, modyfikacjach laptopów jak i jednostek stacjonarnych. Zapalony PC'towiec od momentu, w którym otrzymał swój pierwszy komputer z procesorem 80286.

0 komentarzy

Dodaj komentarz

Symbol zastępczy awatara

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *