Aus Linux-Magazin 04/2017

Echte und gefälschte Datenträger auf Bad Blocks testen

© katalinks, 123RF

Unter den Anbietern billiger Flashspeicher scheint es mehr schwarzer Schafe zu geben als unter den Wirten, denn der erreichbare Füllgrad vieler SD-Karten und USB-Sticks beträgt nur ein Bruchteil des aufgedruckten Wertes. Das Problem: Der Eichstrich ist für viele Käufer nicht erkennbar – es wird Zeit, das zu ändern.

Jeder Gast, der im Biergarten eine Mass Bier bestellt, würde dem Wirt etwas husten, bekäme er das Glas nur viertelvoll gereicht. Dass der versuchte Betrug im analogen Freiluft-Habitat regelhaft scheitert, ist neben der hohen Motivation der Konsumenten und der körperlichen Verfügbarkeit des Betrügers auch dem Umstand geschuldet, dass der Füllstand eines Maßkrugs auch ohne Spezialequipment gut bestimmbar ist.

Auf vergleichbar günstige Rahmenbedingungen können Onlinekäufer von Flashspeichern leider nicht bauen, und dies obwohl kein Vollrausch ihre Urteilskraft beeinträchtigt. Immer wieder ist zu lesen, dass Käufer von USB-Sticks und Flashkarten im Internet Opfer unseriöser Händler werden. Und tatsächlich ist es nicht schwer, beispielsweise auf Ebay Speicher zu überraschend niedrigen Festpreisen zu finden, bei dem die suggerierte Kapazität nicht stimmt. [1],[2] Um sich abzusichern, machen Verkäufer oft dazu Angaben wie “Der Stick speichert zirka 4 GByte. Daten darüber hinaus könnten verloren gehen”.

Dieser Artikel macht es sich zur Aufgabe, mit Tests solche Produktfälschungen auf die Schliche zu kommen. Als Beispiel dienen Speicherkarten vom Typ Samsung Micro-SDXC Pro 128 GByte, Modell MB-MG128, gekauft 2016 über Ebay.de bei zwei Verkäufern. Laut Aufdruck sollen sie bis zu 90 MByte/s beim Lesen und 80 MByte/s beim Schreiben schaffen.

Genau hinsehen

Schon die Inaugenscheinnahme und der direkte Vergleich fördern interessante Detailunterschiede zu Tage. Angefangen mit der Originalverpackung, Abbildung 1. Bei der ersten Karte, in den Bildern rechts, weist ein Barcode-Aufkleber einen Rechtschreibfehler auf: Das O in “Model” fehlt (Abbildung 2). Auch das (möglicherweise gefälschte) CE-Kennzeichen auf der Rückseite der ersten Karte – die zweite trägt keines – gilt schon länger als Indiz für eine Fälschung [3].

Laut Hersteller müssten beide Karten zur Geschwindigkeitsklasse 3 (U3) gehören, die Kennzeichnung der ersten Karte klassifizieren sie aber zwei Klassen langsamer. Eine Recherche mit den genauen Modellbezeichnung förderte bei der zweiten Karte, Modell MB-MG128EU/EU, fast 6000 Treffer. Darunter war auch die Samsung-Seite mit umfangreichen technischen Angaben und der EAN 8806088133560. Die erste Karte, Modell MB-MG128D/EU, liefert nur einen Treffer auf die Seite eines polnischen Händlers.

Abbildung 1: Bilder von den beiden erworbenen, verpackten Speicherkarten, links das mutmaßliche Originalprodukt, rechts die vermutete Fälschung. Im Hintergrund liegt Millimeterpapier.

Abbildung 1: Bilder von den beiden erworbenen, verpackten Speicherkarten, links das mutmaßliche Originalprodukt, rechts die vermutete Fälschung. Im Hintergrund liegt Millimeterpapier.

Abbildung 2: Auf dem Barcode einer Verpackung findet sich ein Rechtschreibfehler.

Abbildung 2: Auf dem Barcode einer Verpackung findet sich ein Rechtschreibfehler.

Register auslesen

Weitere Hinweise geben die Metadaten in den Speicherkarten, beispielsweise Modell, Hersteller, Version (Revision) und Seriennummer. Diese Daten erhält der Linux-Anwender mittels »hwinfo –disk«, sofern er keinen USB-Kartenleser verwendet, denn in dem Fall erhält er nur dessen Metadaten.

Gleiches gilt leider auch für die Kartenregister, insbesondere CSD (Card Specific Data Register) und CID (Card Identification Register Data) von SD-Karten. Die auszulesen gelingt nur mit einem so genannten Direct-SD-Interface. Das haben per PCI-Express angeschlossene Kartenleser in Notebooks (beispielsweise den Realtek-RTS5229-Cardreader). Oder man rüstete sie als PCIe-Karten nach (Delock 91485 oder Mini-PCIe-Karten von diversen chinesischen Ebay-Anbietern).

Wer ein solches Gerät besitzt, findet die Registerinhalte unter »/sys/block/mmcblk0/device/cid« beziehungsweise »…/csd«. Die etwas sperrigen Inhalte lauten bei der vermuteten Fake-Karte:

00048d55534220441100001603010301
400e00327b590003e7ff7f800a404001

Die andere Karte lieferte abweichende die Werte:

1b534d303030303010a3385d7e010901
400e00325b590003b9df7f800a404001

Wer eine verdächtige SSD vor sich hat, kann auch mit »hdparm« und »smartctl« nachfassen, die ebenfalls Hersteller, Produkt, Seriennummer, Betriebsstunden sowie das Schnittstellentempo liefern.

Fälscher, deren technisches Know-how genauso groß ist wie ihre kriminelle Energie, wird es wohl gelingen, sämtliche in Registern gespeicherten Werte von Originalprodukten täuschend echt nachzubilden. Für den ehrlichen Konsumenten ist es darum an der Zeit, eine verlässliche Strategie zum Aufdecken von Manipulationen zu suchen. Die findet er im sequenziellen Schreiben und Lesen des ganzen Datenträgers ohne Dateisystem mit praktisch nicht komprimierbaren Testdaten getestet.

Um die falsche Größe zu kaschieren, manipulieren die Flash-Fälscher vielfach die Adressierung ihrer Ware. Der Benutzer erhält den Eindruck, er könne die zugesicherte Anzahl Blocks adressieren und wäre Besitzer eines regulären Datenträgers. In Wirklichkeit wiederholen sich die erreichbaren Datenblocks öfter. Deswegen darf ein Test nicht mit einem einheitlichen Testmuster wie »0xaa« arbeiten, sondern man sollte mit großen und zufälligen Mustern testen.

Ein solches Handwerkszeug eignet sich zugleich, schleichende Defekte zu erkennen. Denn auch authentische Datenträger können Fehlstellen entwickeln: Die Isolationsschicht einer Flashspeicherzelle degeneriert nämlich mit jeder Löschung. Bei den Multi-Level-Cell-NANDs (MLC) sinkt die ursprüngliche Haltbarkeit von rund zehn Jahren ausgehend nach 3000 Lösch-Schreib-Zyklen auf ein Jahr.

Badblocks gegen Bad men

Der folgende Aufruf setzt das skizzierte Verfahren in die Praxis um und teste auf Fehler und zugleich auf Bandbreite:

device=mmcblk0
time badblocks -wsv -c 65536 -t random -o log_$device_`date +%F_%T`.txt /dev/$device 2>&1 | tee logg_$device_`date +%F_%T`.txt

Das »time«-Kommando misst die Testdauer (siehe Abbildung 3). Testkandidatin war eine Micro-SD-Karte im internen Leser eines Notebooks (»mmcblk0«). Das Testtool »badblocks«, enthalten im Paket »e2fsprogs«, macht den Schreib-Lesetest (»-w«) mit einer Logdatei für die Nummern der defekten Blöcke (»-o Dateiname«), arbeitet mit einem zufälligen Datenmuster (»-t random«) der Größe 65536 mal 1024 Byte (»-c 65536«), mit Fortschrittsanzeige (»-s«) und ausführlichen Meldungen (»-v«). Per »tee« landet die Bildschirmausgabe auch in einer zweiten Logdatei. Um die Logdateien zu ordnen, bekommen die Dateinamen sowohl den Gerätename (»$device«) als auch Datum und Uhrzeit (»date +%F_%T«).

Abbildung 3: Ein <code>badblocks</code>-Lauf auf der Suche nach Datentr&auml;gerdefekten oder -manipulationen. Das <code>time</code>-Kommando misst die Zeit.

Abbildung 3: Ein »badblocks«-Lauf auf der Suche nach Datenträgerdefekten oder -manipulationen. Das »time«-Kommando misst die Zeit.

Wer diesen Test bei Datenträgern ausführen will, der schon in Benutzung ist, rettet zuvor mit »dd« (oder »ddrescue« oder »dd_rescue«) den kompletten Inhalt an eine sichere Stelle und schreibt ihn nach dem Test zurück. Während des Kopierens sollte der Datenträger nicht gemountet sein. Weil ein solcher Test alle vorher gespeicherten Daten zuverlässig überschriebt, eignet er sich zugleich als Lösch-Maschine für alte Daten.

Um die Freude am Testen auf Badblocks aufrecht zu erhalten, ist es wichtig, das richtige Zieldevice zu wählen. Andernfalls überschreibt der Test die Daten eines anderen Datenträgers. Der Autor hat ein Skript programmiert, das solche Fehler vermeidet: »datentraegertest1.sh«[4]. Es erwartet als einzige Parameter den Namen des zu testenden Datenträger, im Beispiel eben »mmcblk0«, in dem Beispiel aus Listing 1 dagegen »sde«. Das Skript funktioniert auch unter Cygwin, was sogar Windows-Usern eine Test-Perspektive eröffnet. Linux-User sollten es als Root ausführen, bei Windows sollte Cygwin mit Administratorrechten laufen.

Listing 1

Ausgabe von ./datentraegertest1.sh sde

01 Warnung: Dieses Skript sollte generell von der Gruppe Root (Nr. 0) ausgeführt werden, aber ihre Benutzergruppe ist Nr. 1000 !
02 Warning: This should generally be run from group root (Nr. 0), but your group is Nr. 1000 !
03
04    8       64     250880 sde
05 This script will do a write-read-test with device /dev/sde.
06 Starting in 15 s (press <Ctrl>-C if you want to abort).
07 -
08 output of lsblk:
09 NAME           MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
10 sda              8:0    0  3,7T  0 disk
11 |-sda1           8:1    0    1M  0 part
12 |-sda2           8:2    0   10G  0 part  /boot
13 `-sda3           8:3    0  3,6T  0 part
14   `-sda3_crypt 252:0    0  3,6T  0 crypt /
15 sdb              8:16   0  1,8T  0 disk
16 sde              8:64   1  245M  0 disk
17 loop4            7:4    0  1,8T  0 loop
18 `-ob_enc4      252:1    0  1,8T  0 crypt /mnt/sbackup
19 zram0          251:0    0  3,9G  0 disk  [SWAP]
20 zram1          251:1    0  3,9G  0 disk  [SWAP]
21 zram2          251:2    0  3,9G  0 disk  [SWAP]
22 zram3          251:3    0  3,9G  0 disk  [SWAP]
23 zram4          251:4    0  3,9G  0 disk  [SWAP]
24 zram5          251:5    0  3,9G  0 disk  [SWAP]
25 zram6          251:6    0  3,9G  0 disk  [SWAP]
26 zram7          251:7    0  3,9G  0 disk  [SWAP]
27 Start date/time: So 8. Jan 22:52:46 CET 2017
28 Es wird nach defekten Blöcken gesucht (Lesen+Schreiben-Modus)
29 Von Block 0 bis 250879
30 Es wird mit zufälligen Mustern getestet: erledigt
31 Lesen und Vergleichen:erledigt
32 Durchgang beendet, 0 defekte Blöcke gefunden. (0/0/0 Fehler)
33
34 real    2m30.322s
35 user    0m0.390s
36 sys     0m0.018s
37
38 Erledigt, So 8. Jan 22:55:16 CET 2017
39 Done, So 8. Jan 22:55:16 CET 2017

Zeit und Durchsatz

Bei einem Datenträger mit 128 GByte Kapazität und im Mittel 85 MByte/s Durchsatz dauert dieser Test rund 50 Minuten. Die Formel für die Testdauer lautet: »t=2*V/B«, also Zeit in Sekunden mal einfaches Volumen in MByte geteilt durch die mittlere Bandbreite in MByte/s. Der Faktor 2 entsteht durch den zweifachen Transfer, schreibend und lesend.

Hieraus ergibt sich die mittlere Bandbreite mit »B=2*V/t«. Die exakte Datenträgergröße V kann »lsblk -b /dev/$device« beisteuern. Wer den Wert in die Formel einsetzt, bekommt die Bandbreite in Byte pro Sekunde heraus.

Von einem Defekt oder einer Fälschung darf ein Käufer ausgehen, wenn er weniger als ein Viertel der “Bis zu”-Angabe des Herstellers oder weniger als die Hälfte vom Nennwert misst. Er muss beim Test allerdings eine Anbindung mit maximaler Geschwindigkeit verwenden, beispielsweise für eine UHS-II-Speicherkarte einen UHS-II-Leser.

Happy End

Zu den beiden über Ebay gekauften 128-GByte-Karten meldete »badblocks« bei der ersten 122 973 232 defekte von insgesamt 131 071 999 Blöcken (zu je 1024 Byte) – also sind bei ihr 94 Prozent der Blöcke defekt. Die zweite Karte hingegen zeigte keinen Fehler. Die Testdauer sollte nach der Formel t=2*V/B bei circa einer Stunde liegen, was bei der zweiten Karte auch stimmte: rund 70 Minuten. Der Test der ersten Karte dauerte mit über fünf Stunden viel zu lange.

Damit entlarvte der Test mit »badblocks« in zweifacher Hinsicht die erste Karte als Fake – mit ihren vielen Fehlern und viel zu langsam arbeitend. Das überzeugte auch den damit konfrontieren Verkäufer. Er nahm das Objekt zurück und erstattet den bezahlten Betrag. Die zweite und intakte Karte hingegen arbeitet problemlos mit einem kurzen SD-Karten-Adapter mit Zuglasche als zweite SSD im Notebook des Autors.

Der Autor

Dr. Rolf Freitag ist promovierter Physiker mit abgeschlossenen Zusatstudium Praktische Informatik. Er programmiert vorwiegend unter Linux seit 1995, arbeitet derzeit in einem kleinen Unternehmen in Neu-Ulm und ist arbeitssuchend.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 3 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben