Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Системное программирование и WinAPI > Как заблокировать USB Flash только на чтение? |
Автор: andrew_121 19.7.2009, 16:33 |
Задача. Записал на флешку данные. Нужно сделать так, чтоб юзер не мог удалить или отформатировать ее? Спасибо! |
Автор: andrew_121 19.7.2009, 22:56 |
Нужно чтоб информация на нее записанная не изменялась. Не удобно. А если нужна подобная возможность для файла/каталога. Это упростит задачу? |
Автор: AlexT84 19.7.2009, 23:40 |
Купи себе флешку с аппаратным блокиратором на Р/О. Такие не редкость. А если нужно на века, то установи в Р/О и выковыряй его нафих. |
Автор: andrew_121 20.7.2009, 02:22 |
Это что? Гугл молчит.... |
Автор: Alca 20.7.2009, 09:15 |
Если винда, то через реестр http://www.nowa.cc/showthread.php?t=51978 EnableWriteToUSB.reg |
Автор: Alca 20.7.2009, 09:28 |
DisableWriteToUSB.reg |
Автор: Alca 20.7.2009, 09:29 |
Тока комп ребутни. |
Автор: andrew_121 20.7.2009, 09:52 |
Alca, Спасибо! |
Автор: GremlinProg 20.7.2009, 11:17 | ||
тоже вариант, "блокиратор" - это переключатель защиты от записи прямо на флешке, аналогичный присутствует на дискете (аналогичный не по содержанию, конечно ) ) хотя такое, по сути - уже редкость тоже вариант, только для Windows XP SP2 только тогда уж нужно ставить этот скрипт в автозагрузку на флешь, а потом еще объяснить пользователям, ее использующим, почему другие флешки блокированы, и как включить их обратно ) |
Автор: andrew_121 21.7.2009, 00:30 |
Флешку нужно блокировать из виндавз программы. Но ею могут пользоваться и на линукс, мас. Думаю нужно рыть в сторону ФС. Если у кого есть ссылки по теме, буду много благодарен. |
Автор: Alca 21.7.2009, 00:31 |
Какой размер данных надо хранить? |
Автор: andrew_121 21.7.2009, 04:24 |
Alca, 6-8 МБ. Но флешка может быть любой. У usb-flash, есть файловая система? Стандарт какой-то? Я кроме тулзов всяких, для блокирования использования флешек в компе, ничего не могу найти. |
Автор: Lazin 21.7.2009, 05:25 |
какая угодно |
Автор: Alca 21.7.2009, 09:18 |
--- |
Автор: andrew_121 21.7.2009, 09:54 |
Ну хоть подскажите в какую сторону капать. Lazin, Аватар сменили. Что-то с бокси случилось? шутка. |
Автор: Alca 21.7.2009, 10:27 |
В сторону аппаратной защиты. |
Автор: andrew_121 21.7.2009, 10:35 |
Alca, По каким ключевым словам искать? Повторю вопрос: у флешек есть какой-то стандарт? |
Автор: Alca 21.7.2009, 11:44 | ||
Я думаю, что программно врядли у тебя получиться защитить флешку. Добавлено @ 11:47 Глянь здесь http://www.aladdin.ru/catalog/etoken/ (eToken NG-FLASH) |
Автор: Lazin 21.7.2009, 11:53 |
я так понимаю, что флешка должна блокироваться из твоего приложения, значит ТЗ поставлено некорректно, это не получится сделать можно вместо защиты от записи подписывать содержимое цифровой подписью, шифровать его итд |
Автор: andrew_121 21.7.2009, 12:29 | ||||
Да.
Разве это поможет защитить от удаления/форматирования? |
Автор: Lazin 21.7.2009, 15:25 |
нет, но поможет приложению узнать, были-ли изменены-удалены файлы, и обработать это как исключительную ситуацию |
Автор: andrew_121 21.7.2009, 20:56 |
Lazin, Да нет же. Нужно иначе. Вот. Нужно на флешку записать некоторые данные. Но так, чтоб их нельзя было удалить. И чтоб флешка не форматировалась. Где можно почитать про организацию ФС флешки? Есть ли у нее какой-то стандарт/спецификация ? В общем все, что может как-то помочь в решении этой задачи. Спасибо. |
Автор: EnergoHokum 22.7.2009, 13:42 |
Самый идиотский вариант, пришедший в голову: у кристалла собственно FLASH-памяти должен быть пин, отвечающий за направление передачи данных, R/W. После записи нужных файлов расковырять корпус флешки, посмотреть, есть-ли возможность принудительно подать на этот пин уровень, соответствующий "только чтение". Если такая возможность есть -- то запись на флешку станет невозможна. Upd: Конечно, это блокировка аппаратная, но, как мне думается, абсолютно надёжной программной блокировки (не влезая в контроллер флешки), да ещё и из userspace операционки (причём, ОС может быть любая, хоть Linux, хоть Windows, хоть *BSD) сделать нельзя. |
Автор: andrew_121 22.7.2009, 14:07 |
EnergoHokum, Спасибо. Но увы, это не возможно. Никто не позволит ковырять флешки. |
Автор: Alca 22.7.2009, 16:48 | ||
А ты этим "никто" скажи все, что ты о них думаешь... ![]() |
Автор: Lazin 22.7.2009, 16:55 | ||||
andrew_121, зачем
?
у флешки может быть любая ФС: fat32, ext2, etc.., это тебе ничем не поможет, так как возможность форматирования флешки никак не зависит от того, какая там ФС ![]() |
Автор: andrew_121 22.7.2009, 17:54 |
А можно чип как-то определить? Может в даташитах на чип будет нечто полезное? |
Автор: korbian 23.7.2009, 08:05 |
andrew_121, врядли. "Флешка" - это устройство, которое в ОБЩЕМ случае состоит из usb controller и NAND и производителю требуется "зашить" для этого устройства его ID, модель и вендора, если меня не подводит память. Твою проблему можно решить прошив firmware в usb controller, реализующий твою логику, то есть два варианта:
З.ы. логика говорит, что нельзя Добавлено через 1 минуту и 18 секунд да, и драйвер для собственного флеш накопителя с MCU тоже придется писать. |
Автор: GavriKos 24.7.2009, 15:31 |
Проясни такой вопрос - тебе нужно это делать с ЛЮОЙ флешкой? Или есть конкретный набор флешек как физических объектов и надо запертить на них форматирование и прочее? если для абсолютно любой флешки - практически невозможно. От фаорматирования ты никак не излечишся. Просто от удаления - пишешь свою ФС и соответственно драйвер под операционку, чтоб она подхватывала твою ФС. Если конкретные флешки - проще всего аппаратно. В голову приез еще такой интересный вариант... Может я конечно ошибаюсь, но форматирование - вешь строго последовательная. Идея в следующем - пишешь прогу, вешаешь эту программу в ту часть флешки которая по любому первая будет затрагиваться при форматировании. Прога каким то образом этот момент отлавливает и запрещает форматирование. еще боле едикий вариант - приложение в автозапуске флешки, мониторящее ВСЕ действия с флешкой и если нужно прерывающее их. Скорее всего писать надо на ниском уровне. |