Проверьте реальный размер флэш-накопителя USB
Недавно я много читал о поддельных картах MicroSD и флэш-накопителях USB, которые утверждают, что имеют много места (даже если вы спрашиваете компьютер), но физически предлагают намного меньше. Я недавно купил USB-накопитель SanDisk (заявлено 128 ГБ) и хочу проверить его размер. Это не куплено через ebay или что-то, но я действительно хочу проверить реальный размер прежде, чем использовать это продуктивно.
Я мог бы просто скопировать материал на него, скопировать обратно и посмотреть, все ли в порядке. Я мог бы также автоматизировать это с помощью хэшей и прочего. Но я надеялся, что есть более точное решение. Я читал, что для Windows H2testw делает свое дело. Есть ли простой способ проверить это на Ubuntu/Linux? Может быть, специализированный, хорошо работающий инструмент?
Обновление: просто чтобы прояснить, идея состоит в том, чтобы проверить, что размер, который система Linux сообщает контроллеру, является правильным (поэтому никакие данные не будут потеряны). Я не хочу видеть, получу ли я 128 ГБ вместо 127,3 ГБ. Я хочу проверить, будут ли все записанные мной данные снова доступны для чтения. К сожалению, я могу найти только немного информации об этом на английских технических сайтах. Хотя есть хорошие немецкие источники. На самом деле я ищу приложение, подобное этому, но для Ubuntu / Linux: https://www.raymond.cc/blog/test-and-detect-fake-or-counterfeit-usb-flash-drives-bought-from-ebay-with-h2testw/
Update2: я попытался собрать некоторые источники на английском языке. Я не прочитал все их подробно, из-за нехватки времени.
- https://www.ebay.com/gds/All-About-Fake-Flash-Drives-2013-/10000000177553258/g.html
- https://en.wikipedia.org/wiki/USB_flash_drive
- https://www.heise.de/newsticker/meldung/Verdaechtige-USB-Sticks-mit-2-Terabyte-bei-Amazon-Faelschungen-entlarven-Datenverluste-vermeiden-3915202.html
- http://www.pcgameshardware.de/USB-Stick-Hardware-255579/News/falsche-Speicherkapazitaet-bei-Amazon-1245682/
Обновление 3: объяснения
Из-за странных критиков ниже, некоторые объяснения.
В чем проблема и почему один дд не решает ее?
Это реакция на
"Четко определите, какую проблему вы пытаетесь решить, и каково определение" фальшивого драйва "".
Кажется, что некоторые люди не понимают проблему. Поэтому я попытаюсь объяснить это как можно более кратко, хотя я думаю, что это во многом зависит от моего вопроса.
Емкость USB-устройств, которые предоставляет вам ваша операционная система или инструменты Unix, может быть неправильной. Это фатально, так как ваша ОС регулирует объем данных, которые вы можете отправить. Если вы отправите больше данных, чем сможете, вы потеряете данные. Это проблема. Итак, почему это может произойти?
Вам не нужно хорошо знать USB-протокол, чтобы понять проблему. Последовательные интерфейсы имеют общее свойство: клиентскому устройству (USB-накопителю) необходимо сообщать свою собственную емкость через этот последовательный интерфейс. Это означает, что клиентскому устройству нужен собственный контроллер с некоторыми знаниями о назначении устройств и, в данном случае, его емкости. Он также решает, что сделано, когда получает команду на сохранение чего-либо. Если контроллер запрограммирован таким образом, он может просто игнорировать команду или что-то перезаписать данными.
Что это значит? Что бы ни говорили ваши инструменты Unix о емкости диска: это то, о чем инструменты спрашивали у диска, и больше ничего. Вот для чего был изобретен h2testw: он проверяет реальный размер с помощью метода, описанного ниже, и сравнивает его с тем, что говорит накопитель. Если это не то же самое, у вас может быть потеря данных, потому что все ваши общие операции по хранению данных зависят от информации вашей операционной системы, которая просто запрашивает контроллер. Почему просто спросить? Тестирование требует времени и перезаписывает все данные на диске. Поэтому естественно, что операционная система должна полагаться на эту информацию.
Для проверки реальной емкости, такой как h2testw, вы действительно можете использовать dd
чтобы записать данные на диск, прочитайте их еще раз и посмотрите, будет ли это то же самое, что вы написали. Совершенно законно. Характер оборудования и привода делают его более сложным. Рассмотрим кеши для записи, например. Вы должны убедиться, что вы не читаете из кэша. Это только один пример того, почему это не так просто, как кажется. Также подумайте, что просто запись нулей означает низкую энтропию информации, которую можно восстановить при чтении. Это просто не так просто в деталях. Вы все еще можете сделать это вручную, конечно.
Но почему, когда вы можете автоматизировать вещи? Почему на работу? f3, как предложено в моем ответе ниже, реализует тонны мыслей многих участников (считают, что это своего рода расширенный h2testw), а также реализует несколько методов с различными компромиссами. Разработчик выяснил хитрости различных фальшивых дисков (подделок), которые они имели под рукой. Поэтому, хотя я понимаю теорию и проблему (по-видимому, поскольку проблемы хорошо объясняются в немецких технических СМИ, но не в англоязычных СМИ), я не претендую на то, что понимаю все, поэтому я упомянул об этом выше. Это просто теория, которую я понимаю, и я скорее программист. Но как студент, изучающий информатику, я понимаю это достаточно хорошо, чтобы увидеть проблему.
"Попытайтесь понять основные утилиты Unix"
На самом деле я уже ответил на этот вопрос, но чтобы прояснить: инструменты Unix просто используют USB-протокол (конечно, только для USB-устройств) для сбора информации. Нет смысла делать больше, чем это.
Помогает ли покупать только у поставщиков трестов?
tl; dr: это не так.
"Когда речь заходит о покупке товаров, как и о любой форме безопасности, подумайте о том, чтобы найти надежного продавца и покупать диски только у них".
Безопасность (и безопасность) не о доверии! Речь идет о проверке и валидации! Извините, но это так неправильно во многих отношениях.
Предположим, вы покупаете через доверенного продавца. Несколько вопросов:
Проверил ли поставщик оборудование, чтобы убедиться в отсутствии потери данных? Узнает ли он, когда он покупает поддельные диски и продает их? Не обязательно.
Возможно ли, что он покупает вещи, которые он не знает, подделка? В общем, посмотрите на недавние подделки рызенов: https://www.pcgamer.com/beware-of-fake-ryzen-processors-selling-on-amazon/, https://www.heise.de/newsticker/meldung/Direkt-von-Amazon-Faelschungen-von-AMDs-Ryzen-Prozessoren-im-Umlauf-3772757.html
Если я потеряю свою презентацию в дисководе и испорчу презентацию, вернется ли мой проверенный поставщик вовремя и спасет меня? Это, вероятно, заменит двигатель, так как последний путешествующий во времени DeLorean был разрушен в 1885 году.
Другие вещи
"Этот вопрос действительно больше похож на" промо "в том, что нравится OP, и кажется, что OP гораздо меньше заинтересован в реальном тестировании накопителей".
Это нелепо. Я искал специально подобный инструмент для h2testw, который также работает на Linux. И да, это то, что я "хотел бы", полезный ответ, извините. Я понятия не имел, что англоязычная пресса не слишком осведомлена о таких проблемах, и мне посчастливилось найти что-то подобное позже. Это не промо, но на самом деле вы можете использовать его.
4 ответа
F3 - Борьба с мошенничеством
Есть только одна альтернатива, которую я нашел, но я думаю, что это даже лучше, чем оригинал h2testw
инструмент для MS Windows. К счастью, его действительно легко использовать даже из командной строки. Тем не менее, есть доступные графические интерфейсы. Также на веб-сайте инструментов много информации о реализации и проблемах с поддельными дисками.
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
выход для определения параметров для i3fixsudo 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
запросит требуемый размер устройства и заполнит его сгенерированными файлами размером 1 ГБ каждый. f3read
прочитает все эти файлы и увидит, что они завершены и не сломаны. В качестве примера команды, которые я использовал для проверки моего жесткого диска ~128 ГБ:
$ 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. Согласно веб-сайту, есть еще несколько инструментов, которые доступны. Чтобы получить их посмотрите на сайт.
Пакет поставляется с короткими, но полезными справочными страницами, хотя я думаю, что они упускают некоторую информацию с веб-сайта о разнице, например, f3read / write и f3probe, поэтому этот ответ стал немного длиннее.
Я написал простой инструмент для этого, он называется CapacityTester (скриншот) и имеет графический интерфейс и CLI.
Для загрузки доступен предварительно скомпилированный двоичный файл для Debian 7, который, скорее всего, будет работать из коробки в современной системе Ubuntu.
Я написал это для личного пользования, потому что не смог найти графический инструмент для этой цели. Вам просто нужно сначала смонтировать пустой USB-накопитель, выбрать его и начать тестирование. Это очень тупой инструмент, потому что все, что он делает, - это заполняет диск файлами, а затем проверяет правильность данных на диске. Это прервет тест на первую ошибку (запись или чтение / проверка). Он сообщит о смещении фрагмента, который не может быть успешно записан или проверен, но это логическое смещение, поэтому эта информация может оказаться бесполезной, поскольку она зависит от файловой системы, в которой находятся файлы на диске. Однако когда накопитель заполнен данными и все можно прочитать и проверить, можно с уверенностью предположить, что заявленная емкость накопителя правильная. Как примечание, тестовые файлы автоматически удаляются (это может не сработать, если диск неисправен).
Опять же, это очень просто, так как работает только с файлами поверх существующей файловой системы. Таким образом, есть некоторые KB (+ 1M буфер), которые не могут быть протестированы. И это очень медленно, потому что он действительно заполняет всю файловую систему. F3, конечно, намного сложнее и быстрее, но не имеет графического интерфейса. Единственная причина, по которой существует CapacityTester, состоит в том, что он имеет графический интерфейс пользователя, поэтому его могут использовать пользователи, не знакомые с командной строкой или просто предпочитающие графический интерфейс.
Обратная связь приветствуется.
[Проблема] Вы купили SD-карту, но не знаете, подделка ли она и какова реальная емкость.
[Решение] Вот точные шаги, которые сработали для меня в Ubuntu:
- [Терминал] Установите f3:
sudo apt update && sudo apt install f3
- [Дисковая утилита] Добавить раздел диска. Отформатируйте диск в медленном режиме как
fat
. См. изображение. - [Дисковая утилита] Смонтируйте диск: см. изображение.
- [Терминал] записываем на диск:
sudo f3write /media/toddmo/FakeOrNot
- [Терминал] читает с диска:
sudo f3read /media/toddmo/FakeOrNot
- [Amazon/AliExpress][!важно] Оставьте отзыв о скорости записи, скорости чтения и фактической емкости.
(шаг 3)
Обращаясь к поведению ОП и "фальшивому драйву"
Я редактирую ответ, чтобы должным образом учесть несколько моментов, поскольку ОП был очень яростным (и, на мой взгляд, против большинства комментариев и ответов, кроме их собственных, что я нахожу подозрительным). В частности, многие утверждают, что существует "фальшивый драйв", но нет четкого определения того, что на земле это означает. ОП заявил:
Я мог бы просто скопировать материал на него, скопировать обратно и посмотреть, все ли в порядке. Я мог бы также автоматизировать это с помощью хэшей и прочего. Но я надеялся, что есть более точное решение.
Сами OP признали, что они "могут просто копировать материал" и проверять целостность данных, но были очень против всех других комментариев и ответов, которые предлагают что-то еще, а OP продолжал выдвигать F3 как "реальную сделку". Сам вопрос вначале касался размера диска, но затем OP по какой-либо причине упомянул хэши, чтобы "посмотреть, в порядке ли файлы", как будто существуют загадочные диски, которые имеют один размер и позволяют записать этот размер, но тогда данные повреждены. Поэтому я нахожу это очень подозрительным и считаю, что OP, продвигающий F3, является спам-вопросом и ответом.
Когда диск на самом деле поддельный диск
В этом вопросе очевидное определение ОП
"… приводы, которые утверждают, что имеют много места (часто слишком далеко, например, 128 ГБ), но физически предлагают всего 0,5–4 ГБ".
Другими словами, согласно OP, контроллер запрашивает X данных, но USB может содержать только примерно 80-90 % меньше, чем заявлено.
Пользователь sudodus предложил в комментариях (выделение добавлено): "Я обнаружил, что несколько USB-накопителей немного меньше номинального размера. Я называю их недопустимыми. Я думаю, что поддельные накопители " существенно меньше " (обычно половина номинального размера). или меньше) Это определение прекрасно, однако, если мы примем это, поддельный диск определен на 50%. Диск, который требует 64 ГБ, но может вместить только 32 ГБ, технически теряет половину своей стоимости для владельца, и владелец может поместить только половину того, что он намеревался, на диск.
Я предлагаю более простое определение: контрафактное устройство хранения - это то, которое, как утверждают, имеет Claimed Size
но терпимость ниже 15% (а толерантность Claimed Size ± 15 %
).
± 15 %
это очень разумно. Также учтите, что пользователи обычно путаются между организациями Unix,IEEE и IEC, использующими двоичный префикс вместо мощности 10 префиксов для размера хранилища данных. Разница составляет 20% на уровне префиксов yotta, однако USB-накопителей пока нет, поэтому в течение следующих 20 лет разумно будет использовать 15%. (См. Вопрос Askubuntu "Значение" i "в"MiB " и двоичный префикс)
Тестирование диска
По сути, пользователю не нужны никакие специальные инструменты, кроме того, что уже поставляется с Ubuntu и большинством POSIX-совместимых систем Unix. Давайте подчеркнем и перефразируем определение снова:
Если мы не можем записать объем данных на диск и то, что мы записываем, находится в пределах 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
Для целостности вы можете просто выполнить любую проверку хеш-суммы, например:
md5sum
,sha1sum
,sha256sum
или другие Напримерmd5sum ./mytestfile.random /mountpoint/for/usb/drive/testfile.random
Ключевым моментом здесь является то, что, если количество записанных данных находится в пределах допуска и выдает правильную контрольную сумму до и после записи - диск, вероятно, в порядке.
Все это может быть помещено в хороший сценарий для удобства, если вы того пожелаете.
Заключение
Этот вопрос действительно больше напоминает "промо" в том, что нравится OP, и кажется, что OP гораздо меньше заинтересован в собственном тестировании дисков. Кроме того, проблема сама по себе более человечная, чем проблема "драйва". В комментариях OP сами заявили, что они на самом деле не понимают поведение USB, но неистово обвиняют "контроллер". Я оставлю этот вопрос с 3 баллами:
- Четко определите, какую проблему вы пытаетесь решить, и каково определение "фальшивого драйва".
- Попытайтесь понять основные утилиты Unix
- Когда речь заходит о покупке товаров, как и о любой форме безопасности, подумайте о том, чтобы найти надежного продавца и покупать диски только у них.