Запись необработанных данных «подписи» на диск без повреждения файловой системы - PullRequest
0 голосов
/ 12 марта 2012

Я пытаюсь создать программу, которая будет записывать серию из 10-30 букв / цифр на диск в необработанном формате (а не в файл, который ОС будет читать).Возможно, чтобы сделать мою попытку более понятной, если бы вы открывали диск в шестнадцатеричном редакторе, вы бы увидели 10-30 букв / цифр, но файловый менеджер, такой как Windows Explorer, не увидел бы это (потому что данные не являются файлом),

Моя цель состоит в том, чтобы иметь возможность "подписать" диск последовательностью символов и иметь возможность читать и записывать эту "подпись" в моей программе.Я понимаю, что NTFS подписывает свои разделы флагом NTFS, как и другие файловые системы, и я должен быть осторожен, чтобы не записать свою подпись ни в одну из этих критических частей.

Существуют ли какие-либо библиотеки в C ++ / C, которые могли бы помочь мне записать на диск на низком уровне, и как я узнаю безопасный сектор, чтобы начать писать свою подпись?Чтобы сузить это, нужно только иметь возможность записи в файловые системы NTFS, FAT, FAT32, FAT16 и exFAT и работать в Windows.Будем благодарны за любые ссылки или ссылки!

Редактировать: После некоторых исследований USB-накопители позволяют использовать только 1 раздел без применения хитрых приемов, которые могут раскрыть дальнейшие проблемы для пользователя.К сожалению, это исключает «идею разделения».

Ответы [ 3 ]

2 голосов
/ 12 марта 2012

Во-первых, как сказали комментаторы, вы должны взглянуть на почему вы пытаетесь это сделать и посмотреть, действительно ли это хорошая идея. Большинство приложений, которые пытаются обойти обычный пользовательский интерфейс, используемый пользователем для использования его / ее компьютера, являются «плохими» различными способами.

Тем не менее, вы можете попытаться найти хорошо известный файл, который всегда будет в системе и имеет некоторый размер блока для диска, и записать его в файл. Я не думаю, что большинство файловых систем будет беспокоиться о дополнительных данных в резерве, и, вероятно, они даже будут скопированы, если файл будет перемещен (более эффективно копировать весь блок на уровне диска).

Просто мысль; Не знаю, насколько это возможно, но кажется, что может теоретически работать.

1 голос
/ 12 марта 2012

Хотя я думаю, что это, как правило, довольно плохая идея, очевидный способ сделать это - пометить кластер как «плохой», а затем использовать его для своих собственных целей.

Проблемы с этим:

  1. Пометить его как плохое нетривиально (в NTFS плохие кластеры хранятся в файле с именем, например, $BadClus, но недоступны для кода пользователя (и я даже не уверен, что он доступен для драйвера устройства) ).
  2. Существуют различные программы для поиска (и попытки восстановления) поврежденных кластеров / секторов. Поскольку мы даже не верим, что это действительно плохо, почти любой из них, который вообще работает, обнаружит, что он хорош, и вернет его в действие.
  3. Большинство причин, по которым люди думают делать такие вещи (например, привязывать определенную установку программного обеспечения к определенному компьютеру), в любом случае довольно глупо.
  4. Вам нужно будет просмотреть все «плохие» сектора, чтобы увидеть, не содержит ли какой-либо из них вашу подпись.
0 голосов
/ 12 марта 2012

Это очень опасно, однако программы с нулевым заполнением делают то же самое, поэтому вы можете узнать, как стереть жесткий диск с нуля в C ++.

Сложная часть - найти место, которое ЗНАЕТЕ, не используетсяи не будет использоваться.

...