Deux aimants « collés » l'un sur l'autre, petits mais costauds, je n'ai pas mesuré l'intensité de ces aimants mais pour essayer de vous donner une idée, je peux vous dire qu'il est très dur, voir impossible, de les séparer à la force des mains une fois l'un sur l'autre...

flash_magnet.jpg

Pour s'assurer de l'état des données après chaque phase de test, une lecture sera faite dans la carte et une comparaison de md5 sera faite sur l'intégralité de la carte.

Afin d'avoir un rendu plus lisible, le contenu de la carte sera une image au format TGA et c'est Léonard de Vinci qui nous prêtera son auto-portrait, la détérioration du contenu altérera visiblement l'image ainsi, il sera possible, en cas de détérioration de la mémoire flash, de voir visuellement les zones abimées.

Pour simplifier les tests, j'ai créé 2 scripts :

  • fl_create_ref : Créer les fichiers de référence
    Liste des arguments :
    • d : Le périphérique (ex: -d /dev/sda1)
    • f : Identifiant de la flash (voir les numéros collés sur les clefs)

    Le script exécute les actions suivantes :

    1. Charge les données de l'image (sans l'en-tête) dans le périphérique
    2. Dumpe la mémoire flash du périphérique et stocke le contenu dans un fichier, ce dernier servira de référence
    3. Calcule le Md5 de la référence
  • fl_test : Exécute un test du périphérique
    Liste des arguments :
    • d : Le périphérique (ex: -d /dev/sda1)
    • f : Identifiant de la flash (voir les numéros collés sur les clefs)
    • s : Étape (step), c'est à dire, le premier test, le second, etc...
    Ce script va se contenter de lire la mémoire flash, stocker le dump, calculer la somme Md5 et finalement exécuter une comparaison entre la référence de la mémoire courante et le dump obtenu.

Test

leonardo.jpg

Tout d'abord, il faut remplir les mémoires et créer les références pour chaque périphérique, cela est fait grâce au script fl_create_ref :

./fl_create -d /dev/xxx -f 1
./fl_create -d /dev/yyy -f 2
./fl_create -d /dev/zzz -f 3

Une fois cette étape effectuée, il faut mettre à l'épreuve les mémoires, pour cela, j'ai mis en contact direct l'aimant avec la puce durant un temps déterminé.

Voici les différentes étapes durant lesquelles les mémoires flash ont été en contact direct avec l'aimant :

  1. 10 min
  2. 3 h
  3. 13 h
  4. 240 h

À la fin de chaque test, j'ai utilisé le script fl_test de cette manière :

./fl_test -d /dev/xxx -f 1 -s 2

Le paramètre -s correspondant bien sûr au numéro de l'étape (1 pour 10min, 3 pour 3h...)
Ainsi, à chaque étape, nous avons un dump complet pour chaque mémoire ainsi que les sommes Md5 associées.

Voici l'arborescence des fichiers une fois tous les tests réalisés :

$ tree
|-- README
|-- fl_create_ref
|-- fl_test
|-- flash
|-- 1
| |-- leonard.data
| |-- leonard.md5
| |-- log
| |-- out-1.dump
| |-- out-2.dump
| |-- out-3.dump
| `-- out-4.dump
|-- 2
| |-- leonard.data
| |-- leonard.md5
| |-- log
| |-- out-1.dump
| |-- out-2.dump
| |-- out-3.dump
| `-- out-4.dump
|-- 3
| |-- leonard.data
| |-- leonard.md5
| |-- log
| |-- out-1.dump
| |-- out-2.dump
| |-- out-3.dump
| `-- out-4.dump
`-- log

C'est donc avec l'oeil averti de Léonard que les tests se sont succédés.

Résultats

Les résultats sont clairs, nets et précis, l'aimant (immobile) placé à proximité immédiate des mémoires flash n'a en rien altéré les données présentes dans les puces.
Les sommes Md5 sont restés invariables et cela, aussi bien pour 10 minutes que pour 10 jours.

L'aimant n'a donc pas réussi à faire broncher le regard de Léonard...Rien de vraiment étonnant en considérant le fonctionnement interne d'une mémoire flash, l'étape suivante serait donc de tester les mémoires flash à proximité de champs magnétiques fluctuants (moteurs, antennes d'émissions...)

Annexe

Vous trouverez en pièces jointes une archive contenant les scripts décrits ci-dessus et les fichiers images qui ont été mis dans les mémoires.