F3 est un outil efficace qui évalue la capacité et la performance des cartes flash pour vérifier si elles respectent les spécifications annoncées. Il remplit le dispositif avec des données pseudorandom et vérifie ensuite si les mêmes données sont retournées lors de la lecture.
F3 signifie « Lutter contre la fraude des flash » ou « Lutter contre les fausses cartes flash ».
Sommaire
- Exemples
- Installation
- Autres ressources
Exemples
Nous utiliserons /dev/sdX
comme exemple ici, vous devez remplacer X
par une lettre minuscule correspondant au dispositif que vous souhaitez tester. La commande lsblk
vous donnera un aperçu de vos dispositifs actuels.
Évaluation de la performance avec f3read/f3write
Utilisez ces deux programmes dans cet ordre. La commande f3write écrira de gros fichiers sur votre disque monté, tandis que f3read vérifiera si le disque flash contient exactement les fichiers écrits :
$ ./f3write /media/michel/5EBD-5C80/ $ ./f3read /media/michel/5EBD-5C80/
Veuillez remplacer “/media/michel/5EBD-5C80/” par le chemin approprié. Sur les Mac, les dispositifs USB sont montés dans “/Volumes”.
Si vous avez installé f3read et f3write, vous pouvez omettre le “./” qui précède leurs noms.
Tests rapides de capacité avec f3probe
f3probe est le test de disque le plus rapide et convient aux grands disques car il n’écrit que ce qui est nécessaire pour tester le disque. Il fonctionne directement sur le dispositif de bloc (non monté) et doit être exécuté en tant qu’utilisateur privilégié :
# ./f3probe --destructive --time-ops /dev/sdX
Avertissement
Cela détruira toutes les données précédemment stockées sur votre disque !
Correction de la capacité à la taille réelle avec f3fix
f3fix crée une partition qui correspond à la taille réelle du disque contrefait. Utilisez la sortie de f3probe pour déterminer les paramètres pour f3fix :
# ./f3fix --last-sec=16477878 /dev/sdX
Installation
Télécharger et Compiler
Les fichiers de la version stable de F3 sont disponibles ici. La commande suivante décompresse les fichiers :
Compiler le logiciel stable sur Linux ou FreeBSD
Pour construire :
Si vous souhaitez installer f3write et f3read, exécutez la commande suivante :
Compiler le logiciel stable sur Windows/Cygwin
f3write et f3read peuvent être installés sur Windows, mais actuellement f3probe, f3fix et f3brew nécessitent Linux. Pour les utiliser sur une machine Windows, utilisez l’installation Docker. Pour f3write et f3read, continuez à lire.
Si ce n’est pas déjà fait, installez les paquets Cygwin suivants et leurs dépendances :
- gcc-core
- make
- libargp-devel
Pour construire, vous aurez besoin de drapeaux spéciaux :
export LDFLAGS="$LDFLAGS -Wl,--stack,4000000 -largp" make
Si vous souhaitez installer f3write et f3read, exécutez la commande suivante :
Compiler le logiciel stable sur Apple Mac
f3write et f3read peuvent être installés sur Mac, mais actuellement f3probe, f3fix et f3brew nécessitent Linux. Pour les utiliser sur Mac, utilisez l’installation Docker. Pour f3write et f3read, continuez à lire.
Utiliser HomeBrew
Si vous avez déjà Homebrew installé sur votre ordinateur, la commande ci-dessous installera F3 :
Utiliser MacPorts
Si vous utilisez MacPorts à la place, utilisez la commande suivante :
Docker
Démarrage rapide
Une image préconstruite est disponible sur Docker Hub, prête à être utilisée. Avec Docker démarré, exécutez simplement :
docker run -it --rm --deviceperon/f3 [ ]
Par exemple, pour tester un disque monté à /dev/sdX :
docker run -it --rm --device /dev/sdX peron/f3 f3probe --destructive --time-ops /dev/sdX
En option, vous pouvez également construire votre propre conteneur si vous ne souhaitez pas utiliser l’image préconstruite. À partir de ce répertoire, exécutez :
ou :
docker build -t f3:latest .
Pour exécuter des commandes f3 en utilisant votre image Docker nouvellement construite :
docker run -it --rm --devicef3:latest [ ] docker run -it --rm --device /dev/sdX f3:latest f3probe --destructive --time-ops /dev/sdX docker run -it --rm -v /path/to/mounted/device:/mnt/ f3:latest f3write /mnt/ docker run -it --rm -v /path/to/mounted/device:/mnt
Gestion des Permissions de Disque dans Docker
Introduction aux Défis de Mapping de Disque
L’intégration d’un périphérique de disque dans un conteneur Docker peut s’avérer complexe, surtout sur les systèmes d’exploitation Mac et Windows. Ce problème de passage de périphériques est bien documenté dans diverses ressources en ligne. En revanche, sur Linux, cette opération est généralement fluide. Sur Mac et Windows, Docker a tendance à traiter le disque comme un répertoire classique plutôt que comme un disque monté, ce qui peut entraîner des erreurs telles que f3probe: Impossible d'ouvrir le périphérique '/opt/usb': C'est un répertoire
, si le mapping réussit.
Solution via VirtualBox
Pour contourner ce problème, une solution consiste à utiliser docker-machine
pour créer une machine virtuelle VirtualBox (boot2docker) dans laquelle le conteneur Docker sera exécuté. VirtualBox permet effectivement le passage de périphériques, ce qui nous permet de transférer le périphérique à la machine virtuelle, puis au conteneur Docker. Des instructions détaillées ont été fournies par Milad Alizadeh, principalement axées sur les périphériques USB, mais ces étapes peuvent être adaptées à d’autres types de disques. Voici les commandes que j’ai utilisées sur mon terminal Mac (la procédure est probablement similaire sur Windows, bien que non testée) :
docker-machine create -d virtualbox default
docker-machine stop
vboxmanage modifyvm default --usb on
docker-machine start
vboxmanage usbfilter add 0 --target default --name flashdrive --vendorid 0x0123 --productid 0x4567
eval $(docker-machine env default)
Dans la commande usbfilter add
, le paramètre « name » correspond au nom que vous attribuez au filtre, et vous pouvez le nommer comme bon vous semble. Les identifiants --vendorid
et --productid
peuvent être trouvés sur Mac dans « Informations Système » sous « USB ». Vous pouvez également rechercher le bon périphérique en utilisant vboxmanage list usbhost
.
Ajout de Périphériques via l’Interface Graphique
Une autre méthode consiste à ajouter le périphérique via l’application GUI de VirtualBox :
docker-machine create -d virtualbox default
docker-machine stop
# Ouvrez VirtualBox et ajoutez manuellement le périphérique de disque avant de passer à la commande suivante
docker-machine start
eval $(docker-machine env default)
Après avoir exécuté ces commandes, débranchez et rebranchez la clé USB, puis exécutez :
docker-machine ssh default "lsblk"
Cela vous permettra de lister les périphériques. Recherchez le bon disque ; la colonne « SIZE » peut être utile pour identifier le périphérique souhaité. Par exemple, sdb
est un point de montage courant pour une clé USB. Vous devriez maintenant pouvoir exécuter la commande suivante :
docker run --rm -it --device /dev/sdX peron/f3 f3probe --destructive --time-ops /dev/sdX
Exploration du Système de Fichiers dans le Conteneur Docker
Il peut être utile d’entrer dans un prompt bash dans le conteneur Docker pour explorer le système de fichiers :
docker run --rm -it --device /dev/sdX peron/f3 bash
Cela vous permettra d’exécuter des commandes comme ls /dev/*
.
Autres Ressources
Interfaces Graphiques Disponibles
Grâce à notre communauté croissante de défenseurs contre la fraude des clés USB, plusieurs interfaces graphiques (GUI) sont désormais disponibles pour F3 :
- F3 QT : Une interface graphique pour Linux utilisant QT, prenant en charge
f3write
,f3read
,f3probe
, etf3fix
. Développé par Tianze. - F3XSwift : Une interface graphique pour Mac, prenant en charge
f3write
etf3read
. Développé par Volker Runkel.
Nous encourageons les utilisateurs à tester ces projets et à fournir des retours aux auteurs, ce qui contribuera à améliorer leur code.
Fichiers Utiles
Voici quelques fichiers importants associés à F3 :
- changelog : Journal des modifications pour les mainteneurs de paquets.
- f3read.1 : Page de manuel pour
f3read
etf3write
. Pour lire cette page, exécutezman ./f3read.1
. Pour l’installer, exécutezinstall --owner=root --group=root --mode=644 f3read.1 /usr/share/man/man1
. - LICENSE : Licence (GPLv3).
- Makefile : Fichier de compilation.
- README : Ce fichier.
- .h et .c : Code C de F3.
Scripts Bash
Bien que les scripts simples listés ici soient prêts à l’emploi, ils sont principalement conçus pour vous aider à rédiger vos propres scripts, afin de personnaliser F3 selon vos besoins spécifiques :
f3write.h2w - Script pour créer des fichiers identiques à H2testw.
Utilisation : `f3write.h2w /media/michel/5EBD-5C80/`
log-f3wr - Script qui exécute `f3write` et `f3read`, et enregistre leur sortie dans un fichier journal.
Utilisation : `log-f3wr log-filename /media/michel/5EBD-5C80/`
Veuillez noter que tous les scripts et exemples d’utilisation ci-dessus supposent que f3write
, f3read
, et les scripts se trouvent dans le même dossier.
Problèmes de Fiabilité des Clés USB
Si votre clé USB n’est pas frauduleuse (ou si vous avez utilisé f3fix
pour la « réparer »), mais que vous rencontrez encore des problèmes sporadiques de corruption de données, il est essentiel d’explorer les causes possibles et d’appliquer des solutions appropriées.
Il est possible que votre mémoire flash présente des « secteurs défectueux ». Si votre flash est formaté avec le système de fichiers FAT, vous pouvez utiliser un outil comme Flakyflash pour identifier les clusters de données défectueux et les marquer comme mauvais dans la table d’allocation de fichiers (FAT). Cela pourrait vous permettre de prolonger légèrement la durée de vie de votre mémoire flash, mais il est crucial de la considérer comme défaillante et de la remplacer dès que possible.