it-swarm.com.de

Überprüfen Sie die tatsächliche Größe des USB-Sticks

Ich habe kürzlich viel über gefälschte MicroSD-Karten und USB-Sticks gelesen, die viel Speicherplatz beanspruchen (auch wenn Sie Ihren Computer fragen) und physisch viel weniger bieten. Ich habe kürzlich ein SanDisk-USB-Laufwerk gekauft (128 GB beansprucht) und möchte dessen Größe testen. Es wird nicht über eBay oder so gekauft, aber ich möchte unbedingt die tatsächliche Größe testen, bevor ich es produktiv nutze.

Ich könnte einfach Sachen darauf kopieren, es zurückkopieren und nachsehen, ob die Dateien in Ordnung sind. Ich könnte es auch mit Hashes und so automatisieren. Aber ich hoffte, dass es eine genauere Lösung gibt. Ich habe gelesen, dass H2testw für Windows den Trick macht. Gibt es eine einfache Möglichkeit, dies unter Ubuntu/Linux zu testen? Vielleicht ein spezialisiertes, gut funktionierendes Werkzeug?

Update: Um es klar zu machen, soll überprüft werden, ob die Größe, die der Controller dem Linux-System mitteilt, korrekt ist (, damit keine Daten verloren gehen ). Es ist nicht so, dass ich sehen möchte, ob ich 128 GB statt 127,3 GB bekomme. Ich möchte testen, ob alle Daten, die ich schreibe, wieder lesbar sind. Leider kann ich auf englischen Tech-Sites nur wenige Informationen dazu finden. Es gibt jedoch gute deutsche Quellen. Ich suche tatsächlich nach einer solchen Anwendung, aber für Ubuntu/Linux: https://www.raymond.cc/blog/test-and-detect-fake-or-counterfeit-usb-flash-drives -von-ebay-mit-h2testw-gekauft /

Update2: Ich habe versucht, einige Quellen auf Englisch zusammenzubringen. Ich habe aus Zeitgründen nicht alle ausführlich gelesen.

Update3: Erläuterungen

Aufgrund der unten stehenden seltsamen Kritik einige Erklärungen.

Was ist das Problem und warum löst dd alleine es nicht?

Dies ist eine Reaktion auf

"Finde klar heraus, welches Problem du lösen willst und was die Definition von" Fake Drive "ist."

Es scheint, dass einige Leute das Problem nicht verstehen. Deshalb versuche ich es so kurz wie möglich zu erklären, obwohl ich denke, dass dies sehr weit von meiner Frage entfernt ist.

Die Kapazität der USB-Geräte, die Sie von Ihrem Betriebssystem oder von Unix-Tools erhalten, kann falsch sein. Dies ist fatal, da Ihr Betriebssystem regelt, an wie viele Daten Sie diese senden können. Wenn Sie mehr Daten senden, als es wirklich aufnehmen kann, gehen Daten verloren. Das ist ein Problem. Warum kann das passieren?

Sie müssen das USB-Protokoll nicht genau kennen, um das Problem zu verstehen. Serielle Schnittstellen haben die gemeinsame Eigenschaft, dass das Client-Gerät (das USB-Laufwerk) über diese serielle Schnittstelle seine eigene Kapazität mitteilen muss. Dies bedeutet, dass das Client-Gerät einen eigenen Controller benötigt, der sich mit dem Zweck des Geräts und seiner Kapazität auskennt. Es entscheidet auch, was getan wird, wenn es den Befehl zum Speichern erhält. Wenn die Steuerung auf diese Weise programmiert ist, kann sie den Befehl einfach ignorieren oder etwas mit den Daten überschreiben.

Was bedeutet das? Was auch immer Ihre Unix-Tools über die Kapazität des Laufwerks aussagen: Es ist das, was die Tools vom Laufwerk verlangt haben, nichts weiter. Dafür wurde h2testw erfunden: Es testet die tatsächliche Größe mit einer später erläuterten Methode und vergleicht sie mit den Angaben des Laufwerks. Wenn dies nicht der Fall ist, kann es zu Datenverlusten kommen, da alle gängigen Vorgänge zum Speichern von Daten von den Informationen Ihres Betriebssystems abhängen, die nur den Controller fragen. Warum fragst du nur? Das Testen benötigt Zeit und überschreibt alle Daten auf dem Laufwerk. Daher ist es selbstverständlich, dass sich ein Betriebssystem auf diese Informationen verlassen muss.

Um die tatsächliche Kapazität wie h2testw zu überprüfen, können Sie tatsächlich dd verwenden, um Daten auf das Laufwerk zu schreiben, es erneut zu lesen und zu überprüfen, ob es dasselbe ist, das Sie geschrieben haben. Ganz echt. Die Art der Hardware und das Laufwerk machen es komplizierter. Betrachten Sie beispielsweise Schreibcaches. Sie müssen sicherstellen, dass Sie nicht aus dem Cache lesen. Dies ist nur ein Beispiel dafür, warum es nicht so einfach ist, wie es aussieht. Denken Sie auch, dass nur das Schreiben von Nullen eine geringe Informationsentropie bedeutet, die beim Lesen rekonstruiert werden kann. Im Detail ist es einfach nicht so einfach. Sie können es natürlich immer noch manuell machen.

Aber warum, wenn man es automatisieren kann? Warum zur Arbeit? f3 implementiert, wie in meiner Antwort unten vorgeschlagen, Unmengen von Gedanken vieler Mitwirkender (bedenken Sie, dass es eine Art erweiterter h2testw ist) und implementiert auch mehrere Methoden mit unterschiedlichen Kompromissen. Der Entwickler fand die Tricks der verschiedenen gefälschten Laufwerke (auch bekannt als gefälschte Laufwerke) heraus, die er zur Hand hatte . Während ich also die Theorie und das Problem verstehe (anscheinend sind die Probleme in deutschen technischen Medien gut erklärt, aber nicht in englischsprachigen Medien), gebe ich nicht vor, alles zu verstehen, weshalb ich es oben erwähnt habe. Es ist nur die Theorie, die ich verstehe, und ich bin eher ein Software-Typ. Aber als Informatikstudent verstehe ich es gut genug, um das Problem zu erkennen.

"Versuchen Sie, grundlegende Unix-Dienstprogramme zu verstehen"

Eigentlich habe ich diesen bereits beantwortet, aber um es klar zu machen: Unix-Tools verwenden nur das USB-Protokoll (natürlich nur für USB-Geräte), um Informationen zu sammeln. Es macht keinen Sinn, mehr als das zu tun.

Hilft es, nur von vertrauenswürdigen Lieferanten einzukaufen?

tl; dr: Das tut es nicht.

"Wenn es um den Kauf von Waren geht, sollten Sie, genau wie bei jeder Art von Sicherheit, einen vertrauenswürdigen Verkäufer finden und Laufwerke nur von diesen kaufen."

Bei Sicherheit geht es NICHT um Vertrauen! Es geht um Verifikation und Validierung! Sorry, aber das ist in vielerlei Hinsicht so falsch.

Angenommen, Sie kaufen über einen vertrauenswürdigen Verkäufer. Ein paar Fragen:

  1. Hat der Lieferant die Hardware getestet, um sicherzustellen, dass keine Daten verloren gehen? Erkennt er, wenn er gefälschte Laufwerke kauft und verkauft? Nicht unbedingt.

  2. Ist es möglich, dass er Sachen kauft, von denen er nicht weiß, dass sie gefälscht sind? Schauen Sie sich die neuesten Ryzen-Fälschungen an: https://www.pcgamer.com/beware-of-fake-ryzen-processors-selling-on-Amazon/ , https://www.heise.de/newsticker/meldung/Direkt-von-Amazon-Faelschungen-von-AMDs-Ryzen-Prozessoren-im-Umlauf-3772757.html

  3. Wenn ich meine Präsentation im Laufwerk verliere und die Präsentation vermassle, wird mein vertrauenswürdiger Lieferant in die Vergangenheit zurückkehren und mich retten? Es wird wahrscheinlich die Festplatte ersetzen, da die letzte Zeitreise DeLorean im Jahre 1885 zerstört wurde.

Andere Sachen

"Diese Frage scheint eher" Promo "für das zu sein, was OP mag, und es scheint, dass OP viel weniger daran interessiert ist, die Laufwerke tatsächlich zu testen."

Das ist lächerlich. Ich habe speziell nach einem ähnlichen Tool wie h2testw gesucht, das auch unter Linux läuft. Und ja, das ist, was ich "möchte", hilfreiche Antwort, so leid. Ich hatte keine Ahnung, dass die englischsprachige Presse sich solcher Probleme nicht so bewusst ist und hatte das Glück, später so etwas zu finden. Dies ist keine Werbung, aber es sieht so aus, als ob Sie eine verwenden könnten.

22
verpfeilt

f3 - Blitzbetrug bekämpfen

Es gibt nur eine Alternative, die ich gefunden habe, aber ich denke, dies ist sogar eine bessere als das ursprüngliche Tool h2testw für MS Windows. Glücklicherweise ist es sehr einfach zu bedienen, auch von der Kommandozeile aus. Es gibt jedoch GUIs. Auf der Tools-Website finden Sie außerdem zahlreiche Informationen zur Implementierung und zum Problem mit gefälschten Laufwerken.

f3 bietet zwei Methoden an:

  • methode f3probe: Viel schneller
  • methode h2testw: Langsamer. Testen Sie auch die R/W-Leistung. Wahrscheinlich zuverlässiger.

Die f3probe Methode (empfohlen)

f3probe ist eine Möglichkeit, die Laufwerke nicht so genau, aber schneller zu testen, da nicht auf das gesamte Laufwerk geschrieben wird. Weitere Informationen finden Sie auf der Tools-Website. Wenn Sie 100% sicher sein möchten, verwenden Sie besser die Methode h2testw. Wie der Entwickler auf der Website beschreibt:

f3probe ist der schnellste Weg, um gefälschte Laufwerke und ihre tatsächlichen Größen zu identifizieren.

Und:

Da es sich bei f3probe um freie Software handelt und f3probe sich als kampferprobt erwiesen hat, kann f3probe in Smartphones, Kameras, MP3-Player und andere Geräte integriert werden, um die Verbreitung von gefälschtem Blitz ein für alle Mal zu stoppen.

Es gibt auch ein Verwendungsbeispiel auf der Website:

Warnung : Dadurch werden alle zuvor auf Ihrer Festplatte gespeicherten Daten zerstört!

$ Sudo f3probe --destructive --time-ops /dev/sdb
[Sudo] password for michel: 
F3 probe 6.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.

WARNING: Probing may **demolish data,** so it is more suitable for flash drives out of the box, without files being stored yet. The process normally takes from a few seconds to 15 minutes, but
         it can take longer. Please be patient. 

Bad news: The device `/dev/sdb' is a counterfeit of type limbo

You can "fix" this device using the following command:
f3fix --last-sec=16477878 /dev/sdb

Device geometry:
             *Usable* size: 7.86 GB (16477879 blocks)
            Announced size: 15.33 GB (32155648 blocks)
                    Module: 16.00 GB (2^34 Bytes)
    Approximate cache size: 0.00 Byte (0 blocks), need-reset=yes
       Physical block size: 512.00 Byte (2^9 Bytes)

Probe time: 1'13"
 Operation: total time / count = avg time
      Read: 472.1ms / 4198 = 112us
     Write: 55.48s / 2158 = 25.7ms
     Reset: 17.88s / 14 = 1.27s

Beachten Sie, dass es auch einen Befehl zurückgibt, mit dem Sie das Laufwerk mit seiner tatsächlichen Größe mithilfe von f3fix verwenden können.

Das f3fix-Tool

f3fix erstellt eine Partition, die der tatsächlichen Größe des gefälschten Laufwerks entspricht. Verwenden Sie die Ausgabe von f3probe, um die Parameter für i3fix zu bestimmen

Sudo f3fix --last-sec=16477878 /dev/sdb

Die Methode h2testw/Testen der Leistung mit f3read/f3write

F3 ist eine Sammlung von Tools, die sich mit gefälschten Flash-Laufwerken befassen. Zwei von ihnen implementieren zusammen die h2testw- Methode:

f3write [--start-at=NUM] [--end-at=NUM] <PATH>
f3read  [--start-at=NUM] [--end-at=NUM] <PATH>

f3write fragt nach der angegebenen Größe der Geräte und füllt sie mit generierten Dateien mit einer Größe von jeweils 1 GB. f3read liest alle diese Dateien und sieht, dass sie vollständig und nicht beschädigt sind. Als Beispiel die Befehle, die ich zum Testen meines ~ 128-GB-USB-Sticks verwendet habe:

$ f3write /media/username/1EB8021AB801F0D7/
Free space: 117.94 GB
Creating file 1.h2w ... OK!                           
...
Creating file 118.h2w ... OK!                         
Free space: 0.00 Byte
Average writing speed: 11.67 MB/s

Testen Sie nun, ob die Dateien korrekt gespeichert sind:

$ f3read /media/username/1EB8021AB801F0D7/
                  SECTORS      ok/corrupted/changed/overwritten
Validating file 1.h2w ... 2097152/        0/      0/      0
...
Validating file 118.h2w ... 1979488/        0/      0/      0

  Data OK: 117.94 GB (247346272 sectors)
Data LOST: 0.00 Byte (0 sectors)
           Corrupted: 0.00 Byte (0 sectors)
    Slightly changed: 0.00 Byte (0 sectors)
         Overwritten: 0.00 Byte (0 sectors)
Average reading speed: 32.38 MB/s

Der Test für ein Laufwerk dieser Größe dauerte mit dieser Methode ungefähr drei Stunden und verursachte manchmal eine hohe Festplattenlast auf meinem Computer, aber es wird mir gesagt, dass dies am genauesten ist.

In Ubuntu installieren

Am Terminal:

Sudo apt install f3

Dies bringt dir: f3brew, f3fix, f3probe, f3read, f3write mit ihren Manpages.

Diese Tools sind Teil des Pakets f3, das mindestens unter Ubuntu 15.10 verfügbar ist. Laut der Website gibt es einige weitere Tools, die zur Verfügung stehen. Um sie zu bekommen, werfen Sie einen Blick auf die Website.
Das Paket enthält kurze, aber nützliche Hilfeseiten, obwohl sie meiner Meinung nach einige Informationen auf der Website über den Unterschied zwischen f3read/write und f3probe vermissen, weshalb diese Antwort etwas länger wurde.

27
verpfeilt

Ich habe ein einfaches Tool dafür geschrieben, es heißt CapacityTester (Screenshot) und es hat eine GUI sowie eine CLI.

Es gibt eine vorkompilierte Binärdatei für Debian 7 zum Herunterladen , die auf einem modernen Ubuntu-System sehr wahrscheinlich sofort funktioniert.

Ich habe es für meinen persönlichen Gebrauch geschrieben, weil ich für diesen Zweck kein grafisches Werkzeug gefunden habe. Sie müssen lediglich zuerst Ihr leeres USB-Flash-Laufwerk einbinden, es auswählen und den Test starten. Es ist ein sehr dummes Tool, denn alles, was es tut, ist, das Laufwerk mit Dateien zu füllen und dann zu überprüfen, ob die Daten auf dem Laufwerk korrekt sind. Der Test wird beim ersten Fehler (Schreiben oder Lesen/Überprüfen) abgebrochen. Es wird der Offset des Blocks gemeldet, der nicht erfolgreich geschrieben oder überprüft werden konnte. Dies ist jedoch ein logischer Offset, sodass diese Informationen möglicherweise unbrauchbar sind, da sie vom Dateisystem abhängen, in dem sich die Dateien auf dem Laufwerk befinden. Wenn das Laufwerk jedoch mit Daten gefüllt wurde und alles gelesen und überprüft werden konnte, sollte davon ausgegangen werden können, dass die gemeldete Kapazität des Laufwerks korrekt ist. Als Randnotiz werden die Testdateien automatisch gelöscht (dies funktioniert möglicherweise nicht, wenn das Laufwerk defekt ist).

Auch hier ist es sehr einfach, da es nur mit Dateien über einem vorhandenen Dateisystem funktioniert. Es gibt also einige KB (+ 1M Puffer), die nicht getestet werden können. Und es ist sehr langsam, weil es wirklich das gesamte Dateisystem ausfüllt. F3 ist sicherlich viel ausgefeilter und auch schneller, hat aber keine GUI. Der einzige Grund, warum CapacityTester vorhanden ist, besteht darin, dass es über eine grafische Benutzeroberfläche verfügt, die von Benutzern verwendet werden kann, die mit der Befehlszeile nicht vertraut sind oder einfach eine grafische Benutzeroberfläche bevorzugen.

Feedback ist erwünscht.

3
c0xc