กลไกการล็อคของฮาร์ดแวร์การ์ด SD, เฟิร์มแวร์หรือซอฟต์แวร์ (ไดรเวอร์, OS) ถูกบังคับใช้หรือไม่?


16

การล็อคโหมดอ่านอย่างเดียวบังคับใช้กับการ์ด SD อยู่ที่ไหน สิ่งนี้ทำลงในการ์ดของตัวเองในเฟิร์มแวร์ของเครื่องอ่านหรือในระบบปฏิบัติการหรือไม่? (สถานที่อื่น ๆ ?)

คำตอบ:


20

หากคุณอ่านข้อมูลจำเพาะ SD แบบย่อส่วนที่ 1 ฟิสิคัลเลเยอร์ที่ง่ายขึ้นส่วน 4.3.6 "การจัดการการป้องกันการเขียน" กล่าว

รองรับวิธีการป้องกันการเขียนสามวิธีในการ์ดหน่วยความจำ SD ดังนี้:
- สวิตช์ป้องกันการเขียนเชิงกล (รับผิดชอบเฉพาะโฮสต์)
- การป้องกันการเขียนภายในการ์ด (ความรับผิดชอบของการ์ด)
- การดำเนินการล็อครหัสผ่านด้วยการ์ด

สวิตช์ป้องกันการเขียนเชิงกล

แท็บเล็ตแบบเลื่อนเชิงกลที่ด้านข้างของการ์ด (อ้างอิงถึงส่วนที่ 1 ส่วนเสริมเชิงกล) จะถูกใช้โดยผู้ใช้เพื่อระบุว่าการ์ดที่ระบุนั้นมีการป้องกันการเขียนหรือไม่ หากแท็บเล็ตเลื่อนอยู่ในตำแหน่งที่หน้าต่างเปิดอยู่หมายความว่าการ์ดได้รับการป้องกันการเขียน หากหน้าต่างปิดอยู่การ์ดจะไม่ป้องกันการเขียน สวิตช์ด้านซ็อกเก็ตที่เหมาะสมจับคู่จะบ่งบอกถึงโฮสต์ว่าการ์ดมีการป้องกันการเขียนหรือไม่ มันเป็นความรับผิดชอบของโฮสต์ที่จะปกป้องการ์ด ตำแหน่งของสวิตช์ป้องกันการเขียนไม่เป็นที่รู้จักในวงจรภายในของการ์ด

(ความสำคัญของฉัน)

TOSHIBA SD Card จำเพาะกล่าวว่า

CMD28 SET_WRITE_PROT - ไม่ได้ใช้การป้องกันการเขียนภายใน
CMD29 CLR_WRITE_PROT - ไม่ได้ใช้การป้องกันการเขียนภายใน
CMD30 SEND_WRITE_PROT - ไม่มีการป้องกันการเขียนภายใน

...

2) ฟังก์ชั่นที่ไม่รองรับ:
การป้องกันการเขียนภายในของการ์ด (ตัวเลือกในข้อกำหนดทางกายภาพของเลเยอร์ 4.3.5)


แต่ฉันสงสัยว่า
tsenapathy

14

ที่ทำงานของฉันเราใช้การ์ด SD ในระบบฝังตัว หากเราพยายามบู๊ตด้วยการ์ดที่ล็อคเราจะได้รับความตื่นตระหนกของเคอร์เนล นี่ไม่ใช่เรื่องใหญ่จนกระทั่งเราได้การ์ด SD ที่มีสวิตช์การเขียนหลวมมาก: การแทรกการ์ดลงในเครื่องอ่านบางครั้งก็เพียงพอแล้วที่จะย้ายสวิตช์และล็อคการ์ด ผู้คนจำนวนมากเริ่มพยายามหาทางเลือกเชิงกลเพื่อป้องกันสิ่งนี้เช่นติดเทปบนการ์ด SD แต่ละใบ แต่ในที่สุดเราก็แก้ไขสิ่งนี้โดยเปลี่ยนรหัสต้นทางหนึ่งบรรทัดในเคอร์เนล Linux ตอนนี้เมื่อตรวจพบการ์ด 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)

หากคุณไม่รู้สึกว่าต้องการแก้ไขและสร้างเคอร์เนลลินุกซ์ แต่คุณมีกล้อง Canon P&S คุณสามารถใช้CHDKเพื่อเขียนไฟล์ (รูปภาพ) ไปยังการ์ด SD ที่ป้องกันการเขียน (เมื่อเปิดกล้อง) OF จะตรวจสอบ สถานะของสวิตช์เมื่อตั้งค่าเป็น RO มันจะโหลดเฟิร์มแวร์อัตโนมัติจากการ์ด SD ซึ่งช่วยให้ผู้ใช้สามารถบูตเข้าสู่ CHDK ได้โดยตรงจากนั้น CHDK จะไม่สนใจสถานะของสวิตช์ดังนั้นจึงยังคงสามารถเขียนรูปภาพลงในการ์ดได้เช่นhttp : //chdk.wikia.com/wiki/Bootable_SD_card )

คุณยังสามารถเขียนไปยังการ์ด SD ที่ป้องกันการเขียนใน Linux โดยการปิดการตั้งค่าสถานะแบบอ่านอย่างเดียวด้วยhdparmและติดตั้งการ์ดอีกครั้ง:

$ 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: หากไม่รู้ว่าคุณคิดว่าฉันผิดฉันไม่รู้ว่ามีการอ้างสิทธิ์ในการโพสต์แหล่งที่มาของอะไร
David Schwartz

ผู้อ่านสามารถละเว้นแท็บป้องกันการเขียน
wizlog

3
"เนื่องจากเครื่องตรวจพบรอยโดยผู้อ่านเท่านั้นการป้องกันจึงสามารถแทนที่ได้หากต้องการ (และหากเครื่องอ่านรองรับ)" - Wikipedia
David Schwartz

-3

มันเป็นฮาร์ดแวร์ที่ใช้สวิตช์ คุณลักษณะมันเพียงบล็อกการดำเนินการเขียนใด ๆ

หากเปลี่ยนคุณจะไม่สามารถ:

  • ย้ายไฟล์จากหรือไปยังการ์ด SD

  • ลบไฟล์ออกจากการ์ด SD

  • คัดลอกไฟล์ไปยังการ์ด SD

  • ฟอร์แมตการ์ด SD

แก้ไข อ่านรายละเอียดเพิ่มเติมที่นี่ สังเกตวงกลมสีส้มจาง ๆ ...


2
สวิตช์ด้านซ้าย เพียงเพื่อให้รู้ว่า op
แคนาดาลุค

2
คุณแน่ใจหรือว่าล็อคบังคับใช้สิ่งนี้จริง ๆ ? ฉันเคยอ่านมีกล้องที่สามารถ (ค่อนข้างบังเอิญ) ไม่สนใจสิ่งนี้และเขียนไปยังการ์ดต่อไป
Jane Panda

ลิงก์ที่คุณอ้างถึงบอกว่า "การ์ด SD บางตัวมีการป้องกันการเขียนอยู่ในการ์ดด้วย" บางคน - ไม่ใช่ทั้งหมด หากคุณเปรียบเทียบคำตอบอื่น ๆ ดูเหมือนว่านี่เป็นข้อยกเว้น ค่อนข้างน่าตกใจฉันคิดว่า - ดูเหมือนว่าพวกเขาไม่ได้คิดถึงความปลอดภัยและไวรัสเลย 8- {
Hans-Peter Störr

1
ทำไมคำตอบนี้ถึงได้ลงคะแนนมากขนาดนี้?
wizlog
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.