Proces odzyskiwania danych z dysku SSD SiliconPower S60

Data:

Tag: Case study

Autor: Patryk Mikołap

Do naszego laboratorium zgłosił się klient z problematycznym dyskiem pół przewodnikowym, czyli popularnie zwanym dyskiem SSD, a dokładnie:

Silicon Power S60

Dysk: SSD
Marka: Slicon Power
Model: S60
Pojemność: 240GB
Interfejs: SATA

Wstęp

Dysk działał w laptopie, ale nagle po prostu przestał pracować. Brak możliwości dostępu do danych na nim zawartych.
Objawy dysku – wykrywany jako PS3108S8 o pojemności 2MB, firmware / oprogramowanie S8R00000, bez numeru seryjnego.

Zanim opiszę co dzieję się z dyskiem warto wrócić do opisu producenta dysku:

Wyjątkowo trwały

Wyposażony w szybki kontroler oraz pamięć flash typu MLC NAND, S60 gwarantuje szybkość działania, stabilność i trwałość a w efekcie krótszy czas ładowania aplikacji i oszczędność Twojego czasu! Nie ważne czy pracujesz na komputerze, serfujesz po internecie czy też oglądasz filmy, możesz cieszyć się korzystając ze swojego komputera bez opóźnień.

Przeciwdziałanie uszkodzonym blokom

Jeśli dysk zawiera jeden lub więcej uszkodzonych bloków (tzw. Bad Sector), może to spowodować nieodwracalne szkody w systemie. Dysk SP Slim S60 posiada system Bad Block Management, który stale monitoruje i eliminuje uszkodzone bloki, aby utrzymać system operacyjny w dobrym stanie. To dlatego pojemność S60 widoczna w systemie operacyjnym może być nieznacznie mniejsza niż w alternatywnych produktach. Różnica ta pozwala zwiększyć bezpieczeństwo Twoich danych.
sp60 opis producenta i sklepu

Opis produktu oraz zdjęcie pochodzą ze strony xkom.pl

Tak… Bardzo trwały…

Jak to zazwyczaj bywa, marketingowy bełkot, który nie przeszedł próby czasu.

Diagnoza

Z naszej diagnozy wynika, iż doszło do uszkodzenia oprogramowania (firmware) dysku z racji degradacji komórek pamięci w miejscu, gdzie przechowywane jest wewnętrzne oprogramowanie dysku. W wyniku czego dysk nie potrafi się uruchomić w prawidłowy sposób. Podczas rozruchu następuje błąd i dysk jest uruchamiany jedynie w trybie serwisowym, tzw. Safe Mode – dlatego wykrywany jest z nazwą kontrolera – w tym przypadku Phison PS3108.

Odzyskiwanie danych będzie polegało na uruchomieniu oprogramowania wewnętrznego poprzez PC3000 z dodatkiem SSD od acelab.
Dysk jest wspierany przez oprogramowanie, tym samym mamy możliwość ingerencji w pracę dysku i zmuszenie go do oddania plików.
Następnie, jeśli zachowały się pozostałe dane potrzebne do odbudowania translacji danych, powinniśmy mieć dostęp do plików użytkownika dysku.

Proces odzyskiwania danych z dysku SSD

W pierwszej kolejności wyjmuję dysk z obudowy producenta, a następnie podłączam dysk do sprzętu PC-3000.

dysk ssd wyjęty z obudowy

Uruchamiam narzędzie do dysków SSD, wybieram dysk z rodziny Kingston z Phison PS3108 (istotny jest rodzaj kontrolera, nie producent dysku).

Wybór kontrolera w PC3000

Dysk jak widzimy zgłasza się w trybie serwisowym / safe mode.

Widok w PC3000 po wybraniu odpowiedniego kontrolera.

Status mówi sam za siebie, dysk przeszedł w tryb safe mode i brak jest dostępu do danych.

Następnie odtwarzam oprogramowanie wewnętrzne dysku, w tym przypadku w wersji 7.2 – Burner_PS3108_7.2.bin

Lista dostępnych wersji oprogramowania kontrolera.


Udało się! Dysk został już wykryty jako BURNERV1 z racji loadera, pojemność 511MB – jest to bez znaczenia w tym momencie.

Pomyślne odtworzenie oprogramowania wewnętrznego

Log narzędzia:

Loader uploading
****************************************
Code name............................... : Burner_PS3108_7.2.bin

Write PRAM.............................. : Ok
Checking................................ : Ok
Write overlay into PRAM................. : Ok
Checking................................ : Ok

Calling executable code................. : Ok
Write HDD microcode .................... : Ok

SSD status:
SSD is in ready state................... : Yes
Firmware mode........................... : LDR
SSD is locked........................... : No
SSD is in Safe Mode..................... : No
Logical access is possible.............. : No
Physical access is possible............. : Possibly
****************************************
Test completed

Dysk nie jest już w trybie serwisowym / safe mode.
Jest w gotowości, jednak dalej nie mamy dostępu logicznego do danych.

Pora odbudować translacje danych, czyli logiczne adresowanie do fizycznych lokalizacji.
Najprościej mówiąc: dzięki temu będziemy mieli dostęp do plików na dysku.
W zależności od pojemności dysku oraz od jego stanu proces ten może zająć dłuższą chwilę, czasami jednak nawet kilka godzin.

Odtworzenie strefy serwisowej dysku SSD w narzędziu PC-3000-SSD

Poniżej dziennik procesu:

Translator initialization
****************************************
Creating translator
****************************************
Read System Info........................ : Ok
Read Chips Info......................... : Ok

channel: 0
****************************************
Service area scanning
****************************************
channel: 0; block: 0x0000............... : C0C0 (Smart Vt)
channel: 0; block: 0x0002............... : C5C5 (L2P)
channel: 0; block: 0x0003............... : C5C5 (L2P)
channel: 0; block: 0x0004............... : C2C2 (PU info)
channel: 0; block: 0x0005............... : C4C4 (L2P Zone)
channel: 0; block: 0x0006............... : C3C3 (PVE)
channel: 0; block: 0x0008............... : C2C2 (PU info)
channel: 0; block: 0x0009............... : C5C5 (L2P)
channel: 0; block: 0x000A............... : C5C5 (L2P)
channel: 0; block: 0x000C............... : C5C5 (L2P)
channel: 0; block: 0x000D............... : C5C5 (L2P)
channel: 0; block: 0x000E............... : C5C5 (L2P)
channel: 0; block: 0x000F............... : C5C5 (L2P)
channel: 0; block: 0x0010............... : C5C5 (L2P)
channel: 0; block: 0x0011............... : C5C5 (L2P)
channel: 0; block: 0x0013............... : C6C6 (Srv)
channel: 0; block: 0x0014............... : C3C3 (PVE)
channel: 0; block: 0x0015............... : C3C3 (PVE)
channel: 0; block: 0x0016............... : C5C5 (L2P)
channel: 0; block: 0x0017............... : C5C5 (L2P)
channel: 0; block: 0x0018............... : C5C5 (L2P)
channel: 0; block: 0x0019............... : C5C5 (L2P)
channel: 0; block: 0x001A............... : C5C5 (L2P)
channel: 0; block: 0x001B............... : C3C3 (PVE)
channel: 0; block: 0x001C............... : C5C5 (L2P)
channel: 0; block: 0x001E............... : C5C5 (L2P)
channel: 0; block: 0x001F............... : C5C5 (L2P)
channel: 0; block: 0x0020............... : C5C5 (L2P)
channel: 0; block: 0x0021............... : C5C5 (L2P)
channel: 0; block: 0x0022............... : C5C5 (L2P)
channel: 0; block: 0x0023............... : C7C7 (Physical log)
channel: 0; block: 0x0024............... : C0C0 (Smart Vt)
****************************************
Completed

Table of pointers loading (channel: 0; block: 0x0000)
Completed

Table of pointers loading (channel: 0; block: 0x0024)
Completed

Table of filled blocks loading (channel: 0; block: 0x0004)
Completed

Service blocks scanning
block: 0x001F........................... : Bad pages count: 1
Completed

Apply filters
Chunks of translator (Found)............ : 0x28480

Filter 0...
Chunks of translator (Deleted).......... : 0x30AE

Filter 1...
Chunks of translator (Deleted).......... : 0x21BC2

Filter 2...
Chunks of translator (Deleted).......... : 0x000C

Filter 3...
Chunks of translator (Deleted).......... : 0x0004

Filter 4...
Chunks of translator (Deleted).......... : 0x0000
Completed

channel: 1
****************************************
Service area scanning
****************************************
channel: 1; block: 0x0000............... : C0C0 (Smart Vt)
channel: 1; block: 0x0002............... : C5C5 (L2P)
channel: 1; block: 0x0003............... : C2C2 (PU info)
channel: 1; block: 0x0004............... : C5C5 (L2P)
channel: 1; block: 0x0005............... : C0C0 (Smart Vt)
channel: 1; block: 0x0006............... : C4C4 (L2P Zone)
channel: 1; block: 0x0007............... : C2C2 (PU info)
channel: 1; block: 0x0008............... : C5C5 (L2P)
channel: 1; block: 0x0009............... : C5C5 (L2P)
channel: 1; block: 0x000A............... : C5C5 (L2P)
channel: 1; block: 0x000B............... : C3C3 (PVE)
channel: 1; block: 0x000D............... : C4C4 (L2P Zone)
channel: 1; block: 0x000E............... : C5C5 (L2P)
channel: 1; block: 0x000F............... : C5C5 (L2P)
channel: 1; block: 0x0010............... : C5C5 (L2P)
channel: 1; block: 0x0011............... : C5C5 (L2P)
channel: 1; block: 0x0013............... : C5C5 (L2P)
channel: 1; block: 0x0014............... : C5C5 (L2P)
channel: 1; block: 0x0015............... : C7C7 (Physical log)
channel: 1; block: 0x0018............... : C3C3 (PVE)
channel: 1; block: 0x0019............... : C5C5 (L2P)
channel: 1; block: 0x001A............... : C6C6 (Srv)
channel: 1; block: 0x001B............... : C5C5 (L2P)
channel: 1; block: 0x001C............... : C5C5 (L2P)
channel: 1; block: 0x001D............... : C2C2 (PU info)
channel: 1; block: 0x001E............... : C4C4 (L2P Zone)
channel: 1; block: 0x001F............... : C5C5 (L2P)
channel: 1; block: 0x0020............... : C3C3 (PVE)
channel: 1; block: 0x0021............... : C5C5 (L2P)
channel: 1; block: 0x0022............... : C5C5 (L2P)
channel: 1; block: 0x0023............... : C5C5 (L2P)
channel: 1; block: 0x0024............... : C5C5 (L2P)
****************************************
Completed

Table of pointers loading (channel: 1; block: 0x0000)
Completed

Table of pointers loading (channel: 1; block: 0x0005)
Completed

Table of filled blocks loading (channel: 1; block: 0x0007)
Completed

Service blocks scanning
Completed

Apply filters
Chunks of translator (Found)............ : 0x236E2

Filter 0...
Chunks of translator (Deleted).......... : 0x48DF

Filter 1...
Chunks of translator (Deleted).......... : 0x1B603

Filter 2...
Chunks of translator (Deleted).......... : 0x0000

Filter 3...
Chunks of translator (Deleted).......... : 0x0000

Filter 4...
Chunks of translator (Deleted).......... : 0x0000
Completed

channel: 2
****************************************
Service area scanning
****************************************
channel: 2; block: 0x0000............... : C0C0 (Smart Vt)
channel: 2; block: 0x0002............... : C5C5 (L2P)
channel: 2; block: 0x0003............... : C4C4 (L2P Zone)
channel: 2; block: 0x0004............... : C5C5 (L2P)
channel: 2; block: 0x0005............... : C3C3 (PVE)
channel: 2; block: 0x0006............... : C4C4 (L2P Zone)
channel: 2; block: 0x0007............... : C5C5 (L2P)
channel: 2; block: 0x0008............... : C5C5 (L2P)
channel: 2; block: 0x0009............... : C7C7 (Physical log)
channel: 2; block: 0x000C............... : C3C3 (PVE)
channel: 2; block: 0x000D............... : C5C5 (L2P)
channel: 2; block: 0x000E............... : C5C5 (L2P)
channel: 2; block: 0x0010............... : C2C2 (PU info)
channel: 2; block: 0x0011............... : C5C5 (L2P)
channel: 2; block: 0x0012............... : C4C4 (L2P Zone)
channel: 2; block: 0x0013............... : C5C5 (L2P)
channel: 2; block: 0x0014............... : C5C5 (L2P)
channel: 2; block: 0x0015............... : C5C5 (L2P)
channel: 2; block: 0x0016............... : C5C5 (L2P)
channel: 2; block: 0x0017............... : C5C5 (L2P)
channel: 2; block: 0x0018............... : C5C5 (L2P)
channel: 2; block: 0x0019............... : C2C2 (PU info)
channel: 2; block: 0x001A............... : C3C3 (PVE)
channel: 2; block: 0x001B............... : C5C5 (L2P)
channel: 2; block: 0x001C............... : C5C5 (L2P)
channel: 2; block: 0x001D............... : C5C5 (L2P)
channel: 2; block: 0x001E............... : C2C2 (PU info)
channel: 2; block: 0x001F............... : C6C6 (Srv)
channel: 2; block: 0x0020............... : C5C5 (L2P)
channel: 2; block: 0x0021............... : C5C5 (L2P)
channel: 2; block: 0x0022............... : C5C5 (L2P)
channel: 2; block: 0x0023............... : C0C0 (Smart Vt)
****************************************
Completed

Table of pointers loading (channel: 2; block: 0x0000)
Completed

Table of pointers loading (channel: 2; block: 0x0023)
Completed

Table of filled blocks loading (channel: 2; block: 0x001E)
Completed

Service blocks scanning
Completed

Apply filters
Chunks of translator (Found)............ : 0x24202

Filter 0...
Chunks of translator (Deleted).......... : 0x3B96

Filter 1...
Chunks of translator (Deleted).......... : 0x1CE6C

Filter 2...
Chunks of translator (Deleted).......... : 0x0000

Filter 3...
Chunks of translator (Deleted).......... : 0x0000

Filter 4...
Chunks of translator (Deleted).......... : 0x0000
Completed

channel: 3
****************************************
Service area scanning
****************************************
channel: 3; block: 0x0000............... : C0C0 (Smart Vt)
channel: 3; block: 0x0002............... : C5C5 (L2P)
channel: 3; block: 0x0003............... : C3C3 (PVE)
channel: 3; block: 0x0005............... : C5C5 (L2P)
channel: 3; block: 0x0006............... : C2C2 (PU info)
channel: 3; block: 0x0007............... : C5C5 (L2P)
channel: 3; block: 0x0009............... : C5C5 (L2P)
channel: 3; block: 0x000A............... : C5C5 (L2P)
channel: 3; block: 0x000B............... : C2C2 (PU info)
channel: 3; block: 0x000C............... : C5C5 (L2P)
channel: 3; block: 0x000D............... : C3C3 (PVE)
channel: 3; block: 0x000E............... : C3C3 (PVE)
channel: 3; block: 0x000F............... : C5C5 (L2P)
channel: 3; block: 0x0010............... : C5C5 (L2P)
channel: 3; block: 0x0011............... : C5C5 (L2P)
channel: 3; block: 0x0012............... : C5C5 (L2P)
channel: 3; block: 0x0013............... : C5C5 (L2P)
channel: 3; block: 0x0014............... : C5C5 (L2P)
channel: 3; block: 0x0016............... : C5C5 (L2P)
channel: 3; block: 0x0017............... : C5C5 (L2P)
channel: 3; block: 0x0018............... : C5C5 (L2P)
channel: 3; block: 0x0019............... : C5C5 (L2P)
channel: 3; block: 0x001A............... : C0C0 (Smart Vt)
channel: 3; block: 0x001B............... : C5C5 (L2P)
channel: 3; block: 0x001C............... : C5C5 (L2P)
channel: 3; block: 0x001D............... : C5C5 (L2P)
channel: 3; block: 0x001E............... : C4C4 (L2P Zone)
channel: 3; block: 0x001F............... : C4C4 (L2P Zone)
channel: 3; block: 0x0020............... : C5C5 (L2P)
channel: 3; block: 0x0021............... : C6C6 (Srv)
channel: 3; block: 0x0023............... : C5C5 (L2P)
channel: 3; block: 0x0024............... : C7C7 (Physical log)
****************************************
Completed

Table of pointers loading (channel: 3; block: 0x0000)
Completed

Table of pointers loading (channel: 3; block: 0x001A)
Completed

Table of filled blocks loading (channel: 3; block: 0x000B)
Completed

Service blocks scanning
Completed

Apply filters
Chunks of translator (Found)............ : 0x29785

Filter 0...
Chunks of translator (Deleted).......... : 0x3FFA

Filter 1...
Chunks of translator (Deleted).......... : 0x21F8B

Filter 2...
Chunks of translator (Deleted).......... : 0x0000

Filter 3...
Chunks of translator (Deleted).......... : 0x0000

Filter 4...
Chunks of translator (Deleted).......... : 0x0000
Completed

Analysis of obtained data
Estimated SSD capacity.................. : 469 762 048 (0x1C000000) LBA
Available to user....................... : 468 862 128 (0x1BF244B0) LBA
User blocks count....................... : 0x03800000

Chunks of translator:
channel: 0.............................. : Used: 0x3800; Found: 0x3800; Min.: 0x0000; Max.: 0x37FF
channel: 1.............................. : Used: 0x3800; Found: 0x3800; Min.: 0x0000; Max.: 0x37FF
channel: 2.............................. : Used: 0x3800; Found: 0x3800; Min.: 0x0000; Max.: 0x37FF
channel: 3.............................. : Used: 0x3800; Found: 0x3800; Min.: 0x0000; Max.: 0x37FF

L2P:
Records count........................... : 0x0400
Completed

Translator build
Completed
****************************************
Completed
****************************************
Test completed

OK, translator został odbudowany i odtworzony, czas na odczyt danych.

W narzędziu Data Extractor tworzę nowe zadanie i viola! Mamy dostęp do plików.
Wybieramy odczyt tylko tego, co jest istotne dla klienta i po kilku godzinach mamy odczytane ponad 8GB danych.
Prędkości odczytu nie są tak zawrotne jakich można by spodziewać się od dysków SSD (od 100KB/s do 3MB/s), jednak jest to dość normalne w sytuacji, gdy nośnik jest już w złym, zdegradowanym stanie.

lista odzyskanych danych

Rezultat

Podsumowanie ilości odczytanych sektorów.

Odczytaliśmy 22 322 201 sektorów, czyli 8.7GB danych.
Zero uszkodzeń.

widok odczytanych bloków.


W tym przypadku udało odzyskać się 100% danych z dysku SSD na jakich zależało użytkownikowi.

Warto wspomnieć, że w tym jak i podobnych przypadkach z dyskami SSD, możliwość odczytania z nośników SSD mają jedynie laboratoria odzyskiwania danych z odpowiednim zapleczem technicznym.

Koszt

W tym konkretnym przypadku koszt zamknął się w kwocie 1500 zł.
Proszę pamiętać, że koszt zawsze jest ustalany na podstawie diagnozy i może się różnić.
Podajemy kosztorys prac przed podjęciem się zlecenia – tak, by klient mógł sam ocenić czy warto kontynuować.

Jeśli Twój dysk SSD przestał być widoczny, a zależy Ci na przywróceniu z niego dokumentów, plików, zdjęć, filmów itp. to zapraszamy do kontaktu.

Masz podobny przypadek?
Zadzwoń 533-534-538 lub

Dodaj komentarz