ตรวจสอบขนาดที่แท้จริงของ USB thumb drive


28

เมื่อเร็ว ๆ นี้ฉันอ่านมากเกี่ยวกับการ์ด MicroSD ปลอมและไดรฟ์หัวแม่มือ USB ที่อ้างว่ามีพื้นที่เหลือเฟือ (แม้ว่าคุณจะถามคอมพิวเตอร์ของคุณ) ในขณะที่ร่างกายมีวิธีลดลงก็ตาม ฉันเพิ่งซื้อไดรฟ์ SanDisk USB (อ้างสิทธิ์ 128 GB) และต้องการทดสอบขนาด มันไม่ได้ซื้อผ่านอีเบย์หรือบางอย่าง แต่ฉันต้องการทดสอบขนาดจริงก่อนใช้งานจริง

ฉันสามารถคัดลอกเนื้อหาบนมันคัดลอกกลับมาและดูว่าไฟล์นั้นโอเคหรือไม่ ฉันสามารถทำให้เป็นอัตโนมัติด้วย Hashes และสิ่งของ แต่ฉันหวังว่าจะมีวิธีการแก้ปัญหาที่แม่นยำยิ่งขึ้น ฉันอ่านสิ่งนั้นสำหรับ Windows แล้ว H2testw ทำเคล็ดลับ มีวิธีง่าย ๆ ในการทดสอบบน Ubuntu / Linux? เครื่องมือพิเศษที่ทำงานได้ดีอาจจะ?

อัปเดต: เพื่อให้ชัดเจนแนวคิดก็คือตรวจสอบว่าขนาดของระบบควบคุมที่ลินุกซ์ได้รับการบอกกล่าวนั้นถูกต้อง ( ดังนั้นจะไม่มีข้อมูลสูญหาย ) ฉันไม่ต้องการดูว่าฉันจะได้ 128 GB แทน 127.3 GB หรือไม่ ฉันต้องการทดสอบว่าข้อมูลทั้งหมดที่ฉันเขียนจะสามารถอ่านได้อีกครั้งหรือไม่ น่าเสียดายที่ฉันสามารถหาข้อมูลเกี่ยวกับสิ่งนี้ได้ในเว็บไซต์เทคโนโลยีภาษาอังกฤษเท่านั้น มีแหล่งข้อมูลเยอรมันที่ดีอยู่ ฉันกำลังค้นหาแอปพลิเคชันเช่นนั้นจริง ๆ แต่สำหรับ Ubuntu / Linux: https://www.raymond.cc/blog/test-and-detect-fake-orake-counterfeit-usb-flash-drives-bought-from -ebay ที่มี h2testw /

Update2: ฉันพยายามรวบรวมแหล่งที่มาเป็นภาษาอังกฤษ ฉันไม่ได้อ่านรายละเอียดทั้งหมดเนื่องจากเวลาหายไป

Update3: คำอธิบาย

เนื่องจากนักวิจารณ์แปลก ๆ ด้านล่างคำอธิบายบางอย่าง

ปัญหาคืออะไรและทำไม dd เพียงอย่างเดียวไม่สามารถแก้ปัญหาได้

นี่คือปฏิกิริยาต่อ

"ให้เข้าใจอย่างชัดเจนว่าปัญหาที่คุณพยายามแก้ไขคืออะไรและคำจำกัดความของ" ไดรฟ์ปลอม "คืออะไร

ดูเหมือนว่าบางคนไม่เข้าใจปัญหา ดังนั้นฉันจึงพยายามอธิบายให้สั้นที่สุดเท่าที่จะทำได้โดยละเอียดแม้ว่าฉันคิดว่านี่เป็นสิ่งที่ช่วยยืดอายุคำถามของฉันได้

ความจุของอุปกรณ์ usb ระบบปฏิบัติการหรือเครื่องมือ unix ของคุณอาจผิด นี่เป็นอันตรายถึงชีวิตเนื่องจากระบบปฏิบัติการของคุณควบคุมปริมาณข้อมูลที่คุณสามารถส่งไปได้ ส่งข้อมูลมากกว่าที่สามารถเก็บได้จริงๆคุณจะได้รับข้อมูลสูญหาย นี่คือปัญหา. แล้วทำไมสิ่งนี้ถึงเกิดขึ้นได้?

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

สิ่งนี้หมายความว่า? ไม่ว่าเครื่องมือยูนิกซ์ของคุณจะบอกคุณเกี่ยวกับความจุของไดรฟ์: เป็นสิ่งที่เครื่องมือถามไดรฟ์ นี่คือสิ่งที่ h2testw ถูกคิดค้นสำหรับ: มันทดสอบขนาดจริงด้วยวิธีที่อธิบายในภายหลังและเปรียบเทียบกับสิ่งที่ไดรฟ์พูด หากนี่ไม่เหมือนกันคุณอาจสูญเสียข้อมูลเนื่องจากการดำเนินการทั่วไปทั้งหมดของคุณในการจัดเก็บข้อมูลพึ่งพาข้อมูลของระบบปฏิบัติการของคุณซึ่งเพียงแค่ถามผู้ควบคุม ทำไมแค่ถาม การทดสอบต้องใช้เวลาและเขียนทับข้อมูลทั้งหมดในไดรฟ์ ดังนั้นจึงเป็นเรื่องธรรมดาที่ระบบปฏิบัติการจำเป็นต้องพึ่งพาข้อมูลนี้

ในการตรวจสอบความจุจริงเช่น h2testw คุณสามารถใช้ddเพื่อเขียนข้อมูลบนไดรฟ์อ่านมันอีกครั้งและดูว่ามันเหมือนกันกับที่คุณเขียนหรือไม่ Legit ทั้งหมด ลักษณะของฮาร์ดแวร์และไดรฟ์ทำให้ซับซ้อนยิ่งขึ้น พิจารณาแคชการเขียนเช่น คุณต้องให้แน่ใจว่าคุณไม่ได้อ่านจากแคช นี่เป็นเพียงตัวอย่างหนึ่งว่าทำไมมันไม่ง่ายอย่างที่เห็น ยังคิดด้วยว่าการเขียนเลขศูนย์หมายความว่ามีข้อมูลเอนโทรปีต่ำซึ่งสามารถสร้างใหม่ได้เมื่ออ่าน ในรายละเอียดไม่ใช่เรื่องง่าย คุณยังสามารถทำได้ด้วยตนเองแน่นอน

แต่ทำไมเมื่อคุณสามารถทำสิ่งต่าง ๆ โดยอัตโนมัติ ทำไมต้องทำงาน f3 ตามที่เสนอไว้ในคำตอบของฉันด้านล่างใช้ความคิดมากมายของผู้มีส่วนร่วม (พิจารณาว่าเป็น h2testw ที่ขยายออกไป) และยังใช้วิธีการหลายวิธีที่มีการแลกเปลี่ยนที่แตกต่างกัน นักพัฒนาคิดออกเทคนิคของไดรฟ์ปลอมที่แตกต่างกัน (aka ปลอมไดรฟ์) ที่พวกเขามีอยู่ในมือ ดังนั้นในขณะที่ฉันเข้าใจทฤษฎีและปัญหา (ดูเหมือนว่าเนื่องจากปัญหาได้รับการอธิบายอย่างดีในสื่อเทคโนโลยีเยอรมัน แต่ไม่ใช่ในสื่อที่พูดภาษาอังกฤษ) ฉันไม่แกล้งทำเป็นเข้าใจทุกอย่างซึ่งเป็นสาเหตุที่ฉันกล่าวถึงข้างต้น มันเป็นเพียงทฤษฎีที่ฉันเข้าใจและฉันก็เป็นคนซอฟต์แวร์มากกว่า แต่ในฐานะนักเรียนด้านสารสนเทศฉันเข้าใจดีพอที่จะเห็นปัญหา

"พยายามที่จะเข้าใจยูทิลิตี้พื้นฐานของ Unix"

อันที่จริงฉันตอบคำถามนี้ไปแล้ว แต่เพื่อให้ชัดเจน: เครื่องมือ Unix ใช้โปรโตคอล USB (สำหรับอุปกรณ์ USB เท่านั้น) เพื่อรวบรวมข้อมูล มันไม่สมเหตุสมผลเลยที่จะทำมากกว่านั้น

มันช่วยได้เพียงซื้อจากผู้จัดหาที่ไว้วางใจเท่านั้น

tl; dr: ไม่ได้

"เมื่อพูดถึงการซื้อสินค้าเช่นเดียวกับความปลอดภัยทุกรูปแบบลองหาผู้ขายที่เชื่อถือได้และซื้อไดรฟ์จากพวกเขาเท่านั้น"

ความปลอดภัย (และความปลอดภัย) ไม่ได้เกี่ยวกับความไว้วางใจ! มันเกี่ยวกับการตรวจสอบและการตรวจสอบ! ขออภัย แต่มันผิดในหลาย ๆ ด้าน

สมมติว่าคุณซื้อผ่านผู้ขายที่เชื่อถือได้ คำถามเล็กน้อย:

  1. ซัพพลายเออร์ทำการทดสอบฮาร์ดแวร์เพื่อให้แน่ใจว่าไม่มีการสูญหายของข้อมูลหรือไม่ จะรับรู้อีกครั้งเมื่อเขาซื้อไดรฟ์ปลอมและขายหรือไม่ ไม่จำเป็น.

  2. เป็นไปได้หรือไม่ว่าเขาซื้อของที่เขาไม่รู้ว่าเป็นของปลอม ทั้งหมดดู ryzen fakes ล่าสุด: https://www.pcgamer.com/beware-of-fake-ryzen-processors-selling-on-amazon/ , https://www.heise.de/newsticker/meldung/ direkt ฟอน Amazon-Faelschungen ฟอน AMDs-Ryzen-Prozessoren-IM-UMLAUF-3772757.html

  3. หากฉันสูญเสียการนำเสนอของฉันในไดรฟ์และไขการนำเสนอผู้จัดหาที่เชื่อถือได้ของฉันจะย้อนเวลากลับไปและช่วยชีวิตฉันได้ไหม มันอาจจะแทนที่ไดรฟ์เนื่องจาก DeLorean การเดินทางครั้งสุดท้ายถูกทำลายในปี 1885

อย่างอื่น

"คำถามนี้ดูเหมือนจะเป็น" โปรโมชัน "มากกว่าสำหรับสิ่งที่ OP ชอบและดูเหมือนว่า OP ไม่สนใจการทดสอบไดรฟ์จริง ๆ "

นี่มันไร้สาระ ฉันค้นหาเฉพาะเครื่องมือที่คล้ายกับ h2testw ที่ทำงานบน linux ด้วย และใช่นั่นคือสิ่งที่ฉันต้องการ "ชอบ" คำตอบที่เป็นประโยชน์ขอโทษด้วย ฉันไม่รู้ว่าสื่อที่พูดภาษาอังกฤษนั้นไม่ได้ตระหนักถึงปัญหาดังกล่าวและโชคดีที่ได้พบบางอย่างเช่นนี้ในภายหลัง นี่ไม่ใช่การส่งเสริมการขาย แต่จริง ๆ แล้วดูเหมือนว่าคุณสามารถใช้


2
df --block-size=Mมีไม่มากที่จะจุดทดสอบนั้นไปโดยสิ่งที่คอมพิวเตอร์บอกว่าใช้ได้หรือ ขีด จำกัด 4GB ขอแนะนำนั่นเป็นเพียงข้อ จำกัด ขนาดไฟล์ FAT32 ไม่ใช่ความจุของไดรฟ์ คุณจะไม่ได้รับความจุเต็มตามที่ระบุไว้มันเป็นค่าเฉลี่ยเพียงการจัดประเภท
Sir_Scofferoff

6
สิ่งที่คอมพิวเตอร์พูดว่ามีให้บริการเป็นเพียงสิ่งที่เขาได้รับจากคอนโทรลเลอร์ของไดรฟ์ usb ไดรฟ์ปลอมกำลังโกหก หากมีความจุ 4GB แต่อ้างว่ามี 512GB ส่วนที่เหลือที่ฉันเขียนจะถูกโยนทิ้งหรือพื้นที่เก่าจะถูกเขียนทับทั้งนี้ขึ้นอยู่กับคอนโทรลเลอร์ ดังนั้นจึงมีจุดหนึ่งในการทดสอบ
verpfeilt

สิ่งนี้น่าสนใจ ความคิดที่ไม่เคยเกิดขึ้นกับฉันเกี่ยวกับการปลอมแปลงขนาดของ SSD แต่ฉันชอบความคิดของวิธีที่พวกเขาเขียนข้อมูลและอ่านกลับ byte byte เพื่อตรวจสอบความสอดคล้อง ฉันสามารถดูว่านี่อาจเป็นปัญหาและเครื่องมือเช่นนี้อาจมีประโยชน์

1
FakeFlashCheck ยังมีการสแกนอย่างรวดเร็ว มี OSALT สำหรับสิ่งนั้นหรือไม่?
neverMind9

PS: ฉันได้พบ f3probe แล้ว ดูความคิดเห็นของฉันด้านล่าง
neverMind9

คำตอบ:


33

f3 - ต่อสู้กับการฉ้อโกงแฟลช

มีทางเลือกเดียวที่ฉันพบ แต่ฉันคิดว่านี่เป็นสิ่งที่ดีกว่าh2testwเครื่องมือดั้งเดิมสำหรับ MS Windows โชคดีที่มันใช้งานได้ง่ายจริงๆแม้กระทั่งจากบรรทัดคำสั่ง มี GUIs พร้อมให้ใช้งาน นอกจากนี้ยังมีข้อมูลจำนวนมากเกี่ยวกับการใช้งานและปัญหาเกี่ยวกับไดรฟ์ปลอมในเว็บไซต์เครื่องมือ

f3 เสนอวิธีการสองวิธี:

  • วิธีการ f3probe: เร็วกว่ามาก
  • วิธีการ h2testw: ช้าลง ทดสอบประสิทธิภาพ R / W ด้วย น่าเชื่อถือมากขึ้น

วิธีการ f3probe (แนะนำ)

f3probeเป็นวิธีหนึ่งในการทดสอบไดรฟ์ไม่ถูกต้อง แต่เร็วกว่าเนื่องจากไม่ได้เขียนลงในไดรฟ์ทั้งหมด คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ในเว็บไซต์เครื่องมือ หากคุณต้องการแน่ใจ 100% ให้ใช้วิธี h2testw ตามที่ผู้พัฒนาอธิบายบนเว็บไซต์:

f3probe เป็นวิธีที่เร็วที่สุดในการระบุไดรฟ์ปลอมและขนาดที่แท้จริง

และ:

ท้ายที่สุดต้องขอบคุณ f3probe ที่เป็นซอฟต์แวร์ฟรีและเมื่อ f3probe พิสูจน์การต่อสู้แล้ว f3probe สามารถฝังลงบนสมาร์ทโฟน, กล้อง, เครื่องเล่น MP3 และอุปกรณ์อื่น ๆ ที่จะหยุดทันทีและสำหรับการเพิ่มจำนวนของแฟลชปลอม

นอกจากนี้ยังมีตัวอย่างการใช้งานบนเว็บไซต์:

คำเตือน : สิ่งนี้จะทำลายข้อมูลที่เก็บไว้ก่อนหน้านี้ในดิสก์ของคุณ!

$ sudo f3probe --destructive --time-ops /dev/sdb
[sudo] password for michel: 
F3 probe 6.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.

WARNING: Probing may **demolish data,** so it is more suitable for flash drives out of the box, without files being stored yet. The process normally takes from a few seconds to 15 minutes, but
         it can take longer. Please be patient. 

Bad news: The device `/dev/sdb' is a counterfeit of type limbo

You can "fix" this device using the following command:
f3fix --last-sec=16477878 /dev/sdb

Device geometry:
             *Usable* size: 7.86 GB (16477879 blocks)
            Announced size: 15.33 GB (32155648 blocks)
                    Module: 16.00 GB (2^34 Bytes)
    Approximate cache size: 0.00 Byte (0 blocks), need-reset=yes
       Physical block size: 512.00 Byte (2^9 Bytes)

Probe time: 1'13"
 Operation: total time / count = avg time
      Read: 472.1ms / 4198 = 112us
     Write: 55.48s / 2158 = 25.7ms
     Reset: 17.88s / 14 = 1.27s

f3fixหมายเหตุว่ามันยังส่งกลับคำสั่งที่ช่วยให้คุณสามารถใช้ไดรฟ์ที่มีขนาดที่แท้จริงของมันโดยใช้

เครื่องมือ f3fix

f3fix สร้างพาร์ติชันที่เหมาะสมกับขนาดที่แท้จริงของไดรฟ์ปลอม ใช้f3probeเอาต์พุตเพื่อกำหนดพารามิเตอร์สำหรับ i3fix

sudo f3fix --last-sec=16477878 /dev/sdb

วิธีการ h2testw / การทดสอบประสิทธิภาพด้วย f3read / f3write

F3 คือชุดของเครื่องมือที่จัดการกับแฟลชไดรฟ์ปลอม พวกเขาสองคนร่วมกันใช้วิธีการh2testw:

f3write [--start-at=NUM] [--end-at=NUM] <PATH>
f3read  [--start-at=NUM] [--end-at=NUM] <PATH>

f3writeจะขอขนาดที่อ้างสิทธิ์และเติมไฟล์ที่สร้างด้วยขนาด 1GB f3readจะอ่านไฟล์เหล่านั้นทั้งหมดและดูว่าไฟล์นั้นสมบูรณ์และไม่เสียหาย เป็นตัวอย่างคำสั่งที่ฉันใช้ทดสอบ thumb drive ~ 128gb ของฉัน:

$ f3write /media/username/1EB8021AB801F0D7/
Free space: 117.94 GB
Creating file 1.h2w ... OK!                           
...
Creating file 118.h2w ... OK!                         
Free space: 0.00 Byte
Average writing speed: 11.67 MB/s

ตอนนี้เพื่อทดสอบว่าไฟล์ถูกจัดเก็บอย่างถูกต้องหรือไม่:

$ f3read /media/username/1EB8021AB801F0D7/
                  SECTORS      ok/corrupted/changed/overwritten
Validating file 1.h2w ... 2097152/        0/      0/      0
...
Validating file 118.h2w ... 1979488/        0/      0/      0

  Data OK: 117.94 GB (247346272 sectors)
Data LOST: 0.00 Byte (0 sectors)
           Corrupted: 0.00 Byte (0 sectors)
    Slightly changed: 0.00 Byte (0 sectors)
         Overwritten: 0.00 Byte (0 sectors)
Average reading speed: 32.38 MB/s

การทดสอบไดรฟ์ขนาดนี้ใช้เวลาประมาณสามชั่วโมงด้วยวิธีนี้และบางครั้งก็ทำให้เกิดการโหลดดิสก์หนักบนคอมพิวเตอร์ของฉัน แต่มันบอกกับฉันว่าถูกต้องที่สุด

ติดตั้งใน Ubuntu

บนเทอร์มินัล:

sudo apt install f3

นี้จะนำคุณ: f3brew, f3fix, f3probe, f3read, f3writeมีหน้าคนของพวกเขา

เครื่องมือนี้เป็นส่วนหนึ่งของf3แพ็คเกจซึ่งมีอยู่ใน Ubuntu 15.10 เป็นอย่างน้อย ตามเว็บไซต์มีเครื่องมือเพิ่มเติมที่พร้อมใช้งาน เพื่อให้พวกเขาดูที่เว็บไซต์
แพ็คเกจมาพร้อมกับ manpages สั้น ๆ แต่ก็มีประโยชน์แม้ว่าฉันคิดว่าพวกเขาพลาดข้อมูลบางอย่างจากเว็บไซต์เกี่ยวกับความแตกต่างของ f3read / write และ f3probe ตัวอย่างเช่นซึ่งเป็นสาเหตุที่คำตอบนี้ได้อีกเล็กน้อย


2
ขอขอบคุณที่แนะนำเครื่องมือที่ยอดเยี่ยมนี้ เพียงแค่ต้องการที่จะเพิ่มว่าการติดตั้งใช้apt-getจะติดตั้งf3readและfwrite เพียงเป็นf3probeและf3fixมีการพิจารณาการทดลอง หากต้องการใช้พวกเขาคุณจะต้องสร้างพวกเขาจากแหล่งที่ใช้หลังจากติดตั้งการอ้างอิงของพวกเขาmake experimental sudo apt-get install libudev1 libudev-dev libparted0-devดูgithub.com/AltraMayor/f3#the-extra-applications-for-linux
Ahmed Essam

"[f3probe] ไม่ได้ทำการทดสอบอีกต่อไป แต่มีเฉพาะใน Linux" github.com/AltraMayor/f3/issues/78#issuecomment-378599141
verpfeilt

4

ฉันได้เขียนเครื่องมือง่าย ๆ เพียงแค่นั้นเรียกว่าCapacityTester (ภาพหน้าจอ)และมี GUI เช่นเดียวกับ CLI

มีไบนารีที่คอมไพล์แล้วสำหรับ Debian 7 พร้อมให้ดาวน์โหลดซึ่งมีแนวโน้มที่จะทำงานนอกกรอบบนระบบ Ubuntu ที่ทันสมัย

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

อีกครั้งมันง่ายมากเพราะใช้งานได้กับไฟล์ที่อยู่ด้านบนของระบบไฟล์ที่มีอยู่เท่านั้น ดังนั้นจึงมี KB (+ 1M buffer) ที่ไม่สามารถทดสอบได้ และมันก็ช้ามากเพราะมันเต็มทั้งระบบไฟล์ F3 นั้นซับซ้อนกว่าและเร็วกว่ามาก แต่ไม่มี GUI เหตุผลเดียวที่ความจุคือเพราะมี GUI เพื่อให้ผู้ใช้ที่ไม่คุ้นเคยกับบรรทัดคำสั่งหรือผู้ใช้เพียงต้องการ GUI

ความคิดเห็นเป็นที่นิยม


ตามที่ระบุไว้ในเว็บไซต์นักพัฒนามี QT GUI และ GUI สำหรับ OSX ที่มีอยู่ (ฉันไม่ได้ลอง) ฉันคิดว่ามันใช้ QT4 ทำไมไม่ใช้ F3 เป็นแบ็กเอนด์ด้วยล่ะ มันจะไม่ทำให้เครื่องมือของคุณซับซ้อนขึ้นและมันอาจจะทำให้การทำงาน / มีประสิทธิภาพมากขึ้นโดยใช้ความรู้ที่ใช้ไปกับ F3
verpfeilt

-6

การระบุพฤติกรรมของ OP และ "ไดรฟ์ปลอม"

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

ฉันสามารถคัดลอกเนื้อหาบนมันคัดลอกกลับมาและดูว่าไฟล์นั้นโอเคหรือไม่ ฉันสามารถทำให้เป็นอัตโนมัติด้วย Hashes และสิ่งของ แต่ฉันหวังว่าจะมีวิธีการแก้ปัญหาที่แม่นยำยิ่งขึ้น

OP เองยอมรับว่าพวกเขา "สามารถคัดลอกเนื้อหา" และตรวจสอบความถูกต้องของข้อมูล แต่ก็ต่อต้านความคิดเห็นและคำตอบอื่น ๆ ทั้งหมดที่เสนอสิ่งอื่นและ OP ก็ผลักดัน F3 เป็น "ข้อตกลงจริง" คำถามในตอนแรกเริ่มต้นขึ้นเกี่ยวกับขนาดของไดรฟ์ แต่จากนั้น OP ไม่ว่าด้วยเหตุผลใดก็ตามที่กล่าวถึงการแฮช "ดูว่าไฟล์นั้นโอเค" ราวกับว่ามีไดรฟ์ลึกลับที่อ้างขนาดหนึ่งและให้คุณเขียนขนาดนั้น ข้อมูลเสียหาย ดังนั้นฉันคิดว่ามันน่าสงสัยอย่างมากและจะพิจารณาว่าการส่งเสริม OP เป็น F3 เป็นคำถามและคำตอบสแปม

เมื่อไดรฟ์นั้นเป็นไดรฟ์ปลอมจริงๆ

ในคำถามคำจำกัดความที่ชัดเจนของ OP คือ

".. ไดรฟ์ที่อ้างว่ามีพื้นที่มาก (มักจะพกพามากเกินไปเช่น 128 GB) ในขณะที่เสนอทางกายภาพเพียง 0.5 ถึง 4 GB"

กล่าวอีกนัยหนึ่งตาม OP ตัวควบคุมอ้างว่าปริมาณข้อมูล X แต่ USB สามารถมีบางอย่างเช่น 80-90% น้อยกว่าสิ่งที่อ้างว่า

ผู้ใช้sudodusเสนอในความคิดเห็น (เน้นเพิ่ม): "ฉันได้พบว่า pendrives USB หลายตัวมีขนาดเล็กกว่าขนาดเล็กน้อยเล็กน้อยฉันเรียกพวกมันว่าundersizedฉันคิดว่าไดรฟ์ปลอมนั้น'ธรรมดามาก' (ปกติครึ่งหนึ่งของขนาดเล็กน้อย) หรือน้อยกว่า ) ". คำจำกัดความนี้ยอดเยี่ยม แต่ถ้าเราทำเช่นนั้นจะมีการกำหนดไดรฟ์ปลอมไว้ที่ 50% ไดรฟ์ที่อ้างสิทธิ์ 64 GB แต่สามารถเก็บได้ 32 GB เท่านั้นโดยทางเทคนิคเสียค่าครึ่งหนึ่งให้กับเจ้าของ

ฉันเสนอคำจำกัดความที่เรียบง่ายกว่า: อุปกรณ์จัดเก็บข้อมูลปลอมเป็นอุปกรณ์ที่อ้างว่ามีClaimed Sizeแต่มีความทนทานต่ำกว่า 15% (และยอมรับได้Claimed Size ± 15 %)

± 15 %ที่เหมาะสมมาก พิจารณาว่าผู้ใช้มักสับสนระหว่างองค์กร Unix, IEEE และ IEC โดยใช้คำนำหน้าไบนารีแทนกำลัง 10 คำนำหน้าสำหรับขนาดการจัดเก็บข้อมูล ความแตกต่างจะเพิ่มขึ้นเป็น 20% ในระดับคำนำหน้า yotta แต่ไดรฟ์ USB ยังไม่ได้อยู่ที่นั่นดังนั้นบางที 20 ปีข้างหน้า 15 เปอร์เซ็นต์ก็สมเหตุสมผล (ดูคำถาม Askubuntu "ความหมายของ 'i' ใน 'MiB'"และคำนำหน้าแบบไบนารี )

ทดสอบไดรฟ์

ผู้ใช้ไม่จำเป็นต้องมีเครื่องมือพิเศษใด ๆ นอกเหนือจากที่มีอยู่แล้วใน Ubuntu และระบบ Unix ที่ใช้ POSIX ได้ ให้เราเน้นและใช้คำนิยามใหม่อีกครั้ง:

หากเราไม่สามารถเขียนจำนวนข้อมูลที่จะขับได้และสิ่งที่เราเขียนนั้นอยู่ในระดับความอดทน 15% แสดงว่าไดรฟ์นั้นใช้ได้

วิธีง่ายๆในการทำคือddเพียงแค่เขียนทับอุปกรณ์ด้วยศูนย์ (และแน่นอนอย่าลืมบันทึกไฟล์ของคุณก่อนที่คุณจะทำเช่นนั้น)

sudo dd if=/dev/zero of=/dev/sdb1 iflag=nocache oflag=direct bs=1                        

สังเกตbs=1ขนาดบล็อกของ 1 ไบต์ ddคำสั่งจะให้รายงานเป็นวิธีมากจะเขียน

$ dd if=/dev/zero of=/dev/null bs=1 count=1024
1024+0 records in
1024+0 records out
1024 bytes (1.0 kB, 1.0 KiB) copied, 0.00261981 s, 391 kB/s

เราขอให้มันเขียน 1024 ไบต์มันเขียน 1024 ไบต์

รายการขั้นตอนที่แม่นยำยิ่งขึ้นที่เป็นไปตามข้อกำหนดจะเป็น:

  • พิจารณาจำนวนข้อมูลที่ไดรฟ์อ้าง (สมมติว่าคุณสงสัยว่าdf"ผิดพลาด") ในตัวอย่างนี้สมมติว่า/dev/sdb1ไฟล์อุปกรณ์ของฉันสำหรับไดรฟ์ USB:

    $ df -P /dev/sdb1 | awk 'NR==2{print $2}'
    115247656
    

    โปรดทราบว่าการ-Pตั้งค่าสถานะนั้นมีไว้สำหรับการพกพา POSIX ซึ่งหมายความว่าขนาดบล็อกของข้อมูลจะเป็น 1024 ไบต์และนั่นหมายความว่ามี 115247656 * 1024 ไบต์ในไดรฟ์นั้น

  • คิดออกว่าอะไรคือความอดทน 15% ด้านล่างสิ่งที่เรียกร้องไดรฟ์ (115247656) บางทีใช้ยูทิลิตี้ที่รองรับการคำนวณจุดลอยตัวเช่นawk:

     $ awk 'BEGIN{printf "%d\n",115247656*(1-0.15)}'
     97960507
    
  • สร้างข้อมูลสุ่มบนฮาร์ดไดรฟ์ที่มีขนาดเดียวกับไดรฟ์ในขั้นตอนก่อนหน้าเพื่อใช้เป็นเกณฑ์มาตรฐาน: dd if=/dev/urandom of=./mytestfile.random bs=1024 count=97960507

  • dd if=./mytestfile.random of=/dev/sda1ตอนนี้เขียนข้อมูล ถ้าไดรฟ์สามารถเก็บสิ่งนี้ได้มากมันก็เป็น "ของจริง" นอกจากนี้คุณยังสามารถใช้md5sumหรือsha1sumจาก./mytestfile.randomและเปรียบเทียบกับ/dev/sda1ตอนนี้ การปรับปรุงที่ดียิ่งขึ้นก็คือการเขียนmytestfile.randomไปยังจุดเมานท์ของไฟล์ซึ่งจะทำให้ระบบไฟล์ในไดรฟ์และการแบ่งพาร์ติชันของไดรฟ์ไม่เปลี่ยนแปลงในคำอื่น ๆ

    dd if=./mytestfile.random of=/mountpoint/for/usb/drive/testfile.random
    
  • เพื่อความสมบูรณ์แล้วคุณก็สามารถจะตรวจสอบ hashsum ใด ๆ เช่นmd5sum, sha1sum, sha256sumหรือคนอื่น ๆ ตัวอย่างเช่น

    md5sum ./mytestfile.random  /mountpoint/for/usb/drive/testfile.random
    

    จุดสำคัญที่นี่คือถ้าจำนวนข้อมูลที่เขียนอยู่ในเกณฑ์ที่ยอมรับได้และสร้างผลรวมตรวจสอบที่ถูกต้องก่อนและหลังการเขียน - ไดรฟ์อาจตกลง

ทั้งหมดนี้สามารถใส่ลงในสคริปต์ที่ดีเพื่อความสะดวกถ้าต้องการดังนั้น

ข้อสรุป

คำถามนี้ดูเหมือนจะเป็น "โปรโมชั่น" มากกว่าสำหรับสิ่งที่ OP ชอบและดูเหมือนว่า OP ไม่ค่อยสนใจในการทดสอบไดรฟ์ นอกจากนี้ปัญหาตัวเองเป็นเรื่องมนุษย์มากกว่าปัญหา "ไดรฟ์" ในความคิดเห็น OP เองระบุว่าพวกเขาไม่เข้าใจพฤติกรรม USB จริง ๆ แต่มีความโกรธที่จะตำหนิ "ตัวควบคุม" ฉันจะทิ้งคำถามนี้ด้วย 3 คะแนน:

  • เข้าใจปัญหาที่คุณพยายามแก้ไขอย่างชัดเจนและคำจำกัดความของ "ไดรฟ์ปลอม" คืออะไร
  • พยายามทำความเข้าใจกับยูทิลิตี้พื้นฐานของ Unix
  • เมื่อพูดถึงการซื้อสินค้าเช่นเดียวกับการรักษาความปลอดภัยในรูปแบบใดก็ตามให้พิจารณาหาผู้ขายที่เชื่อถือได้และซื้อไดรฟ์จากพวกเขาเท่านั้น

1
ขอบคุณ แต่ฉันไม่แน่ใจว่า dd จะตรวจจับขนาดจริงหรือไม่เพราะคอนโทรลเลอร์จะปลอมว่ามีพื้นที่มาก ฉันคิดว่าคุณต้องเขียนไฟล์ (หรือมากกว่าไฟล์) และตรวจสอบว่าคุณสามารถรับมันกลับมาอย่างสมบูรณ์ เดาว่ามีเหตุผลว่าทำไมมีเครื่องมือเฉพาะสำหรับการทดสอบโชคไม่ดีที่มันเป็นแค่หน้าต่างเท่านั้น เดาฉันจะต้องใช้ VM ข่าวในประเทศเยอรมนีมันค่อนข้างใหญ่เมื่อไม่นานมานี้ (แหล่งข้อมูลเยอรมันเกี่ยวกับหัวข้อ: heise.de/ct/ausgabe/ … )
verpfeilt

1
@ verpfeilt ดีฉันไม่ได้พูดภาษาเยอรมันดังนั้นบทความจะต้องมีการสรุปหรือแปลโดยใครบางคน คอนโทรลเลอร์จะปลอมได้อย่างไรว่ามีพื้นที่เท่ากัน? ddรายงานจำนวนข้อมูลที่เขียน / มอบให้กับอุปกรณ์กลับมาฉันไม่เห็นว่าจะแกล้งทำอย่างไร
Sergiy Kolodyazhnyy

2
คุณสามารถเขียนทุกอย่างได้ แต่ไม่ได้บอกว่าไคลเอนต์ยูเอสบีจะเก็บมันไว้ ถ้าฉันเข้าใจถูกต้องปัญหาอยู่ที่สถาปัตยกรรม usb โดยตรง คุณไม่สามารถติดหน่วยความจำแฟลชได้ แต่ต้องการชิปที่จะทำตามโปรโตคอล เช่นเดียวกับ stub ( en.wikipedia.org/wiki/Method_stub ) สิ่งนี้จะช่วยให้คุณสร้างหน่วยความจำแบบเขียนอย่างเดียว (ไดรฟ์มีหน่วยความจำจำนวนเล็กน้อยเพื่อจัดเก็บไฟล์ขนาดเล็ก) นี่คือเหตุผลที่เครื่องมือเช่น h2testw มีอยู่ นี่คือบางสิ่งในภาษาอังกฤษ: myce.com/news/…
verpfeilt

1
@SergiyKolodyazhnyy ฉันได้พบว่า pendrives USB หลายตัวมีขนาดเล็กกว่าขนาดเล็กน้อย ผมเรียกพวกเขาธรรมดา ฉันคิดว่าไดรฟ์ปลอมนั้นมีขนาดเล็กมาก ฉันเดาว่าจะเขียนบางสิ่งลงในไดรฟ์ด้วยddและหลังจากนั้นการตรวจสอบ md5sum ควรตรวจสอบว่าสามารถเขียนและอ่านได้อย่างถูกต้อง (ฉันคิดว่าเครื่องมือพิเศษในคำตอบของ @ verpfeilt ดูน่าสนใจยิ่งขึ้น แต่ฉันยังไม่ได้ทดสอบฉันมี pendrives และการ์ดหน่วยความจำ USB จำนวนมากฉันไม่คิดว่าฉันซื้อของปลอมมาแล้ว)
sudodus

1
@SergiyKolodyazhnyy ฉันเห็นด้วยกับคำจำกัดความที่อัปเดตของคุณแล้ว 'อุปกรณ์จัดเก็บข้อมูลปลอมเป็นอุปกรณ์ที่อ้างว่ามีขนาดที่อ้างสิทธิ์ แต่ต่ำกว่าความอดทน 15% (และความอดทนคือขนาดที่เรียกร้อง± 15%)' - ขอบคุณสำหรับการอัปเดตคำตอบของคุณ :-) ดี
sudodus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.