SDカードのハードウェア、ファームウェア、またはソフトウェア(ドライバー、OS)のロックメカニズムは実施されていますか?


16

SDカードで読み取り専用モードへのロックはどこで実施されますか?これは、カード自体の内部で、リーダーのファームウェアで、またはOSで行われますか?(他の場所?)

回答:


20

SD仕様パート1物理層簡易仕様を読むと、セクション4.3.6「書き込み保護管理」に記載されています

SDメモリカードでは、次の3つの書き込み保護方法がサポートされています
。-機械的書き込み保護スイッチ(ホスト側のみ)
-カード内部書き込み保護(カード側)
-パスワード保護カードロック操作。

機械的書き込み保護スイッチ

カードの側面にある機械的なスライド式タブレット(パート1の機械的補遺を参照)は、特定のカードが書き込み保護されているかどうかを示すために使用されます。スライディングタブレットがウィンドウが開くように配置されている場合、カードは書き込み保護されています。ウィンドウが閉じている場合、カードは書き込み保護されていません。ソケット側の適切で一致したスイッチは、カードが書き込み保護されているかどうかをホストに示します。カードを保護するのはホストの責任です。書き込み保護スイッチの位置は、カードの内部回路に認識されていません。

(私の強調)

A TOSHIBA SDカードの仕様は言います

CMD28 SET_WRITE_PROT-内部書き込み保護は実装されていません。
CMD29 CLR_WRITE_PROT-内部書き込み保護は実装されていません。
CMD30 SEND_WRITE_PROT-内部書き込み保護は実装されていません。

2)サポートされていない機能:
カードの内部書き込み保護(PHYSICAL LAYER SPECIFICATION 4.3.5のオプション)


しかし、私は
-tsenapathy

14

私の仕事では、組み込みシステムでSDカードを使用しています。ロックされているカードで起動しようとすると、カーネルパニックが発生します。これは、書き込みスイッチが非常にゆるいSDカードのバッチを入手するまで、大したことではありませんでした。カードをリーダーに挿入するだけで、スイッチを動かしてカードをロックすることができました。多くの人々は、各SDカードにテープを貼り付けるなど、これを防ぐための機械的なオプションを考え出そうとしましたが、最終的にはLinuxカーネルのソースコードの1行を変更することでこれを修正しました。スイッチが読み取り専用に設定された状態でSDカードが検出された場合、スイッチを無視して、必要なときにいつでもカードにデータを書き込むことができます。

これは私たちのバックポートのクレイジーなミスマッシュからのものであるため、このパッチはどこにでもきれいに適用されるとは思いませんが、独自のカーネルで実験したい場合、これは良い出発点です:

--- 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)

Linuxカーネルにパッチを当ててビルドしたくないが、Canon P&Sカメラを持っている場合、CHDKを使用してファイル(写真)を書き込み保護されたSDカードに書き込むことができます(カメラがオンになると、OFはスイッチの状態; ROに設定すると、SDカードからファームウェアを自動ロードします。これにより、ユーザーはCHDKを直接起動できます; CHDKはスイッチの状態を無視するため、カードに画像を書き込むことができます;例:http ://chdk.wikia.com/wiki/Bootable_SD_card)。

Linuxで読み取り専用フラグをオフにしhdparmてカードを再マウントすることで、書き込み保護されたSDカードに書き込むこともできます。

$ 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
$ 

3

読者次第です。リーダーは、書き込み保護タブを無視できます。リーダーは、書き込み保護タブが有効になっている場合、書き込みを無効にするファームウェアを持つことができます。リーダーは、書き込み保護タブが有効になっている場合に書き込みを無効にするソフトウェアドライバーを持つことができます。実際には、大半の読者はファームウェアでそれを行います。


あなたは間違っていると思います。ソースを投稿してください。
wizlog


@wizlog:あなたが私が間違っていると思うことを知らなければ、どのソースがソースを投稿するのかわかりません。
デビッドシュワルツ

読者は、書き込み禁止タブを無視することができます
wizlog

3
「ノッチはリーダーによってのみ検出されるため、保護は必要に応じてオーバーライドできます(リーダーによってサポートされている場合)。」- ウィキペディア
デビッドシュワルツ

-3

そのハードウェアベースのスイッチ。その機能は、書き込み操作をブロックするだけです。

切り替えた場合、次のことはできません。

  • SDカードとの間でファイルを移動する

  • SDカードからファイルを削除する

  • ファイルをSDカードにコピーする

  • SDカードをフォーマットする

編集 詳細はこちらかすかなオレンジ色の円に注意してください...


2
左側のスイッチ。ちょうどそのようにopはどこを知っている
カナダのルーク

2
ロックは実際にこれを強制しますか?私は、これを無視することができ、とにかくカードに書き込むことができるカメラが(偶然にも)あると読んだことがあります。
ジェーンパンダ

引用しているリンクには、「一部のSDカードには書き込み保護も組み込まれています」とあります。一部-すべてではありません。他の回答を比較すると、これは例外のようです。かなり衝撃的だと思います-彼らはセキュリティやウイルスについてまったく考えていなかったようです。8- {
Hans-PeterStörr11年

1
なぜこの回答はそれほど投票されないのですか?
wizlog
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.