Mémoire Flash et aimant font-ils bon ménage ?
Je me baladais dans une grande surface informatique lorsque j'ai entendu un vendeur raconter, sûr de lui, que la proximité d'un aimant et d'une mémoire flash aurait des conséquences dramatiques pour cette dernière, à savoir une perte de données irrémédiable.
Quelques temps auparavant m'était justement arrivé cette mésaventure, je cherchais ma clef usb que j'avais fini par retrouver collée...à un aimant et cela, sans le moindre dégâts sur les données.
Je repartis du magasin en me disant qu'il serait bon de savoir si, oui ou non, les aimants étaient dangereux pour nos précieuses données contenues dans des mémoires flash, en théorie non, mais à force d'entendre cette légende, j'ai pensé qu'il serait bon de tester, c'est le but de cet article...
Procédure de test
Afin de vérifier le danger ou non d'un aimant à côté d'une mémoire de type Flash, nous allons mettre un aimant à proximité immédiate d'une carte Flash pendant des durées croissantes en contrôlant à chaque étape l'intégrité des données.
Les protagonistes sont les suivants, tout d'abord, les cartes mémoires :

Deux aimants "collés" l'un sur l'autre, petits mais costauds, je n'ai pas de mesuré l'intensité de ces aimants mais pour essayer de vous en 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...
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 :- Charge les données de l'image (sans l'en-tête) dans le périphérique
- Dumpe la mémoire flash du périphérique et stocke le contenu dans un fichier, ce dernier servira de référence
- 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...
Test

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 1Une 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é.
./fl_create -d /dev/yyy -f 2
./fl_create -d /dev/zzz -f 3
Voici les différentes étapes durant lesquelles les mémoires flash ont été en contact direct avec l'aimant :
- 10 min
- 3 h
- 13 h
- 240 h
./fl_test -d /dev/xxx -f 1 -s 2Le 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...)
Commentaires
En mettant les aimants l'un sur l'autre tu as peut être annulé le champ magnétique de ces derniers refait tes test avec un seul aimant. (Nord et Sud s'attire, une fois ensemble le champ est égale a ZERO). Quand on fait une expérience il faut les faire dans des conditions optimal, ici ce n'est pas le cas, ton experience ne peut pas etre validée.
Silk: absolument pas, chaque aimant à un pôle nord et un pôle sud, en les collant ensemble, je forme un aimant plus gros, tout simplement plus puissant, qui possède de nouveau, un pôle nord et un pôle sud.
À aucun moment, les 2 aimants ne s'annulent...
Les memoires étant faites à base de transistors mos, comment un champ magnetique pourrait il altérer le contenu des données ?
Seul un champ électrique assez costaud peut peut-être altérer des données en modifiant le potentiel de la grille flottante du transistor...
Seb: je te le fait pas dire...