Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Как заблокировать USB Flash только на чтение?


Автор: andrew_121 19.7.2009, 16:33
Задача.
Записал на флешку данные. Нужно сделать так, чтоб юзер не мог удалить или отформатировать ее?

Спасибо!

Автор: GremlinProg 19.7.2009, 20:03
Цитата(andrew_121 @  19.7.2009,  18:33 Найти цитируемый пост)
Нужно сделать так, чтоб юзер не мог удалить или отформатировать ее?

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

чтобы такого не было, самое простое - перетиреть "железную" идентификацию с флешки (вендор, продукт) на что-нибудь свое,
а как это делать, решает производитель: некоторые могут хранить ее в своем EEPROM, как FTDI, к примеру,
а некоторые - вообще не хранить, т.е. передавать "на лету" - вот тут уже ни чего не поделаешь

к чему такие заморочки, кстати?
не проще ли взять CD-R?

Автор: andrew_121 19.7.2009, 22:56
Цитата(GremlinProg @  19.7.2009,  20:03 Найти цитируемый пост)
к чему такие заморочки, кстати?

Нужно чтоб информация на нее записанная не изменялась.


Цитата(GremlinProg @  19.7.2009,  20:03 Найти цитируемый пост)
не проще ли взять CD-R? 

Не удобно.


А если нужна подобная возможность для файла/каталога. Это упростит задачу?

Автор: AlexT84 19.7.2009, 23:40
Купи себе флешку с аппаратным блокиратором на Р/О. Такие не редкость. А если нужно на века, то установи в Р/О и выковыряй его нафих. 

Автор: andrew_121 20.7.2009, 02:22
Цитата(AlexT84 @  19.7.2009,  23:40 Найти цитируемый пост)
Купи себе флешку с аппаратным блокиратором на Р/О

Это что? Гугл молчит....

Автор: 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
Цитата(AlexT84 @  20.7.2009,  01:40 Найти цитируемый пост)
Купи себе флешку с аппаратным блокиратором на Р/О. Такие не редкость. А если нужно на века, то установи в Р/О и выковыряй его нафих. 

тоже вариант, "блокиратор" - это переключатель защиты от записи прямо на флешке, аналогичный присутствует на дискете (аналогичный не по содержанию, конечно ) )
хотя такое, по сути - уже редкость
Цитата(Alca @  20.7.2009,  11:15 Найти цитируемый пост)
EnableWriteToUSB.reg

тоже вариант, только для  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
Цитата(andrew_121 @  21.7.2009,  04:24 Найти цитируемый пост)
У usb-flash, есть файловая система? Стандарт какой-то?

какая угодно

Автор: 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,  11:53 Найти цитируемый пост)
я так понимаю, что флешка должна блокироваться из твоего приложения

Да.


Цитата(Lazin @  21.7.2009,  11:53 Найти цитируемый пост)
можно вместо защиты от записи подписывать содержимое цифровой подписью, шифровать его итд 

Разве это поможет защитить от удаления/форматирования?

Автор: Lazin 21.7.2009, 15:25
Цитата(andrew_121 @  21.7.2009,  12:29 Найти цитируемый пост)
Разве это поможет защитить от удаления/форматирования?

нет, но поможет приложению узнать, были-ли изменены-удалены файлы, и обработать это как исключительную ситуацию

Автор: 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
Цитата

Никто не позволит ковырять флешки.

А ты этим "никто" скажи все, что ты о них думаешь...  smile 

Автор: Lazin 22.7.2009, 16:55
andrew_121, зачем
Цитата(andrew_121 @  21.7.2009,  20:56 Найти цитируемый пост)
Нужно на флешку записать некоторые данные. Но так, чтоб их нельзя было удалить. И чтоб флешка не форматировалась.

?

Цитата(andrew_121 @  21.7.2009,  20:56 Найти цитируемый пост)
Где можно почитать про организацию ФС флешки? Есть ли у нее какой-то стандарт/спецификация ? В общем все, что может как-то помочь в решении этой задачи.

у флешки может быть любая ФС: fat32, ext2, etc.., это тебе ничем не поможет, так как возможность форматирования флешки никак не зависит от того, какая там ФС smile 

Автор: andrew_121 22.7.2009, 17:54
А можно чип как-то определить? Может в даташитах на чип будет нечто полезное?

Автор: korbian 23.7.2009, 08:05
Цитата(andrew_121 @  22.7.2009,  18:54 Найти цитируемый пост)
А можно чип как-то определить?

andrew_121, врядли. "Флешка" - это устройство, которое в ОБЩЕМ случае состоит из usb controller и NAND и производителю требуется "зашить" для этого устройства его ID, модель и вендора, если меня не подводит память.

Твою проблему можно решить прошив firmware в usb controller, реализующий твою логику, то есть два варианта:
  •  активное вмешательство - прошивка ПЗУ(если она вообще есть) usb controller НУЖНЫМ тебе функционалом с сохранением стандартного.
  •  разработка СОБСТВЕННОГО флеш накопителя с MCU, программируя который можно аппаратно залочить все обращения к NAND.
На мой взгляд, оба варианта - труд титанический. Хотя может я ошибаюсь и можно как-то проще.

З.ы. логика говорит, что нельзя

Добавлено через 1 минуту и 18 секунд
да, и драйвер для собственного флеш накопителя с MCU тоже придется писать. 

Автор: GavriKos 24.7.2009, 15:31
Проясни такой вопрос - тебе нужно это делать с ЛЮОЙ флешкой? Или есть конкретный набор флешек как физических объектов и надо запертить на них форматирование и прочее?

если для абсолютно любой флешки - практически невозможно. От фаорматирования ты никак не излечишся. Просто от удаления - пишешь свою ФС и соответственно драйвер под операционку, чтоб она подхватывала твою ФС.

Если конкретные флешки - проще всего аппаратно.

В голову приез еще такой интересный вариант... Может я конечно ошибаюсь, но форматирование - вешь строго последовательная. Идея в следующем - пишешь прогу, вешаешь эту программу в ту часть флешки которая по любому первая будет затрагиваться при форматировании. Прога каким то образом этот момент отлавливает и запрещает форматирование.

еще боле едикий вариант - приложение в автозапуске флешки, мониторящее ВСЕ действия с флешкой и если нужно прерывающее их. Скорее всего писать надо на ниском уровне.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)