Мені хотілося б знати, як можна видалити 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
просто добре. Однак через те, як побудовано внутрішню частину флешки, якщо ви використовуєте один пропуск для перезапису, може бути кілька шарів даних, захованих за фактичними блоками, які все ще зберігають інформацію, що залишилася.
Зазвичай частина флеш-накопичувача несправна, і це позначається під час виготовлення. Існують також інші біти, які можуть піти не так (стаючи незмінними, нестабільними або незрозумілими), ці частини також повинні бути відмічені як несправні протягом життя. Ця інформація зберігається в зарезервованому просторі, на тих же мікросхемах, що і ваші дані. Це одна з декількох причин того, що накопичувач великого пальця об'ємом 4 Гб не показує ємність 2 ^ 32 байт.
Флеш-пам’ять також внутрішньо організовано у більші блоки, іноді набагато більше, ніж файлові системи, що працюють на диску. Типовий розмір блоку файлової системи становить 4 КБ, і сегменти спалаху, які можна стерти за один раз, можуть становити від 64 КБ до навіть декількох мегабайт. Ці великі блоки можна видалити лише цілими, що скидає весь блок до відомого стану (всі 1s або всі 0s). Після цього запис даних може змінити будь-який біт (змінити типовий 1 на 0, якщо потрібно, або змінити типові 0 на 1), але лише один раз . Щоб змінити будь-який біт назад за замовчуванням, весь сегмент потрібно знову стерти!
Отже, коли ви хочете змінити блок 4 КБ (файлова система просить змінити один символ у середині файлу), флеш-контролеру потрібно буде прочитати та буферувати всі 64 КБ старих даних, видалити всі його та написати новий вміст. Це було б дуже повільно, стирання сегментів - найповільніша операція. Також сегмент може стиратися лише обмежений час (типово десятки тисяч), тому якщо ви внесете занадто багато змін в один файл, це може швидко погіршити диск.
Але це не так, як це робиться. Інтелектуальні флеш-контролери просто записують нові дані 4 КБ в інше місце та роблять примітку, щоб перенаправити зчитування цього 4КБ даних посеред старого блоку. Їм потрібно трохи місця, яке ми не бачимо, щоб зберігати цю інформацію про переадресації. Вони також намагаються переконатися, що вони проходять усі доступні сегменти для зберігання даних, це називається вирівнюванням зносу .
Це означає, що зазвичай старі дані все ще є десь на диску ! Якщо ви просто очистили всі доступні блоки, всі приховані блоки все ще зберігають досить недавню версію даних. Чи це доступне для зловмисника, від якого ви хочете, щоб ваші дані були захищені, - це інше питання.
Якщо у вас достатньо недавнього розповсюдження, а USB-накопичувач запрограмований так, щоб виявити, що це флешка, blkdiscard
можна скористатися базовою TRIM
операцією, що є стиранням сегменту, про який ми говорили вище. У нього також є додатковий прапор, щоб переконатися, що апаратні засоби повністю стирають навіть невидимі приховані дані:
# blkdiscard -s /dev/myusbdevice
-s, - Secure Виконуйте безпечну відмову. Захищена відмова - це те саме, що і звичайна відмова, за винятком того, що всі копії викинутих блоків, які, можливо, були створені шляхом збору сміття, також повинні бути стерті. Для цього потрібна підтримка пристрою.
Це не обов'язково спрацює, як я демонстрував вище. Якщо ви отримаєте Operation not supported
, ні ваше ядро, ваші утиліти, ні чіп USB-шлюзу (який дозволяє флеш-контролеру виглядати як привід через USB) не підтримує передачу TRIM
команди. (Контролер флеш-пам'яті повинен мати можливість самостійно стирати сегменти). Якщо це підтримується постачальником вашого диска, це найбезпечніший спосіб.
Ще один, менш безпечний спосіб переконатися, що ви дозволяєте менше старих даних десь затримуватися - це перезаписати їх кілька разів, якщо це можливо, випадкові значення.
Чому випадковий, запитаєте ви? Уявіть собі, якби накопичувач USB був зроблений занадто розумним і виявив, що ви хочете очистити сектор, і щойно змінив растрову карту, що цей сектор тепер безкоштовний, і його потрібно буде очистити пізніше. Оскільки це означає, що він може прискорити запис нулів, тож це робить маятник, який видається більш ефективним, правда? Чи робить це ваш привід, важко сказати.
В самому крайньому випадку, накопичувач міг би просто запам'ятати, скільки з початку ви очистили, і все, що потрібно для зберігання, - це приблизно 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
знаходиться вузол пристрою вашого пальця.
Деякі пропонують більш ретельний процес з більшою кількістю ітерацій та інших моделей. Для цього доступні спеціальні утиліти. Пакет coreutils GNU містить shred
команду, спеціально для цієї мети. Багато людей також використовують badblocks -w
, що є частиною пакету e2fsprogs. У FreeBSD shred
утиліта викликається gshred
і повинна бути доступною або в портах, /usr/ports/sysutils/coreutils
або /usr/ports/sysutils/fileutils
.
Це має бути в змозі надійно витерти вашу флешку, якщо ви плануєте її повторне використання: http://linux.die.net/man/1/scrub Якщо ні, то розплавіть її ...