Можно ли создать файл, который нельзя скопировать? - PullRequest
12 голосов
/ 29 июля 2010

Чтобы ограничить область действия, предположим, что мы находимся только в мире Windows.

Также предположим, что мы не хотим играть с политикой разрешений.

Возможно ли создатьфайл, который нельзя скопировать?

Заранее спасибо.

Ответы [ 13 ]

15 голосов
/ 29 июля 2010

Нет. Вы не можете создать файл, который SYSADMIN не может скопировать. Вы можете зашифровать его, хотя.

14 голосов
/ 29 июля 2010

«Попытка сделать цифровые файлы не копируемыми - это все равно, что сделать воду не мокрой».~ Брюс Шнайер

10 голосов
/ 29 июля 2010

Ну, а как насчет создания файла, который занимает более 50% от общего пространства на этом компьютере и который не сжимается?Например, давайте предположим, что вы хотите сохранить логическое значение (true или false) таким способом.В зависимости от его значения, вы можете записать поток битов one s или zero es и зашифровать указанный поток, используя некоторый алгоритм шифрования, такой как AES в режиме CBC.Это дает вам дополнительное преимущество исправления ошибок.Даже в случае значительного повреждения данных вы сможете восстановить логическое значение, проверив, преобладают ли one s или zero es в расшифрованном потоке.В этом случае вы не можете скопировать его (полностью) на машине ... Конечно, любой тип внешней памяти, который может быть добавлен в систему, может создать проблему в этом сценарии.Но файл уже будет зашифрован, так что не беспокойтесь об этом ...

4 голосов
/ 29 июля 2010

Содержимое любого файла, который может быть прочитан, может быть записано в другое место (например, в другой файл, т.е. скопировано).

Единственное, что вы можете сделать, это ограничить, кто / что может читать файл.

2 голосов
/ 29 июля 2010

Если в работающем процессе вы открываете файл и удерживаете эксклюзивную блокировку, то другие процессы не смогут прочитать файл, пока вы не закроете дескриптор или ваш процесс не завершится.Однако, как администратор, вы можете принудительно удалить дескриптор блокировки.

2 голосов
/ 29 июля 2010

Хорошая попытка, RIAA.

А если серьезно, то ты не можешь. Копирование всегда возможно, вы можете просто сделать так, чтобы людям было сложнее разобраться в файле или попытаться скрыть его, используя шифрование. Spotify делает это.

Если вы действительно очень стараетесь, создайте руткит для Windows и используйте его, чтобы не дать Windows даже узнать о файле, а также предотвратить его копирование. Файл по-прежнему будет доступен для копирования другими инструментами, или Linux получит доступ к ntfs.

2 голосов
/ 29 июля 2010

Какова мотивация позади?Если это файл только для чтения, вы можете использовать его как встроенные ресурсы в вашей сборке.

1 голос
/ 29 июля 2010

В старые времена DOS вы могли пометить секторы диска как плохие и по-прежнему считывать их.Это означало, что ОС игнорировала данный сектор, но ваше приложение будет знать, где искать и сможет получить данные.Не уверен, что это сработает в наши дни.

Еще одна старая хитрость MS-DOS заключалась в том, чтобы поместить символ пробела в середине имени файла (да, пробелы были допустимыми символами для имен файлов).Поскольку в командной строке не было метода выхода из пробела, файл не может быть скопирован с помощью команд DOS.

1 голос
/ 29 июля 2010

Если вы работаете со старыми (старыми) версиями окон, есть определенные символы, которые вы можете поместить в имя файла, которые делают его недействительным, не перечислены в папках и т. Д. Они часто использовались в старые пабы ftp дней файлообменников;)

1 голос
/ 29 июля 2010

При использовании Windows 7 для копирования некоторых файлов с жесткого диска, некоторые файлы выскакивают сообщение о том, что их невозможно скопировать полностью; некоторые данные будут исключены из копии. Я подозреваю, что это как-то связано со свободным пространством в конце файлов, хотя я думал, что сообщение было любопытным. Я ожидал бы, что операция копирования просто проигнорирует свободное место.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...