Защита Flash-ки от записи новых файлов

Защита флешки от записи новых файлов осуществляется путем определения свободного пространства на ней, с последующим полным его заполнением, используя утилиту fsutil. Такой метод отлично подходит, например, для защиты загрузочных флешек (имеющих файл autorun.inf), которые невозможно защитить созданием одноименного каталога AUTORUN.INF.

Fsutil является служебной программой командной строки. Для использования программы fsutil необходимо войти в систему с помощью учетной записи администратор или члена группы администраторов.
можно вывести Help:

Код:
fsutil /?

Такой способ, как выяснилось в результате тестирования, имеет 1 минус:

  • Создание больших файлов занимает несколько минут времени. А если понадобилось удалить защитный файл, дописать что-то на флешку, а
    потом снова выставить защиту? Снова теряется время на создание большого файла

Код:
@echo off
 setlocal enabledelayedexpansion
 set /a sizofile=1024 * 1024 * 1024
 for /l %%K in (1,1,256) do (
 for /f "tokens=3" %%J in ('dir %~d0 /-C') do (set freespace=%%J)
 if !freespace! EQU 0 goto ready
 if !freespace! GTR !sizofile! (
 call :getime
 fsutil file createnew "%~d0\[ 1024 Mb ] !randtime!" !sizofile!
 ) else (
 for /l %%K in (1,1,5) do (
 for /f "tokens=3" %%J in ('dir %~d0 /-C') do (set freespace=%%J)
 set /a sizofilemb=!sizofile! / 1024 /1024 / 2
 set /a sizofile=!sizofile! / 2
 if !freespace! GEQ 67108864 (
 if !freespace! GEQ !sizofile! (
 call :getime
 fsutil file createnew "%~d0\[ !sizofilemb! Mb ] !randtime!" !sizofile!
 )
 ) else ( 
 if !freespace! EQU 0 goto ready
 call :getime
 fsutil file createnew "%~d0\[ 1-63 Mb ] !randtime!" !freespace! 
 goto :EOF
 )
 )
 )
 ) 

 :getime
 set randtime=!time:~-10!
 set randtime=!randtime::=!
 set randtime=!randtime:,=!
 exit /b

Логика работы кода следующая:

  • определяется количество свободного пространства на флешке
  • если свободного пространства больше 1Gb — создаем файлы размером 1Gb до тех пор, пока это условие выполняется
  • Когда свободного пространства меньше 1 гигабайта — последовательно пытаемся создать файлы размером 512Mb, 256Mb, 128Mb, 64Mb и
    последний файл размером от 1 до 63Mb

В итоге на флешке создается примерно следующая структура файлов, заполняющая все свободное место (7-значный уникальный код в конце названия каждого файла необходим для избежания ошибки создания файлов с одинаковыми именами):

[ 1-63 Mb ] 7344296
[ 64 Mb ] 7343581
[ 256 Mb ] 6050959
[ 512 Mb ] 6043075
[ 1024 Mb ] 2341570
[ 1024 Mb ] 2353157

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

Строго говоря, такой метод нельзя считать полным аналогом аппаратного переключателя «read-only», имеющегося на некоторых видах флешек. Даже если флешка защищена от записи новых файлов описанным методом, вирус имеет возможность создать файл autorun.inf на флешке — но вот записать что-либо в этот файл уже не сможет.

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

Таким образом, считать такой способ защитой от записи можно только в контексте невозможности создания на флешке непустых новых файлов. Что однако, как показывает практика, является серьезной мерой защиты от autorun-вирусов. Как говорилось выше, этот метод отлично подходит для защиты загрузочных флешек (имеющих файл autorun.inf), которые невозможно защитить созданием одноименного каталога AUTORUN.INF, а также для флешек с личным набором необходимого программного обеспечения, подключаемого к чужим компьютерам.