Дано устройство usb mass storage. Ему нужно подавать нестандартные команды, типа зашифровать и т.п. Пока реализовал через spti IOCTL_SCSI_PASS_THROUGH .
Уже создавал тут ветку по этому устройству, но тема была другая — как с ним вообще работать. Теперь работать я с ним умею, встали другие вопросы.
Вопросы к знающим людям :
1) IOCTL_SCSI_PASS_THROUGH не требует права администратора, но CreateFile на букву диска требует. Есть ли вероятность, что на имя типа \PhysicalDrive%x или \\?\storage#removablemedia#7&176630d9&0&rm#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b} (к примеру) CreateFile не понадобятся админские права? Сам попробую проверить в ближ. дни, но ответы специалистом с пояснениями очень не помешали бы.
2) Если spti все-таки нужны админские права в любом случае и никакие извращения тут не помогут, то на что мне перейти, чтобы не писать драйвер и была более-менее приличная скорость (пару метров в сек. минимум)?
3) В windows seven была запущена моя программа (общение через spti) и под правами пользователя вполне успешно пообщались с устройством. Что там такого в семерке произошло?
4) Можно ли программно отформатировать диск (например с нашего устройства), не выводя никаких сообщений юзеру? Апишных функций я пока не нашел, есть какая-то из шелла, но она, судя по описанию, вызывает стандартное окно форматирования диска
M>Дано устройство usb mass storage. Ему нужно подавать нестандартные команды, типа зашифровать и т.п. Пока реализовал через spti IOCTL_SCSI_PASS_THROUGH . M>Уже создавал тут ветку по этому устройству, но тема была другая — как с ним вообще работать. Теперь работать я с ним умею, встали другие вопросы. M>Вопросы к знающим людям : M>1) IOCTL_SCSI_PASS_THROUGH не требует права администратора, но CreateFile на букву диска требует. Есть ли вероятность, что на имя типа \PhysicalDrive%x или \\?\storage#removablemedia#7&176630d9&0&rm#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b} (к примеру) CreateFile не понадобятся админские права? Сам попробую проверить в ближ. дни, но ответы специалистом с пояснениями очень не помешали бы.
Модель безопасности NT предусматривает security check'и token vs SD только при открытии хэндла на объект. Когда хэндл получен — он имеет granted access mask и далее с ним можно делать все что в ней указано, независимо от того кто пользуется хэндлом. Так что можно к примеру открыть файл на запись из под админа, и затем передать DuplicateHandle'ом хэндл гостевому процессу и он сможет писать в этот файл пользуясь хэндлом с грантованным правом на запись.
M>2) Если spti все-таки нужны админские права в любом случае и никакие извращения тут не помогут, то на что мне перейти, чтобы не писать драйвер и была более-менее приличная скорость (пару метров в сек. минимум)?
Зачем драйвер? Сервис напишите.
M>3) В windows seven была запущена моя программа (общение через spti) и под правами пользователя вполне успешно пообщались с устройством. Что там такого в семерке произошло?
CreateFile'ом можно было открыть диск под полный доступ из под не админа? Этож п..ц. Такого не может быть.
M>4) Можно ли программно отформатировать диск (например с нашего устройства), не выводя никаких сообщений юзеру? Апишных функций я пока не нашел, есть какая-то из шелла, но она, судя по описанию, вызывает стандартное окно форматирования диска
Здравствуйте, ononim, Вы писали:
M>>Что вы можете мне сказать про aspi и подойдет ли он мне в данном случае? Есть еще какие-нибудь технологии, сторонние библиотеки? O>хз — не юзал
Ясно. А scsi port и scsi miniport ? Нашел статью Криса Касперского, где он анализировал защиту дисков в WindowsNT, так вроде и указывается, что через них можно достучаться до устройства, но потом говорится, что у автора не получилось из-за неких ограничений.. Не понятно
Здравствуйте, ononim, Вы писали:
M>>Дано устройство usb mass storage. Ему нужно подавать нестандартные команды, типа зашифровать и т.п. Пока реализовал через spti IOCTL_SCSI_PASS_THROUGH . M>>Уже создавал тут ветку по этому устройству, но тема была другая — как с ним вообще работать. Теперь работать я с ним умею, встали другие вопросы. M>>Вопросы к знающим людям : M>>1) IOCTL_SCSI_PASS_THROUGH не требует права администратора, но CreateFile на букву диска требует. Есть ли вероятность, что на имя типа \PhysicalDrive%x или \\?\storage#removablemedia#7&176630d9&0&rm#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b} (к примеру) CreateFile не понадобятся админские права? Сам попробую проверить в ближ. дни, [/ccode]
1. SPTI всегда требует прав админа. Под висту и выше также блокируется SCSIOP_WRITE* команды в случае если volume не залочен. Смотри сюда http://support.microsoft.com/kb/942448
2. Можешь сервис сделать который будет принимать твои данныe через пайп и слать их в SPTI. Можно и драйвер.
3. Семерка и виста разрешают работать с SPTI но фильтруют опкоды в CDB
4. Можно, но сложно. Изучай стоение ФАТ и НТФС, научись создавать образ пустой ФС и записывай хоть через WriteFile поблочно.