Le mécanisme de verrouillage d'un matériel, d'un micrologiciel ou d'un logiciel (pilote, système d'exploitation) de carte SD est-il appliqué?

16

Où le verrouillage en mode lecture seule est-il appliqué avec les cartes SD? Est-ce que cela se fait physiquement à l'intérieur de la carte, dans le firmware des lecteurs ou dans le système d'exploitation? (Un autre endroit?)

Jane Panda
la source

Réponses:

20

Si vous lisez le spécifications SD, partie 1 , spécification simplifiée de la couche physique , la section 4.3.6 «Gestion de la protection en écriture» indique

Trois méthodes de protection en écriture sont prises en charge dans la carte mémoire SD comme suit:
- Commutateur de protection en écriture mécanique (responsabilité de l'hôte uniquement)
-
Protection en écriture interne de la carte (responsabilité de la carte) - Opération de verrouillage de la carte de protection par mot de passe.

Commutateur de protection en écriture mécanique

Une tablette coulissante mécanique sur le côté de la carte (reportez-vous à la partie 1 Addenda mécanique) sera utilisée par l'utilisateur pour indiquer qu'une carte donnée est protégée en écriture ou non. Si la tablette coulissante est positionnée de manière à ce que la fenêtre soit ouverte, cela signifie que la carte est protégée en écriture. Si la fenêtre est fermée, la carte n'est pas protégée en écriture. Un interrupteur approprié et adapté du côté du socket indiquera à l'hôte que la carte est protégée en écriture ou non. Il est de la responsabilité de l'hôte de protéger la carte. La position du commutateur de protection en écriture est inconnue des circuits internes de la carte.

(mon accent)

Une spécification de carte SD TOSHIBA dit

CMD28 SET_WRITE_PROT - La protection en écriture interne n'est pas implémentée.
CMD29 CLR_WRITE_PROT - La protection en écriture interne n'est pas implémentée.
CMD30 SEND_WRITE_PROT - La protection en écriture interne n'est pas implémentée.

2) Fonctions non prises en charge:
protection interne en écriture de la carte (en option dans la SPÉCIFICATION DE LA COUCHE PHYSIQUE 4.3.5.)

RedGrittyBrick
la source
Mais je me demande
tsenapathy
14

Dans mon travail, nous utilisons des cartes SD dans un système embarqué. Si nous essayons de démarrer avec une carte verrouillée, nous aurons une panique du noyau. Ce n'était pas un gros problème jusqu'à ce que nous obtenions un lot de cartes SD qui avaient des commutateurs d'écriture très lâches: le fait d'insérer la carte dans le lecteur était parfois suffisant pour déplacer le commutateur et verrouiller la carte. Beaucoup de gens ont commencé à essayer de proposer des options mécaniques pour empêcher cela, comme coller un morceau de bande sur chaque carte SD, mais à la fin nous avons corrigé cela en changeant une ligne de code source dans le noyau Linux. Maintenant, lorsqu'une carte SD est détectée avec le commutateur réglé en lecture seule, nous ignorons simplement le commutateur et écrivons volontiers des données sur la carte quand nous le voulons.

Cela vient de notre fausse confusion de backports, donc je doute que ce patch s'applique correctement n'importe où, mais si vous voulez expérimenter avec votre propre noyau, c'est un bon point de départ:

--- include/linux/mmc/card.h    (revision 1423)
+++ include/linux/mmc/card.h    (revision 1424)
@@ -125,7 +125,7 @@
 #define mmc_card_blockaddr(c)  ((c)->state & MMC_STATE_BLOCKADDR)

 #define mmc_card_set_present(c)    ((c)->state |= MMC_STATE_PRESENT)
-#define mmc_card_set_readonly(c) ((c)->state |= MMC_STATE_READONLY)
+#define mmc_card_set_readonly(c) {printk("Ignoring MMC read-only switch\n");}
 #define mmc_card_set_highspeed(c) ((c)->state |= MMC_STATE_HIGHSPEED)
 #define mmc_card_set_blockaddr(c) ((c)->state |= MMC_STATE_BLOCKADDR)

Si vous n'avez pas envie de patcher et de construire un noyau Linux mais que vous avez un appareil photo Canon P&S, vous pouvez utiliser CHDK pour écrire des fichiers (images) sur une carte SD protégée en écriture (lorsque l'appareil photo s'allume, l'OF vérifie la état du commutateur; lorsqu'il est réglé sur RO, il charge automatiquement le micrologiciel à partir de la carte SD. Cela permet aux utilisateurs de démarrer directement dans CHDK; puis CHDK ignore l'état du commutateur afin qu'il puisse toujours écrire des images sur la carte; voir par exemple http : //chdk.wikia.com/wiki/Bootable_SD_card ).

Vous pouvez également écrire sur une carte SD protégée en écriture sous Linux en désactivant le drapeau de lecture seule avec hdparmet en remontant la carte:

$ mount | grep mmc
/dev/mmcblk0p1 on /media/hello type ext3 (ro,nosuid,nodev,relatime,errors=continue,user_xattr,acl,barrier=1,data=ordered,uhelper=udisks)
$ touch /media/hello/test
touch: cannot touch `/media/hello/test': Read-only file system
$ sudo hdparm -r /dev/mmcblk0p1

/dev/mmcblk0p1:
 readonly      =  1 (on)
$ sudo hdparm -r0 /dev/mmcblk0p1

/dev/mmcblk0p1:
 setting readonly to 0 (off)
 readonly      =  0 (off)
$ touch /media/hello/test
touch: cannot touch `/media/hello/test': Read-only file system
$ sudo mount -t ext3 -o rw,remount /dev/mmcblk0p1 /media/hello
$ touch /media/hello/test
$ echo goodbye > /media/hello/test
$ cat /media/hello/test
goodbye
$ sudo umount /dev/mmcblk0p1
$ sudo mount /dev/mmcblk0p1 /mnt
mount: block device /dev/mmcblk0p1 is write-protected, mounting read-only
$ cat /mnt/test
goodbye
$ touch /mnt/test
touch: cannot touch `/mnt/test': Read-only file system
$ 

la source
3

Cela dépend du lecteur. Le lecteur peut ignorer l'onglet de protection en écriture. Le lecteur peut avoir un micrologiciel qui désactive l'écriture si l'onglet de protection en écriture est engagé. Le lecteur peut avoir un pilote logiciel qui désactive l'écriture si l'onglet de protection en écriture est engagé. En pratique, la grande majorité des lecteurs le font en firmware.

David Schwartz
la source
Je crois que vous avez tort. Veuillez poster une source.
wizlog
@wizlog: Sans savoir de quoi vous pensez que je me trompe, je ne sais pas pour qui prétendre publier une source.
David Schwartz
Le lecteur peut ignorer l'onglet de protection en écriture
wizlog
3
"Parce que l'encoche n'est détectée que par le lecteur, la protection peut être annulée si vous le souhaitez (et si elle est prise en charge par le lecteur)." - Wikipedia
David Schwartz
-3

C'est un commutateur basé sur le matériel. C'est une fonctionnalité qui bloque simplement toutes les opérations d'écriture.

Si vous changez, vous ne pouvez pas:

  • Déplacer des fichiers depuis ou vers la carte SD

  • Supprimer des fichiers de la carte SD

  • Copiez des fichiers sur la carte SD

  • Formatez la carte SD

EDIT Lire la suite ici . Notez le léger cercle orange ...

wizlog
la source
2
Un interrupteur sur le côté gauche. Juste pour que l'op sache où
Canadian Luke
2
Êtes-vous sûr que le verrou le fait réellement? J'ai lu qu'il y a des caméras qui peuvent (quelque peu par hasard) ignorer cela et écrire de toute façon sur la carte.
Jane Panda
Le lien que vous citez dit "Certaines cartes SD ont également une protection en écriture intégrée à la carte". Certains - pas tous. Si vous comparez les autres réponses, il semble que ce soit une exception. Assez choquant, je pense - il semble qu'ils n'aient pas du tout pensé à la sécurité et aux virus. 8- {
Hans-Peter Störr
1
pourquoi cette réponse est-elle autant rejetée?
wizlog