Kurz vor Weihnachten hat heise.de gemeldet, dass unter anderem vom Heise Verlag selbst als Abo-Lockmittel verschickte 1GB USB-Sticks zum großen Teil gefälscht waren. Das heißt, dass die Sticks zwar 1 GB Platz melden, aber deutlich weniger Platz haben oder defekt sind. Heise hat eine Testsoftware für Windows in der Nachricht verlinkt, die aber den Nachteil hat, dass sie beim ersten falschen Byte abbricht. Wenn man genaueres wissen will, kann man das mit Linux herausfinden.
Meine Firma hat vor Weihnachten eine Ladung genau dieser USB-Sticks als Werbemittel geordert, und keiner der bisher getesteten Sticks hat den Test bestanden. Andere USB-Sticks bestehen ihn aber, es liegt also nicht am Test...
Wie Heise meldet, sind auch viele schwarze Schafe bei Testkäufen in Läden aufgetaucht, von daher ist es sinnvoll, generell alle Sticks auf Fehler zu testen. Das habe ich wie folgt gemacht (basierend auf einem Kommentar bei heise.de - manchmal steht da doch was Sinnvolles drin):
1. Mit dem Befehl
df /mnt/usbstick
kann man herausfinden, wie viel Platz auf dem Stick ist. Am besten testet man es mit einem frisch formatierten oder gar neu partitionierten Stick. Der Pfad muss natürlich dem richtigen Mountpoint entsprechen.
Die Ausgabe des Befehls sieht zum Beispiel so aus:
Dateisystem 1K-Blöcke Benutzt Verfügbar Ben% Eingehängt auf
/dev/sde1 1002056 8 1002048 1% /mnt/usbstick
Interessant ist die Zahl unter 'Verfügbar': hier sind 1002048 Blöcke von jeweils 1024 Byte frei; es handelt sich um einen 1 GB-Stick. Allerdings stammen diese Zahlen aus auf dem Stick gespeicherten Werten; bei den Fälschungen werden also wesentlich mehr Bytes angezeigt, als tatsächlich vorhanden sind.
2. Jetzt brauchen wir eine Datei, die exakt so groß ist, dass sie genau auf den USB-Stick passt. Das machen wir wie folgt:
dd if=/dev/urandom of=testdatei bs=1024 count=1002048
Dieser Befehl erstellt eine Datei aus Zufallszahlen, die im aktuellen Verzeichnis (nicht das des Sticks wählen!) unter dem Namen testdatei gespeichert wird; sie enthält 1002048 Blöcke zu 1024 Byte. Die Zahl unter 'count' müsst ihr natürlich entsprechend dem Ergebnis von df abändern.
3. Wenn die Datei fertig ist, was mehrere Minuten dauert, ermittelt ihr eine Prüfsumme für die Datei:
sha1sum testdatei >checksum.sha1
Das sind Ziffern 1, keine kleinen Ls. Dieser Befehl erstellt eine Datei namens checksum.sha1, in der die Prüfsumme der Datei namens testdatei gespeichert wird.
Zum Testen könnt ihr nun folgendes aufrufen:
sha1sum -c checksum.sha1
Dieser Befehl sollte ein 'OK' zurückgeben.
4. Anschließend kopiert ihr die Datei auf den Stick (Pfad wieder anpassen).
cp testdatei /mnt/usbstick
Sie sollte exakt passen, es sollten 0 Byte frei sein. Wenn der Stick meldet, dass er voll ist, und der Kopiervorgang abbricht, sind doch Daten auf dem Stick, z.B. in versteckten Dateien (Papierkorb). Der Test kann nur weitergehen, wenn der Stick die Datei klaglos annimmt. Im Zweifelsfall formatieren oder neu partitionieren und von vorne beginnen.
5. Jetzt benennt ihr die Datei auf eurer Festplatte um, falls ihr sie noch mal verwenden wollt:
mv testdatei testdatei.off
Das muss deshalb sein, weil die Prüfsumme nur für eine Datei mit unverändertem Namen überprüft werden kann.
6. Anschließend könnt ihr zur Sicherheit den Stick aus- und wieder einhängen.
7. Dann wird die Datei vom Stick zurück auf die Platte kopiert, in das Verzeichnis, in der die Datei checksum.sha1 liegt.
8. Jetzt in diesem Verzeichnis noch einmal folgendes ausführen:
sha1sum -c checksum.sha1
Wenn das Ergebnis wieder ok ist, ist der Stick vollkommen in Ordnung. Ist das Ergebnis aber ein Fehlschlag, wurde mindestens ein Byte falsch gespeichert oder geschrieben. Das ist fatal.
9. Wenn das der Fall ist, solltet ihr einen Hex-Editor öffnen, z.B. ghex. Dieser Editor kann die vom Stick kopierte Datei öffnen (dauert etwas) und dann kann er in der Datei nach Zeichenfolgen suchen. Wir suchen nach
FF FF FF FF
weil es auch bei einem Gigabyte ausreichend unwahrscheinlich ist, dass der Zufallszahlengenerator aus 256 möglichen Zahlen viermal hintereinander FF ausgewählt hat. Wenn Speicher tatsächlich fehlt, gibt er FF zurück, also ist eine solche Stelle wahrscheinlich defekt. Der Hexeditor springt auch an die Stelle, so dass man schon sieht, wenn es noch mehr FF Bytes gibt. Wenn man ganz und gar ungläubig ist, kann man auch beide Dateien mit dem Hexeditor optisch vergleichen.
10. Bei den gefälschten Sticks sind große Bereiche mit FF gefüllt. Ich hatte einen Kandidaten, bei dem einige hundert Byte schon bei ca. 14 MB ausfielen, und ab 656 MB war dann komplett Schluss, es gab nur noch FFs.
11. Wenn der Checksummen-Test ein Fehlschlag war, der Hexeditor aber keine vier zusammenhängenden FFs findet, ist vielleicht nur ein Stück von weniger als vier Byte kaputt, aber auch das ist schon fatal für binäre Daten. Vertrauenswürdig ist ein Stick nur dann, wenn die Prüfsumme OK ist.
Robin