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

16

Ich habe vor kurzem eine Menge über gefälschte USB-Sticks gelesen, die behaupten, viel Platz zu haben (selbst wenn Sie Ihren Computer fragen), während Sie physisch viel weniger bieten. Ich habe kürzlich ein SanDisk USB-Laufwerk gekauft (128 GB beansprucht) und möchte seine Größe testen. Es ist nicht über eBay oder etwas gekauft, aber ich möchte wirklich die reale Größe testen, bevor Sie es produktiv verwenden.

Ich könnte einfach Zeug darauf kopieren, es zurückkopieren und schauen, ob die Dateien in Ordnung sind. Ich könnte es auch mit Hashes und anderem automatisieren. Aber ich hoffte, dass es eine genauere Lösung gibt. Ich lese das für Windows, H2testw macht den Trick. Gibt es eine einfache Möglichkeit, dies auf Ubuntu / Linux zu testen? Ein spezialisiertes, gut funktionierendes Tool vielleicht?

Update: Nur um es klar zu stellen, die Idee ist zu verifizieren, dass die Größe, die das Linux-System vom Controller erfahren hat, korrekt ist ( damit keine Daten verloren gehen ). Es ist nicht so, dass ich sehen möchte, wenn ich 128 GB statt 127.3 GB bekomme. Ich möchte testen, ob alle Daten, die ich schreibe, wieder lesbar sind. Leider kann ich nur ein paar Informationen dazu auf englischen Tech-Websites finden. Es gibt jedoch gute deutsche Quellen. Ich bin tatsächlich auf der Suche nach einer Anwendung wie diese, aber für Ubuntu / Linux: link

Update2: Ich habe versucht, einige Quellen auf Englisch zusammen zu bringen. Ich habe nicht alle im Detail gelesen, weil mir die Zeit fehlte.

Update3: Erläuterungen

Wegen der seltsamen Kritiker unten, einige Erklärungen.

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

Dies ist eine Reaktion auf

  

"Finde klar heraus, was das Problem ist, das du lösen willst und was ist die Definition von" falsches Laufwerk "."

Es scheint, dass einige Leute das Problem nicht verstehen. Also versuche ich es so kurz wie möglich im Detail zu erklären, obwohl ich denke, dass dies meine Frage in hohem Maße betrifft.

Die Kapazität von USB-Geräten, die Ihr Betriebssystem oder Unix-Tools Ihnen geben, kann falsch sein. Dies ist fatal, da Ihr Betriebssystem regelt, wie viele Daten Sie senden können. Senden Sie mehr Daten, als sie wirklich halten können, Sie erhalten einen Datenverlust. Das ist ein Problem. Also, warum kann das passieren?

Sie müssen das USB-Protokoll nicht gut 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 mit etwas Wissen über den Zweck des Geräts und in diesem Fall seine Kapazität benötigt. Es entscheidet auch, was getan wird, wenn es den Befehl erhält, etwas zu speichern. Wenn der Controller so programmiert ist, kann er den Befehl einfach ignorieren oder etwas mit den Daten überschreiben.

Was bedeutet das? Was auch immer Ihre Unix-Tools Ihnen über die Kapazität des Laufwerks sagen: Es ist, was die Tools das Laufwerk gefragt, nichts mehr. Dafür wurde h2testw erfunden: Er testet die reale Größe mit einer später erläuterten Methode und vergleicht sie mit dem, was das Laufwerk sagt. Wenn dies nicht der Fall ist, haben Sie möglicherweise einen Datenverlust, da alle Ihre allgemeinen Vorgänge zum Speichern von Daten auf die Informationen Ihres Betriebssystems angewiesen sind, die nur den Controller fragen. Warum nur fragen? Das Testen benötigt Zeit und überschreibt alle Daten auf dem Laufwerk. Es ist also natürlich, dass ein Betriebssystem auf diese Informationen angewiesen ist.

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 sehen, ob es dasselbe ist, das Sie geschrieben haben. Völlig legitim. Die Art der Hardware und das Laufwerk machen es komplizierter. Betrachten Sie zum Beispiel Write-Caches. 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 das Schreiben von Nullen eine niedrige Informationsentropie bedeutet, die beim Lesen rekonstruiert werden kann. Es ist im Detail nicht so einfach. Sie können es natürlich immer noch manuell tun.

Aber warum, wenn Sie Dinge automatisieren können? Warum zur Arbeit? f3, wie in meiner Antwort unten vorgeschlagen, implementiert Tonnen von Gedanken vieler Mitwirkender (bedenken Sie, dass es eine Art erweitertes h2testw ist) und es implementiert auch mehrere Methoden mit unterschiedlichen Kompromissen. Der Entwickler ermittelte die Tricks verschiedener gefälschter Laufwerke (auch gefälschte Laufwerke genannt), die sie zur Hand hatten.So, während ich die Theorie und das Problem verstehe (scheinbar, da die Probleme in deutschen Tech-Medien gut erklärt werden, aber nicht in englischsprachigen Medien), tue ich nicht so, als ob ich alles verstehe, 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 sehen.

  

"Versuche grundlegende Unix-Hilfsprogramme zu verstehen"

Eigentlich habe ich diese schon beantwortet, aber um es deutlich 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 zu tun.

Hilft es, nur bei Truste-Lieferanten zu kaufen?

tl; dr: Tut es nicht.

  

"Wenn es darum geht, Waren zu kaufen, so wie es zu jeder Art von Sicherheit kommt, sollten Sie einen vertrauenswürdigen Verkäufer finden und nur Laufwerke von ihnen kaufen."

Sicherheit (und Sicherheit) geht NICHT um Vertrauen! Es geht um Verifikation und Validierung! Entschuldigung, aber das ist so falsch in vielerlei Hinsicht.

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 wieder, 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 jüngsten Ryzen-Fälschungen an: link , link

  3. Wenn ich meine Präsentation in der Festplatte verliere und die Präsentation vermassle, wird mein vertrauenswürdiger Lieferant rechtzeitig zurückgehen und mich retten? Es wird wahrscheinlich die Fahrt ersetzen, da das letzte zeitfahrende DeLorean 1885 zerstört wurde.

Andere Sachen

  

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

Das ist lächerlich. Ich suchte speziell nach einem ähnlichen Werkzeug zu h2testw, das auch auf Linux läuft. Und ja, das würde ich gerne haben, hilfreiche Antwort, es tut mir so leid. Ich hatte keine Ahnung, dass die englischsprachige Presse sich dieser Probleme nicht bewusst ist und hatte das Glück, so etwas später zu finden. Dies ist keine Werbung, aber tatsächlich scheint es, dass Sie eine verwenden könnten.

    
verpfeilt 21.02.2016, 19:23
quelle

3 Antworten

20

Es gibt nur eine Alternative, die ich gefunden habe, aber ich denke, das ist sogar eine bessere Alternative als das ursprüngliche Tool h2testw für MS Windows. Glücklicherweise ist es wirklich einfach zu benutzen, sogar von der Kommandozeile aus. Es gibt jedoch GUIs. Es gibt auch eine Menge Informationen über die Implementierung und das Problem mit gefälschten Laufwerken auf der Tools-Website.

F3 - "Fight Flash Fraud" oder "Fight Fake Flash"

Quelle: Link
QT GUI: link
OSX GUI: link

Die h2testw-Methode

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

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

f3write fragt nach der Größe der beanspruchten Geräte und füllt sie mit generierten Dateien mit einer Größe von je 1 GB. f3read liest alle diese Dateien und sieht, dass sie vollständig und nicht kaputt sind. Als Beispiel die Befehle, die ich verwendet habe, um mein ~ 128gb-Thumb-Laufwerk zu testen:

~> 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

Jetzt testen, 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 schwere Festplattenlast auf meinem Computer, aber es wird mir am genauesten gesagt.

Die f3probe-Methode

f3probe ist eine andere Möglichkeit, um die Laufwerke zu testen, nicht so genau, aber schneller, da sie nicht auf das gesamte Laufwerk schreibt. Sie können mehr darüber auf der Tools-Website lesen. Wenn Sie 100% sicher sein wollen, verwenden Sie besser die h2testw-Methode. Wie der Entwickler auf der Website beschreibt:

  

f3probe ist der schnellste Weg, um gefälschte Laufwerke und deren tatsächliche Größe zu identifizieren.

und

  

Schließlich, weil f3probe freie Software ist und einmal f3probe ist   Kampf bewiesen, könnte F3probe in Smartphones, Kameras, MP3 eingebettet werden   Spieler und andere Geräte, um die Proliferation ein für allemal zu stoppen   von gefälschten Flash.

Es gibt auch ein Anwendungsbeispiel auf der Website:

$ 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 verwenden können, indem Sie f3fix verwenden.

Das f3fix-Werkzeug

  

Mit f3fix können Benutzer die tatsächliche Kapazität gefälschter Laufwerke nutzen, ohne Daten zu verlieren.

Installiere in Ubuntu

Die beschriebenen Tools sind Teil des Pakets f3 , das zumindest auf Ubuntu 15.10 verfügbar ist. Laut der Website gibt es einige weitere Tools, die verfügbar sind. Um sie zu bekommen, werfen Sie einen Blick auf die Website. Um das Paket zu installieren, geben Sie einfach ein Terminal ein:

sudo apt-get install f3

Das Paket enthält kurze, aber nützliche Hilfeseiten, obwohl ich denke, dass sie einige Informationen von der Webseite über den Unterschied von f3read / write und f3probe zum Beispiel vermissen, weshalb diese Antwort ein wenig länger dauert.

    
verpfeilt 02.04.2016, 22:29
quelle
3

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

Es gibt eine vorkompilierte Binärdatei für Debian 7, die zum Download verfügbar ist , die sehr wahrscheinlich von Anfang an funktionieren wird modernes Ubuntu-System.

Ich habe es für meinen persönlichen Gebrauch geschrieben, weil ich zu diesem Zweck kein grafisches Werkzeug finden konnte. Sie müssen nur Ihr leeres USB-Flash-Laufwerk zuerst montieren, es auswählen und den Test starten. Es ist ein sehr dummes Tool, weil es nur das Laufwerk mit Dateien füllt und dann überprüft, ob die Daten auf dem Laufwerk korrekt sind. Es wird den Test beim ersten Fehler (Schreiben oder Lesen / Verifizieren) abbrechen. Es wird den Offset des Chunks melden, der nicht erfolgreich geschrieben oder verifiziert werden konnte. Dies ist jedoch ein logischer Offset, so dass diese Information nutzlos sein kann, da sie vom Dateisystem abhängt, in dem sich die Dateien auf dem Laufwerk befinden. Wenn das Laufwerk jedoch mit Daten gefüllt wurde und alles gelesen und verifiziert werden konnte, sollte davon ausgegangen werden, dass die angegebene Kapazität des Laufwerks korrekt ist. Als Randnotiz werden die Testdateien automatisch gelöscht (dies funktioniert möglicherweise nicht, wenn das Laufwerk fehlerhaft ist).

Auch hier ist es sehr einfach, da es nur mit Dateien funktioniert, die über einem bestehenden Dateisystem liegen. 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, aber es hat keine GUI. Der einzige Grund, warum CapacityTester existiert, ist, dass es eine GUI hat, so dass es von Benutzern verwendet werden kann, die mit der Befehlszeile nicht vertraut sind oder einfach eine GUI bevorzugen.

Feedback ist erwünscht.

    
c0xc 01.08.2016 12:57
quelle
-5

Adressierung des Verhaltens von OP und des "gefälschten Laufwerks"

Ich bearbeite die Antwort, um einige Punkte richtig anzusprechen, da OP sehr vehement war (und meiner Meinung nach die meisten Kommentare und Antworten außer ihren eigenen, die ich verdächtig finde). Vor allem gibt es viele Behauptungen, dass es "Fake Drive" gibt, aber es gibt keine klare Definition darüber, was auf der Erde das bedeutet. OP erklärte:

  

Ich könnte einfach Zeug darauf kopieren, es zurückkopieren und schauen, ob die Dateien in Ordnung sind. Ich könnte es auch mit Hashes und anderem automatisieren. Aber ich hoffte, dass es eine genauere Lösung gibt.

OP selbst gab zu, dass sie "nur Zeug kopieren" und die Datenintegrität überprüfen könnten, aber waren sehr gegen alle anderen Kommentare und Antworten, die irgendetwas anderes vorschlagen, und OP hat F3 nur als "echten Deal" vorangetrieben. Die Frage selbst begann zunächst über die Größe des Laufwerks, aber dann OP aus irgendeinem Grund erwähnt Hashes zu "sehen, ob die Dateien in Ordnung sind", als ob es mysteriöse Laufwerke, die eine Größe behaupten und lassen Sie diese Größe schreiben, aber dann sind Daten korrupt. Daher finde ich es sehr verdächtig und würde OP als F3-Spam-Frage und -Antwort betrachten.

Wenn ein Laufwerk tatsächlich ein gefälschtes Laufwerk ist

In der Frage ist die offensichtliche Definition von OP

  

".. Laufwerke, die behaupten, viel Platz zu haben (oft zu weit getragen, wie 128 GB), während physikalisch nur 0,5 bis 4 GB angeboten."

Mit anderen Worten, der Controller behauptet X Datenmenge, aber USB kann nur enthalten etwas wie 80-90% weniger von dem, was behauptet wird.

Der Benutzer sudodus wird in Kommentare (Hervorhebung hinzugefügt):" Ich habe festgestellt, dass mehrere USB-Sticks etwas kleiner als die Nenngröße sind Nenne sie zu klein . Ich denke, die gefälschten Laufwerke sind 'substanziell unterdimensioniert' (normalerweise Hälfte der Nenngröße oder weniger ). Diese Definition ist großartig, aber wenn wir das nehmen, ist das gefälschte Laufwerk zu 50% definiert. Ein Laufwerk, das 64 GB beansprucht, aber nur 32 GB halten kann, verliert technisch die Hälfte seines Wertes an den Besitzer, und der Besitzer kann nur die Hälfte dessen, was er vorgesehen hat, auf das Laufwerk legen.

Ich schlage eine einfachere Definition vor: Fälschungsspeichergerät ist derjenige, der behauptet, Claimed Size zu haben, aber unter 15% Toleranz (und Toleranz ist Claimed Size ± 15 % ).

Die ± 15 % ist sehr vernünftig. Beachten Sie auch, dass Benutzer in der Regel zwischen Unix-, IEEE- und IEC-Organisationen verwirrt sind, die anstelle der Präfixstärke für die Datenspeichergröße ein binäres Präfix verwenden. Der Unterschied beträgt 20% bei yotta Prefix, aber USB-Laufwerke sind noch nicht da, also für vielleicht 20 Jahre sind 15 Prozent vernünftig. (Siehe askubuntu-Frage "Bedeutung von 'i' in 'MiB'" und Binärpräfix )

Testen des Laufwerks

Effektiv benötigt der Benutzer keine speziellen Tools, abgesehen von dem, was bereits mit Ubuntu und den meisten POSIX-kompatiblen Unix-Systemen geliefert wird. Lassen Sie uns die Definition nochmals betonen und umformulieren:

  

Wenn wir die Menge der zu fahrenden Daten nicht schreiben können und das, was wir schreiben, innerhalb einer Toleranz von 15% liegt, dann ist das Laufwerk in Ordnung

Der einfachste Weg ist, mit dd zu arbeiten, überschreiben Sie einfach das Gerät mit Nullen (und denken Sie daran, Ihre Dateien zu speichern, bevor Sie das tun).

sudo dd if=/dev/zero of=/dev/sdb1 iflag=nocache oflag=direct bs=1                        

Beachten Sie die bs=1 für die Blockgröße von 1 Byte. Der Befehl dd gibt normalerweise einen Bericht darüber, wie viel geschrieben wird.

$ dd if=/dev/zero of=/dev/null bs=1 count=1024
1024+0 records in
1024+0 records out
1024 bytes (1.0 kB, 1.0 KiB) copied, 0.00261981 s, 391 kB/s

Wir haben es gebeten, 1024 Bytes zu schreiben, es hat 1024 Bytes geschrieben.

Eine genauere Liste von Schritten, die der Definition entsprechen, wäre:

  • Finden Sie heraus, wie viele Daten das Laufwerk beansprucht (vorausgesetzt, Sie vermuten, dass df "falsch" ist). In diesem Beispiel nehmen wir an, dass /dev/sdb1 meine Gerätedatei für das USB-Laufwerk ist:

    $ df -P /dev/sdb1 | awk 'NR==2{print }'
    115247656
    

    Beachten Sie, dass -P Flag für POSIX-Portabilität steht, was bedeutet, dass die Blockgröße der Daten 1024 Byte beträgt. Dies bedeutet, dass sich 115247656 * 1024 Byte auf diesem Laufwerk befinden.

  • Finden Sie heraus, was 15% Toleranz unter dem Laufwerksanspruch (115247656) ist, verwenden Sie vielleicht ein Dienstprogramm, das Fließkommaberechnung unterstützt, zB awk :

     $ awk 'BEGIN{printf "%d\n",115247656*(1-0.15)}'
     97960507
    
  • Erstellen Sie zufällige Daten auf der Festplatte der gleichen Größe wie das Laufwerk im vorherigen Schritt, um sie als Benchmark zu verwenden: dd if=/dev/urandom of=./mytestfile.random bs=1024 count=97960507

  • Schreiben Sie jetzt Daten dd if=./mytestfile.random of=/dev/sda1 . Wenn das Laufwerk so viel halten kann, ist es "echt". Du kannst auch md5sum oder sha1sum von ./mytestfile.random nehmen und jetzt mit /dev/sda1 vergleichen.Noch besser wäre es, den mytestfile.random in den mountpoint der Datei zu schreiben, also das Dateisystem auf dem Laufwerk zu belassen und das Laufwerk nicht zu partitionieren, also

    dd if=./mytestfile.random of=/mountpoint/for/usb/drive/testfile.random
    
  • Für Integrität können Sie dann einfach einen Hashsum-Check durchführen, zB md5sum , sha1sum , sha256sum oder andere. Zum Beispiel

    md5sum ./mytestfile.random  /mountpoint/for/usb/drive/testfile.random
    

    Der entscheidende Punkt hier ist, dass, wenn die Menge der geschriebenen Daten innerhalb der Toleranz liegt und vor und nach dem Schreiben eine korrekte Prüfsumme erzeugt wird - das Laufwerk wahrscheinlich in Ordnung ist.

All dies kann in ein nettes Skript für die Bequemlichkeit eingefügt werden, wenn man so will.

Fazit

Diese Frage scheint eher wie "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. Darüber hinaus ist das Problem selbst menschlicher als das Problem "Laufwerk". In den Kommentaren erklärte OP selbst, dass sie USB-Verhalten nicht wirklich verstehen, aber vehement sind, "den Controller" zu beschuldigen. Ich hinterlasse diese Frage mit 3 Punkten:

  • Finde klar heraus, was das Problem ist, das du lösen willst und was die Definition von "Fake Drive" ist.
  • Versuchen Sie grundlegende Unix-Utilities
  • zu verstehen
  • Wenn es darum geht, Waren zu kaufen, so wie es zu jeder Art von Sicherheit kommt, ziehen Sie in Betracht, einen vertrauenswürdigen Verkäufer zu finden und nur Laufwerke von ihnen zu kaufen.
Sergiy Kolodyazhnyy 26.02.2016 19:44
quelle