Wie kann ich einen Sektor auf einer SD-Karte absichtlich beschädigen / beschädigen?

22888
Gabe Krause

Ich muss die Belastbarkeit einiger Lese- / Schreib-Codes für eingebettete Hardware testen. Wie könnte ich ein paar SD-Karten opfern und mehrere bekannte Sektoren für eine kontrollierte Studie zerstören?

Das einzige, woran ich denken kann, ist, einen einzelnen Sektor ein paar Millionen Mal zu überschreiben. Ich frage mich, ob ein Linux-Badblocks-Skript erstellt werden kann, um den zerstörenden Test für einen einzelnen Sektor mehrere Stunden lang wiederholt auszuführen.

138
Können Sie den Low-Level-SD-Treiber ändern, um so zu tun, als ob ein fehlerhafter Block vorliegt, oder kommt das nicht in Frage? Mark Yisri vor 6 Jahren 20
@ MarkYisri, ich glaube nicht, dass der Fahrer sehr gut erreichbar ist. Welcher Treiber wir verwenden, ist äußerst rudimentär, um die Speicherzuweisung für den Rest der Firmware zu maximieren. Wenn es möglich wäre, würde dies wahrscheinlich meine Fähigkeiten übersteigen. Gabe Krause vor 6 Jahren 3
Kannst du einen SD-Kartenemulator bauen? Nicht das einfachste Projekt. user20574 vor 6 Jahren 3
In Anbetracht des Ziels könnten Sie ein paar gebrauchte SD-Karten für wenig Geld kaufen, und Sie können leicht eine fehlerhafte erhalten oder eine "Suche nach ..." -Anmeldung angeben, um gezielt nach fehlerhaften Karten zu suchen. Oder suchen Sie bei eBay nach defekten Karten. Dann testen Sie die Karte und Sie kennen die Position der defekten Bereiche. FarO vor 6 Jahren 11
Vermutlich ist Ihre SD-Kartenlesefunktion in eine Abstraktionsebene eingebettet. Wenn ja, fügen Sie einige Test-S / W-Dateien hinzu Mawg vor 6 Jahren 0
Fragen Sie einen professionellen Fotografen. Sicher haben sie einen Stapel von SD-Karten. J... vor 6 Jahren 28
Holen Sie sich ein Himbeer-Pi; Sie sind berüchtigt für das Brechen von SD-Karten. Schreiben Sie ein Skript, um Dateien immer wieder darauf zu schreiben und zu löschen. vor 6 Jahren 1
Vielleicht können Sie sich an einen SD-Kartenhersteller wenden und ihn fragen, ob Sie fehlerhafte SD-Karten zusammen mit Informationen darüber kaufen können, welche Sektoren auf jeder fehlerhaften Karte fehlerhaft sind. Kevin vor 6 Jahren 2
Ich habe eine, die das selbst ständig macht. Will es? T.E.D. vor 6 Jahren 2
Ich fühle, dass dies ein [XY-Problem] ist (https://meta.stackexchange.com/questions/66377/what-is-the-xy- problem). jkd vor 6 Jahren 2
@Mehrdad Eigentlich bist du nicht so weit weg. Nicht sicher, ob dies mit den neuesten Flash-Medien immer noch zutrifft, aber wenn Sie die Stromversorgung an genau der richtigen Stelle (während eines Flash-Schreibvorgangs) abgebaut haben, würde der gesamte Löschblock verloren gehen. Industrietaugliche Geräte verfügen über einen Kondensator, der das Abschreiben eines laufenden Vorgangs bei Stromausfall zum Schutz vor diesem Fehlermodus ermöglicht. Michael vor 6 Jahren 1
Die billigsten No-Name-Namen von Amazon halten normalerweise nicht lange, wenn sie überhaupt arbeiten Mark K Cowan vor 6 Jahren 1
Eispickel? Elektrostatische Entladung? Sorgfältig gezielter Bohrer? Was meinst du damit, dass es nicht die Art von Bruch ist, an die du gedacht hast? Kaithar vor 6 Jahren 0
Ja, @JakekimdsΨ, das ist definitiv ein XY-Problem. Was OP wirklich braucht, ist eine gute Testumgebung für ihren Code. Was sie glauben, ist schlechte SD-Karten (die viele Leute anbieten). OP muss mehr Informationen über ihre Entwicklungsumgebung bereitstellen, damit wir eine echte Lösung erhalten. NH. vor 6 Jahren 1
Du hast recht. Wir brauchen eine bessere Testumgebung. Im Allgemeinen habe ich nie schlechte SD-Karten angefordert. Zufällig schlechte Karten tragen nicht zu einem wiederholbaren Testverfahren in einem angemessenen Zeitrahmen bei. Ich musste einen ** bekannten schlechten Sektor ** testen, von dem wir erfahren haben, dass er mit eingebautem SD-Verschleißausgleich nahezu unmöglich ist. Die richtige Antwort (für mich) ist höchstwahrscheinlich eine steuerbare Hardwareschnittstelle zwischen SD und zu testendem Gerät. Ich zögere jedoch, dies als die "richtige Antwort" auszuwählen, da hier einige großartige Lösungen für unterschiedliche Umgebungen präsentiert werden. Gabe Krause vor 6 Jahren 0

15 Antworten auf die Frage

166
Kamil Maciorowski

Ein alternativer Ansatz, der kann nützlich sein.

Wenn Ihr Code unter Linux läuft, können Sie ihn möglicherweise mit einem "fehlerhaften" logischen Gerät testen. dmsetupkönnen Geräte erstellen, die E / A-Fehler zurückgeben. Bauen Sie einfach Ihr Gerät mit errorund / oder flakeyZiel auf. Von man 8 dmsetup:

error
Fehler bei allen E / A-Vorgängen, die in diesen Bereich gehen. Nützlich zum Testen oder Erstellen von Geräten mit Löchern.

flakey
Erzeugt eine ähnliche Zuordnung zum linearZiel, zeigt jedoch regelmäßig unzuverlässiges Verhalten. Nützlich zum Simulieren von fehlerhaften Geräten beim Testen.

Hinweis: Die flakeyZielnutzung wird hier dokumentiert . Grundlegendes Beispiel hier .

Soweit ich weiß, wird ein E / A-Fehler sofort gemeldet, daher unterscheidet sich dies von dem Verhalten einer SD-Karte, bei dem Sie mit Verzögerung, Stillstand usw. rechnen können. Trotzdem denke ich, dass dieser Ansatz in einigen Fällen nützlich sein kann, um zumindest schnell zu funktionieren Vorprüfung oder so.

Ich schätze dieses Out-of-Box-Denken! Wir sind auf Blockebene mit dem SD über einen 80 MHz Atmel-Chip verbunden und kein echtes Betriebssystem. Gabe Krause vor 6 Jahren 34
@GabeKrause In diesem Fall hängt die Nützlichkeit dieser Antwort davon ab, wie ähnlich die Linux-Blockgeräte-API der API Ihres eingebetteten Gerätetreibers ist. Qsigma vor 6 Jahren 1
`dmsetup`-Befehl zum Einrichten eines` error`-Geräts, das immer Lesefehler ausgibt: https://stackoverflow.com/questions/1870696/simulate-a-faulty-block-device-with-read-errors Peter Cordes vor 6 Jahren 0
Ich stimme zu, dass das nach einer besseren Lösung klingt. Zuerst können Sie über jede Hardware replizieren. Und Sie können auch die verschiedenen Fehlermodi simulieren. Ich habe zum Beispiel einen 16 GB USB-Stick, der einwandfrei funktioniert. Nach einiger Zeit fängt ein bestimmter Bereich an, falsche Daten zurückzugeben. Es gibt keinerlei FS-Fehler. Sie lesen die Datei, aber der Inhalt ist unterschiedlich. Einige Sektoren sind offensichtlich instabil. Wie sich ein bestimmtes Gerät verhält, ist jedoch nicht im Voraus bekannt. akostadinov vor 6 Jahren 1
75
FarO

Dieser Typ hat den Mikrocontroller in SD-Karten gehackt, mit denen fehlerhafte Blöcke markiert wurden: https://www.bunniestudios.com/blog/?p=3554

Möglicherweise können Sie dasselbe tun und willkürlich Blöcke als fehlerhaft markieren.

Auf dem Chaos Computer Congress (30C3) haben xobs und ich heute die Feststellung geäußert, dass einige SD-Karten Sicherheitslücken aufweisen, die die Ausführung von beliebigem Code ermöglichen - auf der Speicherkarte selbst. Auf der dunklen Seite ermöglicht die Ausführung von Code auf der Speicherkarte eine Klasse von MITM-Angriffen (Man-in-the-Middle-Angriffe), bei denen sich die Karte scheinbar in eine Richtung verhält, tatsächlich aber etwas anderes. Auf der Lichtseite ermöglicht dies auch Hardware-Enthusiasten den Zugang zu einer sehr preiswerten und allgegenwärtigen Quelle von Mikrocontrollern.

.

Diese Algorithmen sind zu kompliziert und zu gerätespezifisch, um auf der Anwendungs- oder Betriebssystemebene ausgeführt zu werden. Daher stellt sich heraus, dass jede Flash-Speicherplatte mit einem relativ leistungsfähigen Mikrocontroller ausgeliefert wird, um einen benutzerdefinierten Satz von Algorithmen für die Plattenabstraktion auszuführen. Selbst die kleine microSD-Karte enthält nicht einen, sondern mindestens zwei Chips - einen Controller und mindestens einen Flash-Chip (Karten mit hoher Dichte stapeln mehrere Flash-Chips).

.

Der eingebettete Mikrocontroller ist typischerweise eine stark modifizierte 8051- oder ARM-CPU. In modernen Implementierungen erreicht der Mikrocontroller ein Leistungsniveau von 100 MHz und verfügt auch über mehrere Hardwarebeschleuniger. Erstaunlicherweise liegen die Kosten für das Hinzufügen dieser Controller zum Gerät wahrscheinlich in der Größenordnung von 0,15 bis 0,30 US-Dollar, insbesondere für Unternehmen, die sowohl Flash-Speicher als auch Controller innerhalb derselben Business Unit einsetzen können. Es ist wahrscheinlich billiger, diese Mikrocontroller hinzuzufügen, als jeden Flash-Speicherchip gründlich zu testen und zu charakterisieren. Dies erklärt, warum verwaltete Flash-Geräte trotz des Einbaus eines Mikrocontrollers pro Bit billiger sein können als reine Flash-Chips.

.

Der entscheidende Punkt ist, dass ein Mechanismus zum Laden und Aktualisieren von Firmware praktisch zwingend erforderlich ist, insbesondere für Controller von Drittanbietern. Endbenutzer sind diesem Prozess selten ausgesetzt, da dies alles in der Fabrik geschieht. Dies macht den Mechanismus jedoch nicht weniger real. Bei meinen Erkundungen der Elektronikmärkte in China habe ich gesehen, wie Ladenbesitzer Firmware auf Karten brannten, die die Kapazität der Karte "erweitern" - mit anderen Worten, sie laden eine Firmware, die angibt, dass die Kapazität einer Karte viel größer ist als die tatsächlich verfügbarer Speicher. Die Tatsache, dass dies am Verkaufspunkt möglich ist, bedeutet, dass der Aktualisierungsmechanismus höchstwahrscheinlich nicht gesichert ist.

In unserem Vortrag auf der 30C3 berichten wir über unsere Erkenntnisse über eine bestimmte Mikrocontroller-Marke, nämlich Appotech und seine Angebote AX211 und AX215. Wir entdecken eine einfache "Klopf" -Sequenz, die über vom Hersteller reservierte Befehle übertragen wird (nämlich CMD63 gefolgt von "A", "P", "P", "O"), die die Steuerung in einen Firmware-Lademodus versetzen. Zu diesem Zeitpunkt akzeptiert die Karte die nächsten 512 Bytes und führt sie als Code aus.

Von allen Antworten ist diese wahrscheinlich am nächsten zu dem, was das OP eigentlich gefordert hat. Cort Ammon vor 6 Jahren 10
Das war eine fantastische Lektüre! Gabe Krause vor 6 Jahren 11
@Twisty hat einige der relevanten Teile kopiert. FarO vor 6 Jahren 0
Durch das Kaninchenloch in die Welt der SD-Kartenarchitektur gehe ich. Tejas Kale vor 6 Jahren 2
38
amo-ej1

Dies funktioniert normalerweise nicht, da die neuesten SD-Karten (oder eMMC) statische und dynamische Verschleißniveaus verwenden. Dies bedeutet, dass eine intelligente Steuerung Ihre Schreibanweisungen interpretiert und sie einem der am wenigsten verwendeten Flash-Sektoren zuordnet.

Sie können nur versuchen, sich mit Ihren Lieferanten in Verbindung zu setzen und nach dem Datenblatt zu fragen. Es gibt möglicherweise (herstellerspezifische) Möglichkeiten, den Status ihres Abnutzungsgrad-Algorithmus abzurufen. Dadurch können Sie möglicherweise den Status / die Verwendung des zugrunde liegenden Flashs abfragen. Oder Sie haben vielleicht Pech und das gibt es vielleicht nicht.

Wenn Sie Flash wirklich zerstören möchten, können Sie nur massive Lese- und Schreibzyklen ausführen und ständig überprüfen, ob die Daten, die Sie zurücklesen, immer noch konsistent sind. Erstellen Sie z. B. zwei große Dateien, speichern Sie ihre Prüfsummen und lesen / schreiben Sie sie, um ihre Prüfsumme zu überprüfen. Je größer der Blitz, desto länger dauert dieser Vorgang.

Funktioniert das nicht, wenn die SD-Karte vollständig mit Daten gefüllt ist, sodass sie nicht viel neu zuordnen kann? Ich glaube nicht, dass es viele versteckte Bereiche gibt. Ruslan vor 6 Jahren 2
@ Ruslan: Nein. Blockspeichergeräte wissen im Allgemeinen nicht, welche Sektoren von Dateien belegt werden und welche "frei" sind. Die Ausnahme sind Geräte, die den Befehl 'TRIM' unterstützen, der von SATA-Festplatten und nicht von SD-Karten verwendet wird. MSalters vor 6 Jahren 0
@MSalters: Das Gerät muss wissen, welche Sektoren mit etwas anderem als Nullen / FFs gefüllt sind. Andernfalls handelt es sich nicht um ein Speichergerät. Ruslan vor 6 Jahren 0
@Ruslan Das Gerät muss nicht wissen, ob ein Sektor mit etwas gefüllt ist. Es muss nur der Inhalt wissen, welche Sektoren auf Anfrage geliefert werden müssen und welche Sektoren auf Anfrage geschrieben werden sollen. Und dann kann eine Abstraktionsschicht vorhanden sein, die es ermöglicht, diese Sektoren nach einem unbekannten Algorithmus mit anderem physischen Speicher zu repräsentieren ... - Und "voll" bedeutet natürlich nur "Schwellenwert für gleichzeitig füllbare Blöcke erreicht". Alexander Kosubek vor 6 Jahren 2
@AlexanderKosubek In jedem Fall muss die Abnutzungsausgleichslogik wissen, ob ein Sektor etwas verworfen hat oder nicht, um es neu zuzuordnen. Ruslan vor 6 Jahren 0
@Ruslan Ja, es benötigt Informationen über den Zustand des Speichers, nicht jedoch über den Inhalt. Ich sehe jedoch nicht, wie dies es ermöglichen würde, die Verschleißniveaus dazu zu bringen, eine bestimmte Menge an Speicher so zu nutzen, dass sie tatsächlich ausfällt. Alexander Kosubek vor 6 Jahren 0
@ Ruslan: Selbst wenn auf dem gesamten Gerät Daten vorhanden sind, kann die Verschleißnivellierung dennoch wirksam sein: Wenn beispielsweise Sektor A einmal geschrieben wurde und Sektor B 1.000 Mal geschrieben wurde, dann kommt noch ein weiterer Schreibvorgang hinzu Sektor B Die Karte kann die Daten für die beiden Sektoren austauschen, so dass Sektor A die Daten des Sektors B enthält (und wahrscheinlich öfter überschrieben wird - aber das ist in Ordnung, da er neu ist), und Sektor B enthält die Daten des Sektors A. hoffentlich nicht viel ändern). Natürlich muss das Gerät auch die Zuordnung speichern, welcher Sektor wo gespeichert wird. psmears vor 6 Jahren 6
Ich bin gespannt, ob die Verschleißnivellierung immer noch auftritt, wenn wir auf Blockebene lesen und schreiben. Wenn Sie beispielsweise mit einem Hex-Editor auf eine SD-Karte schreiben, wird jeder Sektor angezeigt. Wenn ich in einem bestimmten Sektor schreibe, der schlecht ist, wird die SD-Karte auch auf dieser Rohebene neu zugeordnet? Gabe Krause vor 6 Jahren 0
@GabeKrause Ja, das ist das Wesen des Tieres. Auf der untersten Ebene haben Sie entweder Nand- oder Flash-Chips (heutzutage wird alles Nand verwendet), und vor dem Nand-Chip befindet sich ein intelligenter Controller, der den Bus abschließt (z. B. USB für einen USB-Stick oder MMC für eine SD-Karte) ), und dieser Chip ist für das Mapping / Wear-Leveling usw. verantwortlich, abstrahiert den Blitz von Ihnen. Wenn Sie Nand unter Embedded Linux verwenden, ist dies, was ubifs zum Beispiel für Sie tun würde. amo-ej1 vor 6 Jahren 2
@psmears und was ist, wenn A -> einmal, B -> 1000, dann A -> 1000? Tauscht der Controller nach B -> 1000 aus, wenn er der Meinung ist, dass A nur einmal geschrieben wurde, wird es wahrscheinlich nicht leicht überschrieben? frarugi87 vor 6 Jahren 0
@ frarugi87: Was ich geschrieben habe, war nur ein einfaches Beispiel, um zu zeigen, wie es möglich ist, dass ein Controller die Last von Schreibvorgängen verteilt, selbst wenn das gesamte Gerät Daten enthält. Die von den Controllern verwendeten Algorithmen sind komplexer als diese (und oft patentiert / proprietär). Im Allgemeinen ist dies ein Kompromiss: Das Vertauschen von Blöcken ist langsamer und erfordert im Allgemeinen * mehr * Schreibvorgänge, kann jedoch die Lebensdauer des Geräts verlängern, indem sichergestellt wird, dass kein Block so viele Blöcke bekommt, dass er stirbt, wenn andere Blöcke kaum geschrieben wurden. psmears vor 6 Jahren 0
SD-Karten verfügen über einen Mikrocontroller, der eine "Flash Translation Layer" implementiert - Blockanforderungen werden von diesem Mikrocontroller in rohe NAND-Befehle übersetzt. Einige SD-Karten verfügen über versteckte Befehle zum Ändern / Aktualisieren der MCU-Firmware. Es gibt sogar einige Reverse-Engineering-Anstrengungen. Die meisten Flash-Speichergeräte mit Ausnahme von RAW-NAND (die in manchen Fällen wie viele Heimrouter vorkommen können) sind wahrscheinlich "überprovisioniert". Dies bedeutet, dass Ihre 1-GB-SD-Karte wahrscheinlich etwas wie 1024 MB + 128 MB RAW-NAND-Speicherplatz enthält, um den Füllstand auszugleichen und auch sektorschonend für schlechte Flash-Seiten. LawrenceC vor 6 Jahren 2
32
Pavlus

Sie können den Transistorverschleiß erhöhen, indem Sie die Betriebstemperatur erhöhen. Verwenden Sie Schreib-Lösch-Zyklen auf einem beheizten Chip (70-120 ° C). es wird schneller abgenutzt.

Zu hohe Lagertemperaturen sind auch schädlich. Daher kann es praktischer sein, den Chip für einige Zeit bei 120 ° C (oder sogar mehr) zu "garen", und dann auf Fehler zu prüfen. Dmitry Grigoryev vor 6 Jahren 18
Möglicherweise ist auch eine leichte Überspannung der Versorgung der Karte möglich, die ebenfalls experimentiert werden muss. Chris H vor 6 Jahren 2
Unterspannung kann auch verschiedene Arten von Fehlern verursachen, z. B. Controller-Blockierungen. user20574 vor 6 Jahren 0
18
Eric Johnson

Vorwort: Für diese Option sind zusätzliche Programmier- und Hardwaremodifikationen erforderlich. Dies würde jedoch kontrollierte Lesevorgänge ermöglichen, die für den Host wahrscheinlich transparent sind.

Eine SD-Karte verfügt über mehrere E / A-Optionen, kann jedoch über SPI gesteuert werden. Wenn Sie eine SD-Karte nehmen und modifizieren, um die Pins an einen Mikrocontroller (z. B. einen Arduino) anzuschließen, könnten Sie den Arduino die SD-Karte nachahmen und für das Gerät, das die SD-Karte liest, transparent sein. Ihr Code auf dem Mikrocontroller könnte bei Bedarf absichtlich fehlerhafte Daten zurückgeben. Darüber hinaus könnten Sie eine SD-Karte in den Mikrocontroller stecken, damit die Lesevorgänge den Mikrocontroller zur SD-Karte weiterleiten können, um ein Gigabyte-Testen zu ermöglichen.

Die meisten Hochgeschwindigkeitsgeräte (einschließlich PC-Kartenleser) lehnen es einfach ab, mit einer Karte zu arbeiten, die kein 4-Bit-SD unterstützt. Dmitry Grigoryev vor 6 Jahren 3
Das OP sagte, es sei ein eingebettetes System, das die Karte verwenden würde, was die Unterstützung von SPI für SD-Karten wahrscheinlicher machen würde Eric Johnson vor 6 Jahren 1
Eine Variante dieser, aber härteren Arbeit, wäre die Suche nach einer SD-Karte, für die Sie die Firmware auffrischen können (https://www.bunniestudios.com/blog/?p=3554). Peter Taylor vor 6 Jahren 3
Das ist super interessant! Unser Embedded System führt E / A über SPI aus. Ich bin mir nicht sicher, ob ich über die Bandbreite zum Ändern unserer Hardware verfügt, um eine solche Erweiterung durchzuführen, aber ich denke, es ist brillantes Denken. Gabe Krause vor 6 Jahren 2
Die Aufklärung über das dynamische Abnutzungsniveau lässt mich glauben, dass das strategische Erstellen einer "schlechten" SD-Karte mit bekannten schlechten Sektoren weitaus schwieriger ist (oder nicht möglich ist), als ich bei der Fragestellung gehofft hatte. Während dies derzeit außerhalb meines Könnens liegt, scheint dies der beherrschbarste und technisch vielversprechendste Ansatz zu sein, möglicherweise gefolgt von @Olafm. Das Anpassen von Zwischenhardware zum Abfangen und "Verfälschen" von Daten an einem vordefinierten Sektorort während der Datenübertragung scheint ein guter Ansatz zu sein. Gabe Krause vor 6 Jahren 2
Wenn die Hardwaremodifikation über den Umfang hinausgeht, können Sie auch feststellen, ob Ihr SPI-Treiber Loopback unterstützt, sodass das eingebettete System die Daten auch "senden" kann, ohne dass auf dem physischen SPI-Bus etwas benötigt wird Eric Johnson vor 6 Jahren 0
15
GuzZzt

Ich würde zu ebay / aliexpress gehen und die billigste SD-Karte kaufen, die ich in China finden kann, die, die "zu gut ist, um wahr zu sein". Sie kommen oft mit fehlerhaften Sektoren oder sind in einer Software, die viel größer ist als sie tatsächlich ist. In jedem Fall sollten Sie eine fehlerhafte SD-Karte als Test verwenden.

Interessanter Ansatz, aber wie würden Sie in die fehlerhaften Bereiche schreiben, um die Auswirkungen der fehlerhaften Blöcke auf den gespeicherten Code zu testen? fixer1234 vor 6 Jahren 0
@ fixer1234, ich hatte eine dieser SD-Karten, die besagten, dass es 32 GB waren, aber eigentlich nur 128 MB. Ich steckte es in meine Kamera und konnte Fotos jenseits der 128 MB aufnehmen, aber nur die ersten Fotos konnten zurückgelesen werden. Der Rest wurde aufgelistet, aber als gebrochen gelesen. Ich denke, das ist, wie sie möchten, dass Sie die Probleme mit der Karte zuerst bemerken, wenn es zu spät ist, um sich zu beklagen ... GuzZzt vor 6 Jahren 0
11
CubicleSoft

Vor vielen Jahren wurde ich dafür bezahlt, eine Reihe von Abschlussfotos und Videos von einer SD-Karte für eine ziemlich verzweifelte Mutter abzurufen. Bei näherer Betrachtung war die Karte durch einen sichtbaren Riss im äußeren Gehäuse physisch beschädigt worden und hatte mehrere fehlerhafte Sektoren, vor allem einige frühe, kritische Sektoren, die dazu führten, dass selbst die zuverlässigsten Wiederherstellungsprogramme die Karte überhaupt nicht lesen konnten . Forensische Datentools kosten damals ein Vermögen.

Am Ende erhielt ich eine SD / SD-Karte mit identischer Marke und Größe und schrieb mein eigenes benutzerdefiniertes Rohdump- und Wiederherstellungsprogramm, um die Daten von der fehlerhaften Karte auf die richtige zu kopieren. Jedes Mal, wenn das Dienstprogramm einen fehlerhaften Sektor trifft, wird es einige Male wiederholt, bevor alle Nullen für diesen Sektor geschrieben werden. Statt aufzugeben und zu stoppen, ignorieren Sie den Fehler und gehen zum nächsten Sektor über. Die Wiederholungsversuche wurden gemacht, da ich auch festgestellt hatte, dass einige Sektoren immer noch eine Leseerfolgsrate von etwa 40% hatten. Sobald sich die Daten auf der neuen SD-Karte befanden, funktionierten die zuvor fehlgeschlagenen Wiederherstellungs-Tools fehlerfrei mit minimalem Datenverlust / -korruption. Insgesamt wurden rund 98% aller Dateien wiederhergestellt. Einige zuvor gelöschte Elemente wurden auch wiederhergestellt, da nichts tatsächlich gelöscht wird - nur als solche markiert und langsam überschrieben. Was mit einer etwas langweiligen Datenwiederherstellungsübung begann, wurde zu einem denkwürdigeren und interessanteren persönlichen Softwareentwicklungsprojekt. Falls Sie sich gefragt haben, war die Mutter begeistert.

Jedenfalls zeigt diese Geschichte, dass es möglich ist, eine SD-Karte physisch zu beschädigen, so dass Daten immer noch zugänglich sind, aber Sektoren vorhanden sind, die nur wenig funktionieren und alles, was zu lesen versucht, dies schwierig macht. SD-Kartenplastik neigt dazu, sehr dünn zu sein. Biegen oder Schneiden in ein billiges Material könnte den Trick bewirken. Ihre Laufleistung kann variieren.

Sie können auch an einigen Datenwiederherstellungsstellen in Ihrer Umgebung nachfragen. Da sie sich auf die Datenwiederherstellung von verschiedenen fehlerhaften oder ausgefallenen Geräten spezialisiert haben, sollten sie einige nützliche Tipps / Eingaben haben und möglicherweise sogar einige vorinstallierte SD-Karten (z. B. für Trainingszwecke) zur Hand haben, die Sie von ihnen erhalten können.

Haben Sie dieses Dienstprogramm online veröffentlicht? Das wäre großartig, um mein Arsenal hinzuzufügen. Ploni vor 6 Jahren 2
An diesem Punkt würde es wahrscheinlich nicht einmal richtig funktionieren, angesichts des Fortschreitens der Technologie (vielleicht sogar des Kompilierens) und der von mir verwendeten Low-Level-Systemaufrufe. Es gibt auch ein paar moderne, forensische Open-Source-Tools zum Klonen von Geräten / Laufwerken, die ich eher verwenden könnte, als meine alte Software aus Mottenkugeln herauszuholen. CubicleSoft vor 6 Jahren 1
Ich nehme an, Sie können wahrscheinlich nur einige Parameter an `dd 'vergeben, damit es sich heutzutage ähnlich verhält. Ich bin mir allerdings nicht sicher. wizzwizz4 vor 6 Jahren 0
@ wizzwizz4, schau dir ddrescue an. hildred vor 6 Jahren 0
"Forensische Datentools kosten damals ein Vermögen." Ich bin mir ziemlich sicher, dass sie es immer noch tun. jpmc26 vor 6 Jahren 0
Heutzutage gibt es eine Reihe von Open Source-Tools für forensische Daten für mehrere Plattformen. CubicleSoft vor 6 Jahren 0
5
Dennis Jaheruddin

Diese Antwort ist eine Erweiterung des Kommentars von @Ruslan

  1. Füllen Sie Ihre SD-Karte bis zu 99,9%
  2. Schreibe den Inhalt der restlichen 0,1% ständig neu (Write A - Delete-Write B-Delete - Write A ...)
  3. Testen Sie (regelmäßig), ob Sie die Karte bereits beschädigt haben

Mögliche Alternative:

Sie sind sich nicht sicher, ob dies für Ihre Zwecke funktioniert, aber vielleicht reicht es tatsächlich aus, um Ihre Karte physisch zu beschädigen, was viel schneller sein könnte.

Das Füllen der Karte zu 99% ist nicht hilfreich, da der Zweck des Verschleißniveaus es ist, genau diese Art vorzeitiger Schäden zu verhindern. Wenn die Karte physisch beschädigt wird, führt dies höchstwahrscheinlich zu einer Karte, die nicht mehr initialisiert wird. Dmitry Grigoryev vor 6 Jahren 6
@DmitryGrigoryev Wie wird das Abnivellieren der Abnutzung von großem Nutzen sein (in diesem Fall ein Hindernis), es sei denn, die Karte verfügt über einen größeren Speicher als die offizielle Kapazität? ispiro vor 6 Jahren 2
@ispiro Wenn zum Beispiel ein Sektor mit einem hohen Schreibzähler überschrieben wird, kann sein Inhalt mit einem Sektor mit einem niedrigen Schreibzähler ausgetauscht werden. Dmitry Grigoryev vor 6 Jahren 12
@DmitryGrigoryev Wenn ich diese Antwort richtig interpretiere, sollte es SD-Karten geben, die kein lvling tragen: https://electronics.stackexchange.com/a/27626/16104 Dennis Jaheruddin vor 6 Jahren 1
@DennisJaheruddin Ja, ältere Karten machen das nicht. Bei diesen Karten reicht es aus, wiederholt eine leere Datei zu erstellen / zu entfernen, bis der Sektor in der Zuordnungstabelle verbraucht ist. Dmitry Grigoryev vor 6 Jahren 1
@DmitryGrigoryev: Ich schließe mich den Leuten an, die Ihre ersten beiden Kommentare in Frage stellen. Ich verstehe das Abnutzungsniveau (und wie Sie selbst sagen), eine Technik, bei der die intelligenten Geräte auf der SD-Karte (oder einem anderen Flash- / SSD-Gerät) auf verschiedene physische Sektoren (oder Seiten) umschalten, wenn der Computer (oder ein anderer Client) wiederholt wird schreibt an dieselbe Adresse Durch das Auffüllen des Geräts auf 99,9% Kapazität reduziert ISTM die Anzahl der freien Seiten um drei Größenordnungen und zwingt das Gerät, die gleichen physischen Seiten 1000 Mal früher als bei einem leeren Gerät wiederzuverwenden. Wie besiegt das Abnivellieren diesen Angriff? Scott vor 6 Jahren 0
@Scott Warum glauben Sie, dass nur kostenlose Seiten für die Verschleißnivellierung verwendet werden können? Jede Seite mit einer geringen Anzahl von Schreibvorgängen kann gelöscht und für Inhalte verwendet werden, die ständig aktualisiert werden. Dmitry Grigoryev vor 6 Jahren 0
@DmitryGrigoryev: Was bringt mich dazu, das zu denken? Die blöde Vorstellung, ein Speichergerät, das gespeicherte Informationen überschreibt, die der Benutzer nicht überschreiben möchte, ist kein funktionierendes Speichergerät. Wenn es eine * nicht freie * Seite überschreibt, müsste die Daten nicht von dieser Seite an eine andere Stelle kopiert werden, was zu einer Kaskade führt? Was vermisse ich? Scott vor 6 Jahren 0
@Scott Ja, es werden nur selten geänderte Daten von einer Seite mit niedriger Schreibanzahl auf eine Seite mit einer hohen Schreibanzahl zuerst kopiert. Die Seite mit einer hohen Anzahl von Schreibvorgängen wird vermutlich sowieso gelöscht, so dass keine Kaskade auftritt. Dmitry Grigoryev vor 6 Jahren 0
3
PCARR

Sie könnten versuchen, eine instabile Stromversorgung oder eine Signalisierung mit höherer Spannung einzuführen.

Ein häufiger Fehler bei einer Familie von Geräten, von denen ich weiß, dass sie eine starke Korrelation zwischen der Beschädigung der SD-Karte und dem intermittierenden Batteriekontakt aufweisen.

3
rackandboneman

Some older, low-capacity SD cards (16MB-ish) use flash chips in TSOP/TSSOP style packages. A workshop capable of SMT rework (if you are doing embedded work, you might have that skill inhouse, otherwise check for small companies doing board level phone/laptop repair) could conceivably separate and reattach that chip, so that it can be read and written raw (including the ECC codes) with a device programmer.

Still, be aware that you will be mainly testing:

  • How your device will handle possible timing aberrations/hiccups introduced by internal error correction

and in the worst case

  • how your device handles a terminally failing SD card.

If you just want to check how it behaves with erratic behaviour for whatever reason from an SD card, it is probably best to just introduce electrical noise into the interface lines (eg by putting a FET bus switch in between, and at random times momentarily switching it to a source of nonsensical signals (of the right electrical levels though).

Endlich ausfallende SD-Karten erzeugen kein "elektrisches Rauschen", sie geben lediglich Fehlercodes für Schreibvorgänge zurück. Dmitry Grigoryev vor 6 Jahren 0