Запрещаем запуск флэшки на локальном ПК (Цикл статей «Флэшка на коротком поводке»)


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

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

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

Работая системным администратором в одной ростовской фирме, я, вернувшись из отпуска, буквально столкнулся с целой пандемией компьютерных вирусов. Причем, со слов сотрудников, компьютеры выключались с поразительным постоянством. Я не мог понять как, такое могло произойти, ведь на всех компьютерах стоял Кошмарский (для тех, кто в танке – «Касперский»), а интернет прочно контролировал Kerio.

Однако мой вирус носил короткую черную юбку и белую блузку. Милая молоденькая бухгалтерша принесла на флэшке то, что даже я называю «АЦЦкий вирус!». Любопытно, что Касперский не увидел малварь, позволяя проникать ей на компьютеры фирмы. Конечно, здесь я сам сглупил, не запретив usb-порты. а для этого нужно всего лишь чуть-чуть поковырять реестр. Давайте, я покажу программку, которая запретит usb-порты. Форма будет простой с двумя конпками «Разрешить» и «Запретить»:

Ну а теперь приступим к коду. Usb отключаются в ветке

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UsbStor

Здесь есть параметр Start, значение которого и определяет доступность флэшек. Значение, равное 4 делает устройство недоступным. Остается дело за малым – запрограммировать это.

Давайте теперь подключим модуль Registry, предназначенный для работы с реестром Windows. В нем содержится нужный нам класс TRegistry.

Ниже я приведу свой код, где прокомментировал сложные моменты:

unit Unit1;

interface

uses

Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,

Dialogs,Registry,StdCtrls;

type

TForm1=class(TForm)

Button1:TButton;

Button2:TButton;

procedureFormCreate(Sender:TObject);

procedureFormClose(Sender:TObject;varAction:TCloseAction);

procedureButton1Click(Sender:TObject);

procedureButton2Click(Sender:TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1:TForm1;

implementation

{$R *.dfm}

Var

reg:TRegistry;// объект для работы с реестром

procedureTForm1.FormCreate(Sender:TObject);

begin

reg:=TRegistry.Create;

end;

procedureTForm1.FormClose(Sender:TObject;varAction:TCloseAction);

begin

reg.Free;// уничтожимобъект

end;

procedureTForm1.Button1Click(Sender:TObject);

begin

//пытаемся открыть ветку реестра

try

reg.RootKey:=HKEY_LOCAL_MACHINE;

reg.OpenKey('SYSTEM',true);

reg.OpenKey('CurrentControlSet',true);

reg.OpenKey('Services',true);

reg.OpenKey('UsbStor',true);

// Атеперьзапретимфлэшки

reg.WriteInteger('Start',4);

ShowMessage('Флэшкизапрещены');

finally

reg.CloseKey;//принудительнозакроемреестр

end;

end;

procedureTForm1.Button2Click(Sender:TObject);

begin

//пытаемся открыть ветку реестра

try

reg.RootKey:=HKEY_LOCAL_MACHINE;

reg.OpenKey('SYSTEM',true);

reg.OpenKey('CurrentControlSet',true);

reg.OpenKey('Services',true);

reg.OpenKey('UsbStor',true);

// Разрешим использовать флэшки

reg.WriteInteger('Start',3);

ShowMessage('Флэшки разрешены');

finally

reg.CloseKey;//принудительно закроем реестр

end;

end;

end.


При создании формы я создал экземпляр класса TRegistry, позволяющий нам легко обращаться с реестром Windows. В процедурах кнопок я уже написал код, который мы будем использовать. Чтобы программа выполнилась, как нужно, я использовал try..finally. В остальном, думаю, все понятно.

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

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

Добавить комментарий

Внимание! Не будут добавляться комментарии в виде откровенного спама или прямого анкора на свои сайты. Все спамеры будут передаваться в базу Akismet

Подтвердите, что Вы не бот — выберите человечка с поднятой рукой: