Всем привет.
Получил я курсовую: система создания образа файлов на съемном носителе.
Те при наличии на компьютере этой системы файлы будут копироваться в образ, и на компьютере где этой системы нет, доступ к файлам будет невозможен.
Функционал:
скопировать в образ с жесткого диска
скопировать с образа на жесткий диск
удалить из образа
Все это на винде ХР. Среда – msvs 2008 (или 2005). Ограничения на файл – 4 гига (так как fat)
1 вопрос – любой файл можно открыть блокнотом. Значит, я могу скопировать любой файл в образ как набор данных вне зависимости от расширения? Те exe или jpg скопируется stream’ом в образ как «текст»?
Образ будет являться набором этих «текстовых данных»:
-сначала идут названия файлов с расширениями и меткой, где начинается «текст» файла в образе.
-потом идут сами файлы (те их «текст»), разделенные метками.
2 вопрос – можно ли начинать чтение файла с определенной строки, а не с первой?
В принципе получается, что любой человек, не имеющий этой системы, открывает образ в блокноте, находит в начале имя файла с расширением и меткой где он находится, создает файл с этим расширением и копирует в него файл (те его «текст») из образа. И в итоге получает искомый файл без использования системы.
3 вопрос – это так? Если да, то как наиболее предпочтительно защитить образ – вставить в программу алгоритм шифрования (копируется в образ — шифровка, с образа – дешифровка) или в винде хр есть свои средства защиты (сертификаты что ли) ?
и еще:
как лучше реализовывать эту систему?
У меня такая задумка:
система висит как служба (те нет интерфейсной части).
При копировании с жесткого на флешку она проверяет – если на флешке есть образ (он будет создан заранее) то она копирует файлы в образ, если его нет, то ничего не делает – винда сама копирует файлы (те просто на флешку).
4 вопрос – отследить копирование можно?
Теперь мысли о копировании с образа и удалении:
При наличии системы, в контекстном меню образа (правая кнопка мыши) появляется команда, связанная с нашей системой. При нажатии появляется окошко с названиями файлов, которые находятся в образе. И два действия – скопировать на жесткий диск и удалить.
5 вопрос – как изменить контекстное меню к конкретному расширению файлов (например как это делает winrar при установке) ?
Вот. Не критикуйте сильно – я не мозг в программировании) и это пока лишь мысли, который я еще не проверял на практике. Если кто-нибудь пояснит как это будет выглядеть более красиво, огромное ему спасибо. А лучше готовые исходники с реализацией подобной идеи))))))
Заранее спасибо за ответы.
29.10.08 14:39: Перенесено модератором из 'C/C++' — Кодт
Здравствуйте, igorbass, Вы писали:
I>Всем привет. I>Получил я курсовую: система создания образа файлов на съемном носителе. I>Те при наличии на компьютере этой системы файлы будут копироваться в образ, и на компьютере где этой системы нет, доступ к файлам будет невозможен.
I>Функционал: I>скопировать в образ с жесткого диска I>скопировать с образа на жесткий диск I>удалить из образа
То что ты описал на 100% похожа на ZIP файл без сжатия. Выброси архивацию, упрости интерфейс вот тебе и ответ на все твои вопросы
I>А насчет защиты что делать? Все таки он должен быть похож на защищенный образ
Боюсь, что путь только один — писать драйвер-фильтр файловой системы, что-то типа виртуального шифрованного диска должно получиться. Explorer shell extension не подойдёт просто потому, что работать такое решение будет только в Проводнике, а вот в Far'е или другой оболочке — уже нет. Я бы написал драйвер-фильтр + некий пользовательский модуль, чтобы корректировал поведение фильтра (всё таки на уровне ядра мы не совсем знаем, что на самом деле происходит у пользователя). Если допустимо использование Windows XP не ниже SP2, тогда я посмотрел бы в сторону файловых мини-фильтров — весьма просто в реализации. Более подробно — в поиске и на сайте MSDN (ну можно, конечно, и у меня проконсультироваться за отдельную плату, подробности в icq).
Здравствуйте, x64, Вы писали:
I>>А насчет защиты что делать? Все таки он должен быть похож на защищенный образ
x64>Боюсь, что путь только один — писать драйвер-фильтр файловой системы, что-то типа виртуального шифрованного диска должно получиться. Explorer shell extension не подойдёт просто потому, что работать такое решение будет только в Проводнике, а вот в Far'е или другой оболочке — уже нет. Я бы написал драйвер-фильтр + некий пользовательский модуль, чтобы корректировал поведение фильтра (всё таки на уровне ядра мы не совсем знаем, что на самом деле происходит у пользователя). Если допустимо использование Windows XP не ниже SP2, тогда я посмотрел бы в сторону файловых мини-фильтров — весьма просто в реализации. Более подробно — в поиске и на сайте MSDN (ну можно, конечно, и у меня проконсультироваться за отдельную плату, подробности в icq).
ИМХО можно и без драйверов. Форматируем флешку через DeviceIOControl. Посылаем подальше все FAT с NTFS вместе. Откоываем флешку с помощью CreateFile, указав там PhysicalDriveX. Записываем на флешку что надо в любом формате (как предложил ffk, только этот "архив" просто записать). Если надо — по ходу действия шифруем. Флешка ничем читаться не будет, кроме как этой же программой, или другой аналогичной, но та расшифровать не сможет, если даже разберется с форматом. В общем, raw раздел.
Одно "но" — права админа нужны. Ну и не знаю, как там с Вистой будет, хотя вроде бы не должно быть проблем.
все будет делаться под win xp. достаточно того, чтобы через проводник все работало. Не подскажите в какую сторону копать?
на компе с моей прогой проводник должен видеть файлы. а на компе без проги — образ.
Здравствуйте, igorbass, Вы писали:
I>все будет делаться под win xp. достаточно того, чтобы через проводник все работало. Не подскажите в какую сторону копать? I>на компе с моей прогой проводник должен видеть файлы. а на компе без проги — образ.
Вообще-то ИМХО то решение, что я предложил, несколько превышает по сложности курсовую работу. Какой курс, какой институт ?
Правда, насчет форматирования флешки — это я, пожалуй, зря. Она и так уже вроде как отформатирована.
В общем, я бы посоветовал начать с CreateFile с PhysicalDriveX. Описание этого есть в MSDN по CteateFile. Для начала попробуй открыть с правами только на чтение и прочитать , скжем, начальный 1 Кб. Получится или нет ? Если получится, то попробуй с правами на запись и записать что-нибудь (внимание! если удастся, то флешка после этого будет нечитаемой фаром или эксплорером, потребуется ее форматировать). Ну а а дальше, если все это пройдет — пиши туда то, что надо, WriteFile по этому хэндлу. Просто считай, что у тебя есть файл с потенциальной длиной а размер флешки. Как там данные организовать — думай сам, как шифровать, если хочешь — вопрос не ко мне, здесь есть люди намного более грамотные в этой области.