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.
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 »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.
Infos
- SD-Karte/Fälschungen: https://de.wikipedia.org/wiki/SD-Karte#F.C3.A4lschungen
- USB-Massenspeicher/Manipulierte Controllerchips: https://de.wikipedia.org/wiki/USB-Massenspeicher#Manipulierte_Controllerchips
- Fälschungen erkennen: http://linuxwelt.blogspot.de/2014/06/microsd-speicherkarten-falschungen.html
- »datentraegertest1.sh«: https://www.linux-magazin.de/static/listings/magazin/2017/04/datentraegertest/






