Hallo, nachdem mir schon zum wiederholten Mal die MicroSD Karte in meinem Handy kaputt gegangen ist, möchte ich nun zu Lernzwecken den NAND Flash aus einer baugleichen Karte auslesen und im Erfolgsfall dasselbe mit meiner defekten Karte versuchen. Zu diesem Zweck habe ich mir einige funktionierende baugleiche MikroSD Karten als Testobjekte besorgt. Die übliche Vorgehensweise eines Datenrettungs-Labors für die Datenrekonstruktion aus dem NAND Flash einer SD Karte ist folgende: 1) Karte aufschleifen 2) Leiterbahnen/Vias kontaktieren 3) funktionierende Karte während des Betriebes mit Logic Analyzer analysieren 4) CE, WE, RE, RB, ALE, CLE und D7..D0 identifizieren 5) NAND Flash aus defekter aber baugleicher Karte entsprechend manuell auslesen 6) Spezielle NAND Recovery Software (z.B. flash-extractor.com) verwenden um Dateisystem-Inhalt von NAND-Dump zu rekonstruieren 7) FAT Dateisystem-Analyse und Datei-Extraktion Zu den jeweiligen Prozessen gibt es sogar ein kurzes Video eines deutschen Datenrettungs-Labors hier: http://www.youtube.com/watch?v=y-jrzsaT6ls Ich habe mittlerweile sowohl eine baugleiche wie auch eine ähnliche MikroSD Karte vom selben Hersteller aufgeschliffen und kontaktiert. Über meine eigene Software-Implementation auf einem XMEGA Board kann ich über das SPI Interface mit den SD Karten kommunizieren und ebenso erfolgreich auf das FAT Filesysytem zugreifen. Während ich das tue, habe ich mir entsprechend Schritt 4) die herauskontaktieren Signale mit dem Logik-Analyzer angeschaut und konnte bereits CE, WE, RE, RB, ALE, CLE und D7..D0 identifizieren. Derzeit kenne ich allerdings von dem Datenbus die Reihenfolge noch nicht. Ich nehme also an, dass die Reihenfolge der Bits auf dem Datenbus, so wie ich sie am Logik-Analyzer sehe, vertauscht ist. Nun orientieren sich heutige NAND Flash Speicherchips an der ONFI (Open NAND Flash Interface) Spezifikation, insbesondere was das unterstützte Command-Set betrifft. Darauf bauen ebenso die käuflichen Flash-Extraktionstools für Datenrettungs-Labors auf (z.B. flash-extractor.com oder acelaboratory.com). Mein Ansatz war somit, dass ich die Kommunikation zwischen dem SD Kartencontroller und dem NAND Flash analysiere und darin, etwa beim initialisieren, verschiedene ONFI Kommandos sehen müsste. Beispielsweise ist der NAND Flash nach ONFI nach dem Powerup zu initialisieren, was mit dem RESET (0xff) Kommando funktioniert. Ich müsste also am Logic-Analyzer das Kommando erkennen können (alle Bits am Datenbus high). Anschliessend liest der Controller vom NAND Flash Konfigurationsparameter aus. Dies funktioniert etwa über das Read-ID (0x90) Kommando bzw. später dann durch das Lesen der Konfigurations-Page. Aufgrund der Daten in der Antwort auf die jeweiligen Kommandos ist es somit sehr einfach möglich die richtige Anordnung des Datenbus zu bestimmen. Im weiteren ist es dann möglich z.B. über einen Mikrocontroller die jeweiligen ONFI Kommandos direkt an den NAND Flash zu schicken und somit den Speichereinhalt auszulesen. Nun zum Haken an der Geschichte: Im Gegensatz zu den Ausführungen und Beschreibungen auf den Seiten der Flash-Recovery-Tool Hersteller handelt es sich in dem auf meiner MikroSD Karte vebauten NAND Flash wohl nicht um einen nach ONFI standardisierten NAND Flash Speicher. Ich kann nirgends in der Kommunikation Kommandos erkennen, die auf ONFI hindeuten. Auch das RESET (0xff, also alle Pins des Datenbus auf high) kann ich nicht erkennen. Ich kann jedoch mittels einer weiteren Implementation auf einem Mikrocontroller-Board die observierten Kommandos bereits direkt an den NAND Flash schicken und bekomme dann auch dieselbe Antwort, wie wenn das der karteninterne Controller machen würde. Die Kommunikation mit dem NAND Flash haut also hin, nur weiss ich halt noch nicht was ich da eigentlich kommuniziere weil ich die Kommandos nicht identifizieren kann ;) Nun können NAND Flash Hersteller auch ihre eigenen Kommandos verwenden, unterstützen aber üblicherweise trotzdem das ONFI Command-Set. Es könnte also sein, dass ich niemals ONFI Kommandos sehe, obwohl der NAND Flash diese unterstützen würde. Um dies festzustellen, habe ich beschlossen einfach mal ONFI Kommandos an den NAND Flash zu schicken um zu sehen was passiert. Im Speziellen hätte ich versucht eine Antwort auf das ONFI Read-ID (0x90) Kommando zu erhalten. Binär ist 0x90 ==> 10010000, es sind also 2 bits gesetzt. Nachdem ich die Reihenfolge der Bits am Datenbus noch nicht kenne, habe ich mir eine Bruteforce-Loop gebaut die in jeder Iteration folgendes macht: 1. Reset Kommando senden (0xff) - also alle Bits am Datenbus auf high 2. Kommando mit Kombination aus 2 gesetzten Bits am Datenbus senden 3. Adressinfo senden (0x00) - also alle Bits am Datenbus auf low 4. 4 Bytes vom Datenbus lesen Das ganze mache ich aufgrund der Mikrocontroller-Geschwindkeit etwas langsamer wie das der karteninterne Controller machen würde. Entsprechend ONFI müsste das Reset Kommando immer funktionieren. Und nachdem ja sowieso alle Bits am Datenbus gesetzt sind, macht es auch nichts wenn die Reihenfolge der Bits am Datenbus nicht stimmt. Im nächsten Schritt sende ich dann jeweils eine Byte-Kombination in der genau 2 Bits gesetzt sind. Unabhängig von der Bit-Reihenfolge am Datenbus müsste ich somit in genau einem Versuch das 0x90 Kommando richtig hinbekommen. Im nächsten Schritt wird die Adresse (0x00) geschickt. Nachdem hier alle Bits des Datenbus auf 0 gesetzt sind, ist auch hier die Reihenfolge egal. Schliesslich lese ich dann 4 bytes vom Datenbus. Wenn der verbaute NAND Flash also die ONFI Kommandos unterstützt, so müsste ich zumindest in einem Durchlauf der Schleife ein Ergebnis bekommen, das sich von dem Rest untescheidet. Dadurch wüsste ich nun die Reihenfolge der Bits am Datenbus und könnte mit dem NAND Flash über die ONFI Kommandos beliebig kommunizieren. Leider hat jedoch auch das nicht funktioniert, weshalb ich annehme, dass die Karte die ONFI Kommandos nicht unterstützt. * Sind NAND Flash Bausteine, die ONFI nicht unterstützen, verbreitet ? (Die Karte ist eine aktuelle 16GB Karte, die definitiv lang nach Erstellen der ONFI Spec hergestellt wurde.) * Kennt jemand noch andere Command-Sets die ich versuchen könnte ? (Die Karte ist eine SanDisk Speicherkarte, was jedoch in Bezug auf die Internas der Karte nicht viel heissen muss). * Hat hier jemand Ideen/Erfahrungen/Tipps ? Falls ich mit meinen Versuchen nicht weiterkomme, hätte ich mir auch schon überlegt eine baugleiche Karte aufzuätzen und am Chip nach einer NAND-Flash Identifikation und dem Chip-Hersteller zu suchen. Die Infrastruktur dafür ist vorhanden, jedoch ist das ganze natürlich auch mit etwas Arbeit verbunden. Mit diesen Informationen könnte ich mich dann auf Suche nach Datenblättern für denselben bzw. ähnliche NAND Flash-Chips machen und könnte dadurch herausfinden, wie mit dem internen NAND Flash zu kommunizieren ist. lg, Stef
stefan m. schrieb: > nachdem mir schon zum wiederholten Mal die MicroSD Karte in meinem Handy > kaputt gegangen ist, wie / durch was passiert denn sowas?
Wegstaben Verbuchsler schrieb: > stefan m. schrieb: >> nachdem mir schon zum wiederholten Mal die MicroSD Karte in meinem Handy >> kaputt gegangen ist, > > wie / durch was passiert denn sowas? Da hab ich wirklich keine Ahnung. Ausserhalb des Handys ist mir noch nie eine eingegangen.
Hallo, stefan m. schrieb: > Falls ich mit meinen Versuchen nicht weiterkomme, hätte ich mir auch > schon überlegt eine baugleiche Karte aufzuätzen und am Chip nach einer > NAND-Flash Identifikation und dem Chip-Hersteller zu suchen. genau das habe ich jetzt mal gemacht (siehe Bilder anbei). Bei dem Controller handelt es sich um einen Sandisk/Phoenix Technologies Controller "C2RMP6" zu dem ich bis jetzt erst mal keine Informationen finden konnte. Der NAND FLash ist ein Sandisk/Toshiba "EGW5 16G". Also ein 16-GBit NAND (2GByte). Unter [1] ist zu finden, dass dies offensichtlich dem die marking für einen Toshiba TC58NVG4D2H (EGW5) NAND Flash entspricht. Hier [2] habe ich auch ein Datenblatt dazu gefunden :) [1] http://bbs.dramx.com/forum.php?mod=viewthread&tid=73966 [2] http://wenku.baidu.com/view/7bebc32b3169a4517723a3b0.html
Und noch einer ... Leider ist der Controller verloren gegangen :(
Alexander Schmidt schrieb: > Danke für die tollen Bilder! Gerne. Aufgrund der Hersteller-Nomenklatur und des Hersteller-Katalogs [1] nehme ich an, dass es sich bei dem "Toshiba EER5" um folgenden NAND Flash handelt: TH58NVG5S0FTA20 (4k page size, Datenblatt [2]) TH58NVG5S2FTA20 (8k page size) [1] http://www.semicon.toshiba.co.jp/docs/catalog/en/SCE0004-02_catalog.pdf [2] http://media.digikey.com/pdf/Data%20Sheets/Toshiba%20PDFs/TH58NVG5S0FTA20.pdf
Über ein paar Daten-Permutationsexperimente konnte ich die Reihenfolge der Bits am Datenbus rekonstruieren. Interessantes Detail am Rande: Ist die SD-Karte vorher ohne Strom, so liest der karteninterne Controller als erstes die ID des NAND Flash aus (siehe Bild). Der "Maker Code" (0x98) ist der von Toshiba, jedoch ist der Device Code (0x00) unüblich. Auch die Länge des IDs entspricht nicht der Länge der ID aus den Toshiba Datenblättern. Die read Kommandos sehen auch anders aus. Anstatt "0x00 <2 byte col addr> <3 byte page addr> 0x30" ist das Kommando "0x05 <5 byte addr> 0xe0". Bei dem Flash scheint es sich evt. um eine nicht öffentliche Sandisk Variante zu handeln für welche ich kein Datenblatt finde.
Hallo, konntest Du deine Daten von der defekten Karte retten?Ich habe ebenfalls eine defekte Micro SD von meinem Handy,die von jetzt auf gleich Feierabend machte.Das Handy erkennt die Karte noch,beim öffnen kommt aber die Meldung,Karte nicht formatiert.Der PC erkennt die Karte nicht mehr.Ich bin dann bei meiner Suche auf fotos-wiederherstellen.de gestoßen.Die Meinungen über diese Firma sind doch sehr geteilt.Ich hätte doch gerne meine Bilder von der Karte wieder,habe von solchen Dingen überhaupt keine Ahnung,und weiß nicht,an wen man sich wenden könnte.Ich bin für jede Hilfe dankbar. Mfg
Vielleicht erstmal ein image der Karte machen (z.B. dd) wenn die Blöcke grundsätzlich noch lesbar sind und dann sowas wie recoverjpeg probieren wenns nur um JPEGs geht.
Zur identifikation der Datenleitungen könntest du falls noch möglich bzw. du noch eine karte zur verfügung hast daten auf dem pc per Hex Editor in den chip schreiben... hexadecimal 0x01 0x02 0x04 0x08 0x10 0x20 0x40 und 0x80 beim entsprechenden lesen der adressen wirst du dann im logik analyser das entsprechende bild sehen...
sorry so wird das nix... hab nicht aufmerksam genug geschaut....
Hallo, Zufall schrieb: > Hallo, > konntest Du deine Daten von der defekten Karte retten?Ich habe ebenfalls > eine defekte Micro SD von meinem Handy,die von jetzt auf gleich > Feierabend machte.Das Handy erkennt die Karte noch,beim öffnen kommt > aber die Meldung,Karte nicht formatiert.Der PC erkennt die Karte nicht > mehr. bei mir war es auch dasselbe. Die Karte wird überhaupt nicht mehr erkannt und man kann auch nicht mehr mit ihr z.B. über SPI kommunizieren (vermutlich Controller defekt). Ich konnte von einer baugleichen Karte den Speicherinhalt des NAND Flash erfolgreich auslesen. Leider scheint jedoch laut NAND-Flash Recovery-SW Herstellern (FlashExtractor.com, etc.) bei SanDisk Speicherkarten der Inhalt des NAND Flash nicht nur gemixt und verxort, sondern richtig verschlüsselt zu sein. Aus diesem Grund konnte ich bis jetzt keine Möglichkeit finden die direkt aus dem NAND Flash extrahierten Daten zu rekonstruieren. Ich hätte somit 32GB Daten mit denen ich nichts anfangen kann :( Da haben auch Datenrettungs-Labors keine Chance mehr ...
Na das macht mir ja Hoffnung :-( Danke für die Rückmeldung.
Ich habe hier ein USB Stick, der inter eine micro SD als Speicher hat, die SD-Karte ist dort auch an den freigekratzten Pins (nicht die Steckerleiste) kontaktiert. Zu dem Controler konnte ich nichts finden, habe aber auch nicht lange gesucht. Würde sowas nützen? PS: es ist ein Fake USB Stick der mit 64Gb verkauft wird obwohl er intern nur 2Gb hat.
als gast schrieb: > PS: es ist ein Fake USB Stick der mit 64Gb verkauft wird obwohl er > intern nur 2Gb hat. Wenn du 3 GB auf dem Stick gespeichert hast, dann sind davon 1 GB verloren. Da hilft gar nichts dagegen. Falls das nicht der Fall ist, solltest du dein Problem mal genauer beschreiben.
Hallo, nein kein Problem aber vieleicht die Lösung. Mein Stick ist einfach nur Müll, es sind keine Daten drauf und die SD Karte habe ich abgelötet. Bilder vergleichbarer Sticks gibt es hier: http://de.reclabox.com/beschwerde/52801-groupon-berlin-gold-bar-usb-stick-von-beauty-systems-groupon-ein-fakestick Meine Idee war, dass es vieleicht mit diesen Stick möglich ist SD Karten auszulesen. Der Unterschied zu üblichen SD Lesern liegt hier darin, das dort die Pins auf der SD Karte vom Lack befreit sind und wie BGAs kontaktiert sind. Deshalb dachte ich die SD-Karte wird dort nur als Flash genutzt und kontaktiert. Von der vergoldeten Anschlussleiste der SD-Karte sind nur zwei Kontakte belegt, tippe mal auf +/-.
Ehe ich mich auf solchen Krempel einlassen würde, käme ich auf dir Idee mich umzusehen ob es sowas nicht fertig gibt und es gibt diese Teile zu Kaufen. Ich habe einen "USB Stick" mit einber Micro-SD Fassung dran, abgesehen davon das das Teil extrem piepslig zu handhaben ist, funktioniert es einwandfrei. http://www.smdv.de/products/229401/Platinum-Micro-Sdhc-Karte-32GB-Cl4-W-R.html Ich beschreibe damit SDHC Karten die dann an ATXmegas werkeln.. Nein, ich bin nicht der Herstelle und auch nicht dessen Schwager.. Gruß, Holm
Ein Micro-SD-Karten-Leser hilft hier nicht; es geht ja darum, das in der Micro-SD-Karte verbaute Flash auszulesen, ohne den Controller in der Karte zu verwenden (weil der wohl defekt ist).
Erst mal Sorry für das Bildformat, ich bin auf Arbeit ohne Adminrechte und kann das Bild nicht verkleinern. Anbei ein Bild vom Stick ohne SD-Karte, bei der Karte werden 2 Pins an der Steckerleiste und 21 Pins über abgeschliffene Kontakte angeschlossen. Ich habe keine Ahnung ob es das ist was du brauchst, ob die Daten verschlüsselt werden oder was auch immer. Für mich sieht es aus wie ein Lesegerät für SD-Flash Speicher ohne SD Kontroller mit USB-Anschluss und unterstützung für Karten bis 64Gb. Das der Stick Schrott ist, der in verbrecherischer Absicht gefertigt wird ist mir auch klar, vieleicht kann er hier aber sinnvoll sein.
als gast schrieb: > ich bin auf Arbeit ohne Adminrechte > und kann das Bild nicht verkleinern. Wie, da darf man mspaint.exe nicht aufrufen?
als gast schrieb: > nein kein Problem aber vieleicht die Lösung. > ... > Meine Idee war, dass es vieleicht mit diesen Stick möglich ist SD Karten > auszulesen. Der Unterschied zu üblichen SD Lesern liegt hier darin, das > dort die Pins auf der SD Karte vom Lack befreit sind und wie BGAs > kontaktiert sind. Jetzt verstehe ich, was du meinst. Eventuell ist es damit tatsächlich möglich manche Speicherchips direkt auszulesen. Ob man damit allerdings alle auslesen kann, wage ich zu bezweifeln, dennoch könnte dies für manche die Lösung sein. Rege dich nicht über das Bildformat auf, 260 kByte sind nicht die Welt.
Unterschiedliche SD- und MicroSD- Karten haben unterschiedliche Pinouts für diese Testpads. Manche haben auch überhaupt keine Testpads, die muss man erst aufschleifen und dann ggf. die Leiterbahnen kontaktieren. Du solltest allerdings zumindest die Karten desselben Herstellers damit lesen können. Aber wie gesagt: Die Kartencontroller haben alle wear-leveling welches u.A. auch mixes und xor verwendet. Das kann man durch trial and error rekonstruieren, indem man z.B. versucht den FAT Header zu rekonstruieren. Bestehende Recovery SW-Lösungen können das für viele Karten- und Controllertypen, sind jedoch sehr teuer. Und wenn du Pech hast, sind die Daten so verschlüsselt, dass man die Verschlüsselung nicht mehr so einfach wie etwa das XOR aufheben kann. Es wäre interessant zu wissen ob man an den Controller einer baugleichen Karte den NAND Flash einer Karte mit defektem Controller anhängen kann. Zuvor müsste man allerdings den NAND Flash der funktionierenden Karte deaktivieren indem man z.B. eine Versorgungsleitung entfernt oder die /CE Leitung auf high zieht. * Hat das schon mal jemand gemacht ? Wenn man Glück hat geht das evt. sogar auf der Platine, indem man die jeweilige Leiterbahn durchkratzt und neu verkabelt. Wenn man Pech hat, sind Controller und NAND Flash direkt miteinander verbonded, sodass man die Bondingdrähte angreifen müsste. Heisst also: Vorsichtig aufätzen und ggf. rebonden. LG
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.