Вступление
Наверно каждый, имеющий сменный носитель - флешку, обнаруживал на ней вредоносные программы, прописанные в autorun.inf на запуск. Да что уж говорить, если купив абсолютно новый MP3-плеер, малоизвестной фирмы я обнаружил на нём виря, а ссылка на загрузку его была в файле autorun.inf. Учитывая тот момент, что я пользуюсь Portable Soft'ом на флехе и использую ещё удобное меню на основе PStart.exe, т.е. я имею уже настроенный autorun.inf на запуск этого меню мне порядком надоело, что я получаю на своей флехе после вставки флешки в чужой комп виря и отредактенный autorun.inf на его запуск. Вообщем я стал думать как защитить от заразы свою флэшку.
Ищем способы защиты
1. Использовать переключатель Read-Only, т.е. попросту аппаратно, переключателем запретить производить запись на флешку и сделать её только читаемой. Этот способ имеет следующие недостатки: ну во-первых не на всех флешках есть такой переключатель (на моей не оказалось), ну а во вторых это очень не удобно: мне приходится по работе бегать по разным компам и активировать на них ПО, а всю инфу об активации (серийники, коды и т.д) я храню в файле на флешке и постоянно редактирую его, т.е. права на запись мне нужны на флешку. В итоге этот способ мне совсем не подходит.
2. Использовать шифрование. Способ требует наличия спец софта на компе клиента, который на лету шифрует/дешефрует файлы, что мне тоже неудобно. Использовать шифрование на уровне системы XP ? В этом случае я не уверен что поможет от виря, так как он сам может пользоваться системными функциями...
3. Использование другой файловой системы.
И тут я вспомнил про NTFS и тут же полез смотреть какая файловая система у меня на флешке. Конечно оказалась FAT. Тут же мне интуиция подсказала надо пробовать пересесть на NTFS, потому как там больше атрибутов и можно задать права на используемые файлы. Ясное дело что в первую очередь это autorun.inf. Т.е. если вирь не будет иметь прав на запись/редактирование/перезапись/удаление этого файла, то мы решим проблему: не дадим заразить нашу флешку с помощью механизма заражения через autorun.inf (хотя вирю пока никто не мешает сканить весь флеш-драйв на предмет исполняемых файлов и пробовать заражать их дописывая своё тело к файлу-жертве, но об этом позже.)
Немного теории файловых систем
Для хранения файлов всё доступное для них пространство разбивается на кластеры. Таблица размещения файлов содержит ячейки, каждая из которых указывает на определенный кластер на жестком диске.
1.
FAT 12
Применялась в пору DOS 1.0 на древних HDD и дискетах - не рассматриваем.
2.
FAT 16
Максимальный размер раздела - 2 гигабайта (Что подходит для моей флешки - она 2 Гига, она ранее и была установлена). При размере раздела свыше 512 мегабайт неэкономно расходует место на диске (из-за большого размера кластера). Распознается и может использоваться практически всеми операционными системами, используемыми на ПК, имеет корневой каталог фиксированного размера (512 записей).
3.
FAT 32
Работает чуть медленнее, чем FAT 16, но в большинстве случаев разница в скорости незаметна. Позволяет создавать разделы размером до двух терабайт. Диски почти любого размера может разбить на кластеры размером 4 КБ, уменьшая тем самым бесполезную трату места на диске. Кроме того есть ограничение на размер файла - он не может быть больше 4 гб. (Целиком образ DVD не запишешь).
4.
NTFS
Была специально разработана для Windows NT-систем. В NTFS значительно расширены возможности по управлению доступом к отдельным файлам и каталогам введено большое число атрибутов, реализована отказоустойчивость. В NTFS версии 5.0 были добавлены дополнительные атрибуты файлов, наряду с правом доступа введено понятие запрета доступа, позволяющее, например, при наследовании пользователем прав группы на какой-нибудь файл, запретить ему возможность изменять его содержимое. Как раз то, что доктор прописал!
Ставим NTFS на флешку
1. Подготовка
Для начала посмотрим свойства флэшки и замерим размер файлов а так же размер места занимаемого ими на диске.
Вот что у меня получилось:
Ёмкость 2049671168 байт (около 1,9 Гб.)
Свободно: 1259044864 байт (около 1,17 Гб.)
Занято: 790626304 байт (около 754 Мб.)
Размер всех файлов: 694 МБ (728*223*070 байт) - такой размер всех моих файлов.
Занимают на диске: 746 МБ (783*024*128 байт)
Налицо ощутимая потеря ёмкости 52 Мб, скорее всего из-за того что используется большой размер кластера, проверим какой. Кидаем на флешку файл размером менее 512 байт (или находим маленький из уже имеющихся на флешке) смотрим его свойства, и видим что на диске он занимает аж 32Кб. т.е таким образом мы выяснили, что размер кластера равен 32Кб., что при размере флешки 2 Гб. является слишком расточительным и при наличии большого колличества файлов размером менее 32 Кб. потери пространства могут оказаться ощутимыми. Что и имеет место быть в моём случае.
Теперь обязательно скопируйте себе на жёсткий диск всё содержимое флешки.
2. Форматируем.
Если вы уже имеете на борту компа специализированный софт для работы с разделами, ну напрмер Partition Magic, то можете конвертнуть флешку в NTFS на свой страх и риск с помощью его.
Я поступлю немного иначе: Отформатирую флешку в NTFS средствами самой системы.
Стандартный предлагаемый размер кластера на объём 1-2 Гб - 4Кб. Оптимален ли он будет для моей флешки?
Форматируем. Смотрим что получилось:
Ёмкость: 2049945600 байт (около 1,90 Гб)
Свободно: 2010750976 байт (около 1,87 Гб)
Занято: 39194624 (около 37,3Мб.)
Сразу возникает вопрос чем? Самой файловой системой NTFS - это плата за использование.
Теперь копируем файлы обратно на флешку, получаем:
Ёмкость: 2049945600 байт (около 1,90 Гб)
Свободно: 1273454592 байт (около 1,18 Гб.)
Занято: 776491008 байт (около 740 Мб.)
Размер всех файлов: 694 МБ (728*223*070 байт) - не должен меняться
Занимают на диске: 699 МБ (733*388*800 байт)
Налицо выйгрыш свободного места в 14 Мб. NTFS (4Kб) vs FAT16 (32Кб.- такой размер кластера, кстати при форматировании стандартной утилитой, которая идёт в комплекте к флэшке).
Кластер у нас действительно получился 4Кб, что я считаю много для флешки размером 2 Гб.
Переформатируем в NTFS ещё раз с минимальным размером кластера в 512 Байт и посмотрим свойства получившегося диска (раздела).
Ёмкость: 2049949184 байт (около 1,90 Гб)
Свободно: 2010327552 байт (около 1,87 Гб)
Занято: 39621632 (около 37,7Мб.)
Т.е. в итоге мы потеряли ещё около 400Кб, Что не очень много, но дисковое пространство будет расходоваться более экономно в случае большого колличества файлов маленького размера.
Теперь снова копируем всё содержимое обратно на флешку. Смотрим что получилось:
Ёмкость: 2049949184 байт (около 1,90 Гб) - осталась прежняя.
Свободно: 1277632000 байт (около 1,18 Гб.) - места стало больше.
Занято: 772317184 байт (около 736 Мб.) - ещё выйгрыш в 4Мб.
Размер всех файлов: 694 МБ (728*223*070 байт) - не менялся
Занимают на диске: 695 МБ (728*784*384 байт) - на 4Мб. меньше.
Если сравнивать с изначальной FAT16 с кластером в 32Кб. которую нам предлагает производитель мы получили сумарный выйгрыш в почти в 18 Мб, несмотря на то что перешли на более прожорливую NTFS. Т.е. потери ёмкости флешки при переходе с FAT16 на NTFS окупились уменьшением кластера с 32Кб. до 512байт.
Это исследование было проведено специально для скептиков, которые по тем или иным причинам не хотят ставить NTFS на флешку.