ฉันต้องการทราบวิธีการลบ USB แฟลชไดรฟ์ผ่านทางเทอร์มินัลถ้าเป็นไปได้ดังนั้นจึงไม่สามารถกู้คืนข้อมูลได้
ฉันต้องการทราบวิธีการลบ USB แฟลชไดรฟ์ผ่านทางเทอร์มินัลถ้าเป็นไปได้ดังนั้นจึงไม่สามารถกู้คืนข้อมูลได้
คำตอบ:
TL / DR: ตรวจสอบให้แน่ใจว่าคุณได้รับชื่ออุปกรณ์ที่ถูกต้องตรวจสอบให้แน่ใจว่าไม่ได้เชื่อมต่อและทำการเขียนทับแบบสุ่มให้มากที่สุดเท่าที่จะทำได้ คุณสามารถติดตามได้โดยใช้คำสั่งลบที่ออกแบบมาสำหรับฮาร์ดแวร์แฟลชหากคุณมีการกระจายที่เพียงพอเมื่อเร็ว ๆ นี้ ในการตรวจสอบเหล่านี้ให้ใช้ไดรฟ์เสมอ (เช่น / dev / sd h ) และไม่ใช่ชื่อพาร์ติชัน (ซึ่งจะเป็น / dev / sd h1 )
# dmesg|grep sdXX
[3600.000001] sd 6:0:0:0: [sdXX] 125106176 512-byte logical blocks: (64.0 GB/59.6 GiB)
# blkid|grep sdXX
/dev/sdXX1: PARTUUID="88a03bb2-ced8-4bb2-9883-0a51b4d460a8"
# df|grep /dev/sdXX
# shred -vzn8 /dev/sdXX
shred: /dev/sdXX: pass 1/9 (random)...
shred: /dev/sdXX: pass 1/9 (random)...46MiB/3.8GiB 1%
...
shred: /dev/sdXX: pass 9/9 (000000)...3.8GiB/3.8GiB 100%
# blkdiscard -s /dev/sdXX
blkdiscard: /dev/sdXX: BLKSECDISCARD ioctl failed: Operation not supported
# blkdiscard /dev/sdXX
blkdiscard: /dev/sdXX: BLKDISCARD ioctl failed: Operation not supported
#
ในทางทฤษฎีแล้วการเขียนทับด้วยศูนย์ด้วยdd
ก็ไม่เป็นไร อย่างไรก็ตามเนื่องจากวิธีการสร้างแฟลชไดรฟภายในถ้าคุณใช้การเขียนทับแบบครั้งเดียวอาจมีข้อมูลหลายชั้นซ่อนอยู่ด้านหลังบล็อกจริงที่ยังคงเก็บข้อมูลที่เหลืออยู่
โดยทั่วไปแล้วส่วนหนึ่งของการจัดเก็บแฟลชเป็นความผิดพลาดและถูกทำเครื่องหมายในระหว่างการผลิต นอกจากนี้ยังมีบิตอื่น ๆ ที่สามารถไปผิด (กลายเป็นไม่แน่นอนไม่สามารถเปลี่ยนแปลงได้หรือไม่ชัดเจน) ชิ้นส่วนเหล่านี้จะต้องทำเครื่องหมายความผิดเช่นกันในช่วงอายุ ข้อมูลนี้ถูกจัดเก็บในพื้นที่สงวนบนชิปเดียวกับข้อมูลของคุณ นี่คือหนึ่งในหลายเหตุผลที่ thumb drive 4GB ไม่แสดงความจุ 2 ^ 32 bytes
ที่จัดเก็บข้อมูลแฟลชยังมีการจัดระเบียบภายในเป็นบล็อกขนาดใหญ่ซึ่งบางครั้งก็ใหญ่กว่าระบบไฟล์ที่ทำงานบนไดรฟ์ ขนาดบล็อกระบบไฟล์ทั่วไปคือ 4KB และส่วนแฟลชที่สามารถลบได้ในครั้งเดียวอาจอยู่ในช่วงตั้งแต่ 64KB ถึงแม้กระทั่งหลายเมกะไบต์ บล็อกขนาดใหญ่เหล่านี้สามารถลบได้ทั้งหมดซึ่งจะรีเซ็ตบล็อกทั้งหมดเป็นสถานะที่รู้จัก (ทั้งหมด 1 วินาทีหรือ 0 วินาทีทั้งหมด) หลังจากนั้นการเขียนข้อมูลที่สามารถปรับเปลี่ยนใด ๆ ของบิต (เปลี่ยน 1s เริ่มต้นเข้าสู่ 0s ที่จำเป็นหรือเปลี่ยน 0s เริ่มต้นเข้าสู่ 1s) แต่เพียงครั้งเดียว การเปลี่ยนแปลงใด ๆ ของบิตกลับเป็นค่าเริ่มต้นกลุ่มทั้งหมดจะต้องถูกลบอีกครั้ง!
ดังนั้นเมื่อคุณต้องการเปลี่ยนบล็อก 4KB (ระบบไฟล์ถูกขอให้เปลี่ยนอักขระหนึ่งตัวที่อยู่ตรงกลางของไฟล์) ตัวควบคุมแฟลชจะต้องอ่านและบัฟเฟอร์ 64KB ทั้งหมดของข้อมูลเก่าลบทั้งหมดและ เขียนเนื้อหาใหม่กลับมา นี่จะช้ามากการลบเซกเมนต์คือการดำเนินการที่ช้าที่สุด นอกจากนี้เซ็กเมนต์สามารถลบได้ในระยะเวลาที่ จำกัด เท่านั้น (เป็นเรื่องปกตินับหมื่น) ดังนั้นหากคุณทำการเปลี่ยนแปลงไฟล์มากเกินไปไฟล์เดียวก็สามารถทำให้ไดรฟ์เสื่อมสภาพได้อย่างรวดเร็ว
แต่นี่ไม่ใช่วิธีการที่ทำ ตัวควบคุมแฟลชอัจฉริยะเพียงเขียนข้อมูลใหม่ 4KB ที่อื่นและจดบันทึกเพื่อเปลี่ยนเส้นทางการอ่านไปยังข้อมูล 4KB นี้ในช่วงกลางของบล็อกเก่า พวกเขาต้องการพื้นที่เพิ่มเพื่อที่เราจะไม่เห็นเก็บข้อมูลนี้เกี่ยวกับการเปลี่ยนเส้นทาง พวกเขายังพยายามทำให้แน่ใจว่าพวกเขาผ่านทุกเซกเมนต์ที่เข้าถึงได้เพื่อจัดเก็บข้อมูลซึ่งเรียกว่าการปรับระดับการสึกหรอการปรับระดับการสึกหรอ
ซึ่งหมายความว่าโดยทั่วไปข้อมูลเก่ายังอยู่ในไดรฟ์ ! หากคุณเพิ่งล้างข้อมูลบล็อกที่เข้าถึงได้ทั้งหมดบล็อกที่ซ่อนอยู่ทั้งหมดยังคงเก็บข้อมูลเวอร์ชันล่าสุดไว้ ไม่ว่าผู้โจมตีรายนี้จะเข้าถึงได้หรือไม่คุณต้องการให้ข้อมูลของคุณได้รับการปกป้องหรือไม่เป็นคำถามอื่น
หากคุณมีการกระจายที่เพียงพอเมื่อเร็ว ๆ นี้และไดรฟ์ USB ถูกตั้งโปรแกรมให้เปิดเผยว่าเป็นแฟลชไดรฟ์blkdiscard
สามารถใช้การTRIM
ดำเนินการพื้นฐานซึ่งเป็นส่วนที่ลบที่เราพูดถึงข้างต้น นอกจากนี้ยังมีการตั้งค่าสถานะเพิ่มเติมเพื่อให้แน่ใจว่าแม้ข้อมูลที่ซ่อนอยู่ที่มองไม่เห็นจะถูกลบอย่างสมบูรณ์โดยฮาร์ดแวร์:
# blkdiscard -s /dev/myusbdevice
-s, --secure ทำการละทิ้งที่ปลอดภัย การทิ้งที่ปลอดภัยจะเหมือนกับการละทิ้งปกติยกเว้นว่าจะต้องลบสำเนาทั้งหมดของบล็อกที่ถูกทิ้งที่สร้างขึ้นโดยการรวบรวมขยะ สิ่งนี้ต้องการการสนับสนุนจากอุปกรณ์
มันไม่จำเป็นว่าจะทำงานอย่างที่ฉันได้อธิบายไว้ข้างต้น หากคุณได้รับOperation not supported
ทั้งเคอร์เนลสาธารณูปโภคของคุณหรือชิปเกตเวย์ USB (ซึ่งอนุญาตให้ตัวควบคุมแฟลชดูเหมือนว่าไดรฟ์ผ่าน USB) ไม่รองรับการส่งTRIM
คำสั่ง (ตัวควบคุมแฟลชจะต้องสามารถลบส่วนได้ด้วยตัวเอง) หากได้รับการสนับสนุนจากผู้จำหน่ายไดรฟ์ของคุณนี่เป็นวิธีที่ปลอดภัยที่สุด
อีกวิธีที่ปลอดภัยน้อยกว่าเพื่อให้แน่ใจว่าคุณกำลังอนุญาตให้ข้อมูลเก่าน้อยลงเพื่ออวดรอบ ๆ บางแห่งก็คือการเขียนทับมันหลายครั้งด้วยค่าที่สุ่มถ้าเป็นไปได้
ทำไมสุ่มคุณถาม แค่คิดว่าไดรฟ์ USB นั้นฉลาดเกินไปและตรวจพบว่าคุณต้องการล้างเซกเตอร์และเพิ่งเปลี่ยนบิตแมปที่เซกเตอร์นี้ว่างตอนนี้และจะต้องล้างในภายหลัง เป็นวิธีนี้ก็สามารถเพิ่มความเร็วในการเขียนของศูนย์จึงทำให้ PENDRIVE ที่ปรากฏมีประสิทธิภาพมากขึ้นใช่ไหม? ไม่ว่าฮาร์ดไดรฟ์ของคุณจะทำมันยากที่จะบอก
สุดขั้วไดรฟ์สามารถจดจำได้ตั้งแต่เริ่มต้นที่คุณล้างข้อมูลและสิ่งที่ต้องจัดเก็บคือข้อมูลประมาณ 4 ไบต์เพื่อทำสิ่งนี้และไม่ต้องล้างข้อมูลใด ๆ จากข้อมูลที่คุณต้องการหายไป ทั้งหมดเพื่อให้มันดูรวดเร็วมาก
หากคุณเขียนทับข้อมูลด้วยค่าที่สุ่มและคาดเดาไม่ได้การปรับให้เหมาะสมเหล่านี้เป็นไปไม่ได้ ดังนั้นไดรฟ์จึงต้องตรวจสอบให้แน่ใจว่าข้อมูลถูกเก็บไว้ในชิปแฟลช แต่คุณยังคงไม่สามารถแยกแยะได้ว่าภาคส่วนที่ใช้ก่อนหน้านี้บางส่วนยังคงอยู่ที่นั่นด้วยข้อมูลเก่าของคุณ แต่ไดรฟ์ไม่ได้พิจารณาว่ามีความสำคัญที่จะลบมันเนื่องจากยังไม่สามารถเข้าถึงได้ตามปกติ เฉพาะTRIM
คำสั่งจริงเท่านั้นที่รับประกันได้ว่า
หากต้องการเขียนทับด้วยค่าสุ่มโดยอัตโนมัติคุณอาจต้องการใช้shred
งานเช่น:
# shred -vzn88 /dev/myusbdrive
ตัวเลือกที่ใช้:
หากเป็นไปได้ให้ใช้ทั้งสองอย่างblkdiscard
และshred
หากblkdiscard -s
ไดรฟ์ของคุณรองรับเป็นทางออกที่ดีที่สุด แต่ก็ไม่สามารถทำอันตรายshred
ก่อนที่จะแยกแยะความผิดพลาดของเฟิร์มแวร์ได้
โอ้และตรวจสอบอุปกรณ์ที่คุณพยายามจะล้างสองครั้งเสมอ! dmesg สามารถช่วยในการมองเห็นสิ่งที่เป็นอุปกรณ์ส่วนใหญ่แทรกเมื่อเร็ว ๆ นี้และยังมันคุ้มค่าที่จะตรวจสอบชื่ออุปกรณ์ที่คุณตั้งใจจะล้างด้วยls -al
แม้สำหรับอุปกรณ์โหนดตัวเลขและblkid
การส่งออกจะเห็นสิ่งที่พาร์ทิชันที่อาจจะมีอยู่ที่คุณทำไม่ได้ ต้องการล้าง
อย่าใช้คำสั่งเหล่านี้กับไดรฟ์ภายในที่คุณต้องการใช้ต่อไป - blkdiscard
จะใช้งานได้กับไดรฟ์โซลิดสเตตเท่านั้น แต่ก็ไม่คุ้มที่จะสูญเสียข้อมูล!
อาจมีวิธีอื่นในการล้างข้อมูลอย่างปลอดภัยขณะที่เทคโนโลยีดำเนินไป
อีกวิธีหนึ่งที่กล่าวถึงคือSECURITY ERASE
คำสั่งATA ที่สามารถออกผ่านhdparm
คำสั่งได้ จากประสบการณ์ของฉันมันไม่รองรับแฟลชไดรฟ์จริงๆ มันถูกออกแบบมาสำหรับฮาร์ดไดรฟ์ระดับองค์กรและคุณสมบัตินี้ไม่ได้ถูกนำไปใช้ในอุปกรณ์จัดเก็บต้นทุนต่ำ
การดำเนินการTRIM
/ DISCARD
ใหม่กว่าSECURITY ERASE
คำสั่งมากและถูกสร้างขึ้นเพื่อตอบสนองต่อคุณสมบัติแฟลชดังนั้นจึงมีโอกาสสูงที่จะนำไปใช้แม้ในไดรฟ์ USB ราคาถูก แต่ก็ยังไม่แพร่หลาย หากคุณต้องการลบการ์ด SD / micro SD ในดองเกิล USB และblkdiscard
รายงานว่าไม่รองรับคุณอาจต้องการลองใช้ตัวอ่านดองเกิล / การ์ดตัวอื่นและ / หรือทำในเครื่องที่มีช่องเสียบ SD / MMC โดยตรง .
blkdiscard
อยู่ใน Debian Jessie และเฉพาะใน Ubuntu ล่าสุดสองรุ่น แต่ไม่ใช่ Ubuntu LTS 14.04 blkdiscard
ถูกเพิ่มไปยังแพ็คเกจutil-linux
เวอร์ชัน 2.23
blkdiscard
เปรียบเทียบกับhdparm
โซลูชันในความคิดเห็นอื่นโดย @zhenech (โดยเฉพาะลิงก์: ata.wiki.kernel.org/index.php/ATA_Secure_Erase )
ฉันรู้ว่านี่ไม่ใช่คำตอบสำหรับคำถามของคุณ แต่วิธีที่ง่ายที่สุดคือการทำลายไดรฟ์ (การทุบซ้ำ ๆ โดยค้อนขนาดใหญ่มักใช้กลอุบาย หากคุณกังวลเกี่ยวกับความปลอดภัยที่ต้องการตรวจสอบให้แน่ใจว่าข้อมูลนั้นไม่สามารถกู้คืนได้ค่าของข้อมูลนั้นมีค่ามากกว่าค่าใช้จ่ายของไดรฟ์เองหลายเท่าและวิธีการทางกายภาพนั้นมีราคาถูกและเชื่อถือได้
ฟังก์ชั่นลบที่ปลอดภัยที่มีอยู่เกือบทั้งหมดได้รับการออกแบบมาสำหรับการหมุนสื่อแม่เหล็กซึ่งคอมพิวเตอร์มักจะสามารถระบุตำแหน่งทางกายภาพ [1] ของบล็อกที่ใช้สำหรับไฟล์และเขียนทับบล็อกเดียวกันเหล่านั้น ชิปควบคุมการจัดเก็บข้อมูลโซลิดสเตตเป็นนามธรรมทำให้ที่ตั้งทางกายภาพของข้อมูลจากระบบและชอบที่จะย้ายไปมา
คำถามของคุณขึ้นอยู่กับว่าใครเป็นคนติดตามข้อมูลของคุณ หากคุณกังวลเกี่ยวกับการสูญเสียแบบสุ่มหรือการโจรกรรมแบบปกติรูปแบบปกติจะใช้ได้ หากคุณมีความกังวลเกี่ยวกับการกำหนดเป้าหมายโดยผู้ใช้ที่มีความกระตือรือร้นสูงมีความสามารถด้านเทคนิคพร้อมด้วยทรัพยากรจำนวนมากในการกำจัด [2] จากนั้นเพียงเผาไดรฟ์และใช้จ่าย $ 10 ในการสร้างใหม่
ใช่มีการทำแผนที่บล็อกตรรกะ แต่บล็อกโลจิคัล A จะแม็พกับฟิสิคัลบล็อก B เสมอ
บุคคลนี้จะเปิดไดรฟ์ขึ้นดึงชิปหน่วยความจำออกจากการ์ดและอ่านหน่วยความจำแฟลชโดยตรงผ่านตัวควบคุม
วิธีที่ง่ายและเร็วที่สุดที่ฉันรู้คือการเขียนเลขศูนย์ (0) ลงในไดรฟ์ทั้งหมด:
dd if=/dev/zero of=/dev/sdX
ที่/dev/sdX
เป็นโหนดอุปกรณ์ thumbdrive ของคุณ
บางคนแนะนำกระบวนการที่ละเอียดยิ่งขึ้นด้วยการวนซ้ำมากขึ้นและรูปแบบอื่น ๆ มียูทิลิตีเฉพาะให้ทำเช่นนี้ แพ็คเกจ GNU coreutils มีshred
คำสั่งเฉพาะสำหรับวัตถุประสงค์นี้ หลายคนใช้badblocks -w
เช่นกันซึ่งเป็นส่วนหนึ่งของแพ็คเกจ e2fsprogs บน FreeBSD shred
ยูทิลิตี้จะถูกเรียกใช้gshred
และควรจะมีอยู่ใน/usr/ports/sysutils/coreutils
หรือ/usr/ports/sysutils/fileutils
พอร์ต
นี้ควรจะสามารถที่จะปลอดภัยเช็ดแฟลชไดรฟ์ของคุณถ้าคุณวางแผนที่จะนำมัน http://linux.die.net/man/1/scrub หากไม่แล้วละลายมัน ...