web-dev-qa-db-fra.com

Vérifiez la taille réelle de la clé USB

J'ai récemment lu beaucoup de choses sur les fausses cartes MicroSD et les clés USB prétendant disposer de beaucoup d'espace (même si vous demandez à votre ordinateur), tout en offrant physiquement beaucoup moins. J'ai récemment acheté un lecteur USB SanDisk (128 Go revendiqué) et je souhaite tester sa taille. Ce n'est pas acheté via eBay ou quelque chose du genre, mais je veux vraiment tester la taille réelle avant de l'utiliser de manière productive.

Je pourrais simplement copier des éléments dessus, les copier en arrière et vérifier si les fichiers sont corrects. Je pourrais aussi l'automatiser avec des hachages et d'autres choses. Mais j'espérais qu'il existe une solution plus précise. J'ai lu que pour Windows, H2testw fait l'affaire. Existe-t-il un moyen simple de tester cela sur Ubuntu/Linux? Un outil de travail spécialisé et efficace peut-être?

Mise à jour: Pour que tout soit bien clair, l’idée est de vérifier que la taille donnée au système linux par le contrôleur est correcte ( afin qu’aucune donnée ne soit perdue ). Ce n'est pas comme si je voulais voir si j'obtenais 128 Go au lieu de 127,3 Go. Je veux tester si toutes les données que j'écris seront à nouveau lisibles. Malheureusement, je ne trouve que quelques informations à ce sujet sur les sites techniques anglais. Il existe cependant de bonnes sources allemandes. Je cherche en fait une application comme celles-ci, mais pour Ubuntu/Linux: https://www.raymond.cc/blog/test-and-detect-fake-or-counterfeit-usb-flash-drives -acheté-sur-ebay-avec-h2testw /

Update2: J'ai essayé de rassembler des sources en anglais. Je ne les ai pas tous lus en détail, faute de temps.

Update3: Explications

En raison des étranges critiques ci-dessous, quelques explications.

Quel est le problème et pourquoi dd seul ne le résout-il pas?

Ceci est une réaction à

"Déterminez clairement quel est le problème que vous essayez de résoudre et quelle est la définition de" lecteur factice "."

Il semble que certaines personnes ne comprennent pas le problème. J'essaie donc de l'expliquer le plus brièvement possible dans les détails, même si je pense que cela va beaucoup plus loin que ma question.

La capacité des périphériques usb fournis par votre système d'exploitation ou les outils Unix peut être fausse. Ceci est fatal, car votre système d'exploitation détermine la quantité de données à laquelle vous pouvez l'envoyer. Envoyez plus de données que ce qu’il peut réellement contenir, vous obtiendrez une perte de données. C'est un problème. Alors, pourquoi cela peut-il arriver?

Vous n'avez pas besoin de bien connaître le protocole USB pour comprendre le problème. Les interfaces série ont la propriété commune que le périphérique client (le lecteur USB) devra indiquer sa propre capacité via cette interface série. Cela signifie que le périphérique client a besoin de son propre contrôleur avec une connaissance de la fonction du périphérique et, dans ce cas, de sa capacité. Il décide également de ce qui est fait lorsqu'il reçoit la commande pour stocker quelque chose. Si le contrôleur est programmé de cette manière, il peut simplement ignorer la commande ou écraser quelque chose avec les données.

Qu'est-ce que ça veut dire? Quels que soient vos outils Unix vous indiquent la capacité du lecteur: c'est ce que les outils ont demandé au lecteur, rien de plus. C'est pour cela que h2testw a été inventé: il teste la taille réelle avec une méthode expliquée plus tard, et la compare à ce que dit le lecteur. Si ce n'est pas le cas, vous risquez de perdre des données, car toutes vos opérations courantes de stockage de données reposent sur les informations de votre système d'exploitation, qui ne font que demander au contrôleur. Pourquoi juste demander? Les tests ont besoin de temps et écrasent toutes les données du disque. Il est donc naturel qu'un système d'exploitation ait besoin de ces informations.

Pour vérifier la capacité réelle comme h2testw, vous pouvez en effet utiliser dd pour écrire des données sur le lecteur, les relire et voir si elles sont identiques. Totalement légitime. La nature du matériel et le lecteur compliquent les choses. Considérez write-caches par exemple. Vous devez vous assurer que vous ne lisez pas dans le cache. Ceci n'est qu'un exemple de la raison pour laquelle ce n'est pas aussi facile qu'il y paraît. Pensez également que simplement écrire des zéros signifie une faible entropie d'informations, qui peuvent être reconstruites lors de la lecture. Ce n'est pas si facile en détail. Vous pouvez toujours le faire manuellement, bien sûr.

Mais pourquoi, quand vous pouvez automatiser les choses? Pourquoi au travail? F3, tel que proposé dans ma réponse ci-dessous, implémente des tonnes de pensées de nombreux contributeurs (considérez que c'est en quelque sorte une h2testw étendue) et implémente également plusieurs méthodes avec différents compromis. Le développeur a découvert les astuces des différents faux disques (lecteurs de contrefaçon) qu’ils avaient à portée de main . Ainsi, bien que je comprenne la théorie et le problème (apparemment, les problèmes sont bien expliqués dans les médias techniques allemands, mais pas dans les médias anglophones), je ne prétends pas tout comprendre, raison pour laquelle je l’ai mentionné plus haut. C'est juste la théorie que je comprends, et je suis plus un gars du logiciel. Mais en tant qu'étudiant en informatique, je le comprends assez bien pour voir le problème.

"Essayez de comprendre les utilitaires Unix de base"

En fait, j’ai déjà répondu à cette question, mais pour que ce soit bien clair: les outils Unix utilisent simplement le protocole USB (uniquement pour les périphériques USB) pour collecter des informations. Cela n'a pas de sens de faire plus que cela.

Est-ce utile d’acheter uniquement auprès de fournisseurs de confiance?

tl; dr: Ce n'est pas le cas.

"Lorsqu'il s'agit d'acheter des biens, comme pour toute forme de sécurité, songez à trouver un vendeur de confiance et n'achetez que des lecteurs."

La sécurité (et la sécurité) n'est pas une question de confiance! Il s'agit de vérification et de validation! Désolé, mais c'est tellement mauvais à bien des égards.

Supposons que vous achetez via un vendeur de confiance. Quelques questions:

  1. Le fournisseur a-t-il testé le matériel pour s'assurer de l'absence de perte de données? Reconnaît-il quand il achète de faux disques et les vend? Pas nécessairement.

  2. Est-il possible qu'il achète des choses dont il ne sait pas qu'il est faux? Regardez les récents faux ryzen: 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. Si je perds ma présentation dans le lecteur et bousille la présentation, mon fournisseur de confiance va-t-il remonter dans le temps et me porter secours? Il remplacera probablement le disque dur, car le dernier DeLorean, qui avait été détruit en 1885.

D'autres choses

"Cette question semble vraiment ressembler davantage à une" promo "pour ce que OP aime, et semble bien que OP soit beaucoup moins intéressé par le fait de tester les disques."

C'est ridicule. Je recherchais spécifiquement un outil similaire à h2testw qui fonctionne également sur linux. Et oui, c'est ce que je "voudrais", réponse utile, alors désolé. Je ne savais pas que la presse anglophone n'était pas au courant de ces problèmes et j'ai eu la chance de trouver quelque chose comme ça plus tard. Ce n'est pas une promo, mais en fait, il semblerait que vous puissiez en utiliser une.

22
verpfeilt

f3 - Lutte contre la fraude éclair

J'ai trouvé une seule alternative, mais je pense que c'est même une meilleure solution que l'outil h2testw d'origine pour MS Windows. Heureusement, il est très facile à utiliser, même en ligne de commande. Il y a des interfaces graphiques disponibles, cependant. Il existe également de nombreuses informations sur la mise en œuvre et le problème des faux lecteurs sur le site Web des outils.

f3 propose deux méthodes:

  • méthode f3probe: beaucoup plus rapide
  • méthode h2testw: Plus lente. Testez également les performances R/W. Probablement plus fiable.

La méthode f3probe (recommandée)

f3probe est un moyen de tester les lecteurs, pas aussi précis, mais plus rapide car il n’écrit pas sur l’ensemble du lecteur. Vous pouvez en savoir plus sur le site Web des outils. Si vous voulez être sûr à 100%, utilisez plutôt la méthode h2testw. Comme le développeur le décrit sur le site:

f3probe est le moyen le plus rapide d’identifier les faux lecteurs et leurs tailles réelles.

Et:

Enfin, grâce au logiciel libre f3probe, et une fois que f3probe a fait ses preuves, f3probe pourrait être intégré sur les smartphones, les appareils photo, les lecteurs MP3 et autres périphériques afin d’arrêter une fois pour toutes la prolifération des faux flashs.

Il y a aussi un exemple d'utilisation sur le site:

Avertissement : Ceci détruira toutes les données précédemment stockées sur votre disque!

$ 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

Notez qu'il renvoie également une commande qui vous permet d'utiliser le lecteur avec sa taille réelle, à l'aide de f3fix.

L'outil f3fix

f3fix crée une partition qui correspond à la taille réelle du faux lecteur. Utilisez la sortie de f3probe pour déterminer les paramètres pour i3fix.

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

La méthode h2testw/Test des performances avec f3read/f3write

F3 est un ensemble d’outils permettant de traiter les faux lecteurs flash. Deux d'entre eux implémentent la méthode h2testw-:

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

f3write vous demandera la taille revendiquée par le périphérique et le remplira avec les fichiers générés d'une taille de 1 Go chacun. f3read lira tous ces fichiers et verra s'ils sont complets et non cassés. À titre d’exemple, les commandes que j’ai utilisées pour tester ma clé USB de ~ 128 Go:

$ 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

Maintenant, pour vérifier si les fichiers sont correctement stockés:

$ 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

Le test d’un lecteur de cette taille a pris environ trois heures avec cette méthode et a parfois entraîné une lourde charge de disque sur mon ordinateur, mais c’est ce qui me paraît le plus précis.

Installer dans Ubuntu

Sur le terminal:

Sudo apt install f3

Cela vous apportera: f3brew, f3fix, f3probe, f3read, f3write avec leurs pages de manuel.

Ces outils font partie du paquetage f3, qui est au moins disponible sur Ubuntu 15.10. Selon le site Web, certains outils supplémentaires sont disponibles. Pour les obtenir, jetez un coup d'œil sur le site Web.
Le paquet contient des pages de manuel courtes mais utiles, même si je pense qu’elles manquent certaines informations du site Web concernant la différence entre f3read/write et f3probe, par exemple. C’est pourquoi cette réponse a pris un peu plus de temps.

27
verpfeilt

J'ai écrit un outil simple pour cela, il s'appelle CapacityTester (capture d'écran) et il a une interface graphique ainsi qu'une interface de ligne de commande.

Il y a un binaire précompilé pour Debian 7 disponible au téléchargement , qui fonctionnera très probablement sur un système Ubuntu moderne.

Je l'ai écrit pour mon usage personnel car je ne pouvais pas trouver d'outil graphique à cette fin. Vous devez d’abord monter votre clé USB vide, la sélectionner et lancer le test. C'est un outil très stupide, car il ne fait que remplir le lecteur de fichiers, puis vérifier que les données qu'il contient sont correctes. Il abandonnera le test à la première erreur (écriture ou lecture/vérification). Il signalera le décalage du bloc qui n'a pas pu être écrit ou vérifié, mais il s'agit d'un décalage logique. Cette information peut donc être inutile car elle dépend du système de fichiers où les fichiers se trouvent sur le lecteur. Cependant, lorsque le disque a été rempli avec des données et que tout peut être lu et vérifié, il devrait être prudent de supposer que la capacité rapportée du disque est correcte. De plus, les fichiers de test sont automatiquement supprimés (cela peut ne pas fonctionner si le lecteur est défectueux).

Encore une fois, c'est très simple car cela ne fonctionne qu'avec des fichiers situés au dessus d'un système de fichiers existant. Il y a donc des KB (+ 1M de mémoire tampon) qui ne peuvent pas être testés. Et c'est très lent car il remplit vraiment tout le système de fichiers. F3 est certes beaucoup plus sophistiqué et plus rapide, mais il n’a pas d’interface graphique. CapacityTester existe uniquement parce qu'il dispose d'une interface graphique qui peut être utilisée par les utilisateurs qui ne sont pas familiarisés avec la ligne de commande ou qui préfèrent simplement une interface graphique.

Les commentaires sont appréciés.

3
c0xc