Перехват сообщений об изменении конфигурации аппаратных средств 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Перехват сообщений об изменении конфигурации аппаратных средств



При изменении в конфигурации операционная система посылает следующие сообщения:

WM_DEVICECHANGE – изменение аппаратных средств:

DBT_DEVICEARRIVAL – добавление нового устройства;

DBT_DEVICEREMOVECOMPLETE – удаление устройства.

Для обработки данных сообщений требуется создать оконную процедуру WndProc. Сообщения (в виде структурных переменных MSG) попадают в данную функцию в виде параметров: описатель окна, идентификатор сообщения и два параметра. Внутри оконной процедуры расположено ветвление switch, в котором идёт проверка идентификатора сообщения.

Каждый раз, когда в очереди сообщений появляется новое сообщение, ОС выбирает его из очереди и запускает оконную процедуру того приложения, которому адресовано данное сообщение.

Подробнее работа приложения по отслеживанию аппаратных изменений приведена в подразделе 6.2.3.

Кроме того, при компиляции приложения необходимо установить признак «опасного режима работы» – «Allow unsafe code». Для этого в пункте главного меню «Project» выбирается подпункт «Имя проекта Properties», в появившемся диалоговом окне выбирается закладка «Build» и устанавливается режим «Allow unsafe code» (см. рисунок 6).

 

Рисунок 6 – Установка «опасного режима работы»

Приложение для отслеживания аппаратных изменений

В качестве примера рассмотрим приложение, изображенное на рисунке 7. В таблице 6.4 приведено описание используемых в приложении элементов управления.

 

 

Рисунок 7 – Окно приложения для отслеживания изменений аппаратных средств

 

Таблица 6. 4 – Элементы управления приложения для отслеживания изменений файловой системы

Элемент управления Класс Описание
button1 Button Командная кнопка «Обновить список аппаратных средств»
HardWareTreeView TreeView Дерево для вывода списка установленного оборудования
listBox1 ListBox Окно для вывода информации об изменении аппаратных средств
groupBox1 GroupBox Контейнер служит для размещения списка listBox1

    Последовательность программирования приложения:

1. Для работы с журналами событий необходимо подключить пространство имен System.Runtime.InteropServices:

using System.Runtime.InteropServices;

2. Для работы программы необходимо импортировать ряд функций и зарезервированных констант из библиотеки SetupApi32.dll. Для этих целей создается специальный класс SetupAPI.cs:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Runtime.InteropServices;

 

namespace СписокАппаратуры

{

class SetupAPI

{

[DllImport("hid.dll", SetLastError = true)]

public static extern unsafe void HidD_GetHidGuid(

           ref Guid lpHidGuid

);

[DllImport("setupapi.dll", SetLastError = true)]

public static extern unsafe int                                        SetupDiGetClassDevs(

           ref Guid lpGuid,

           int* Enumerator,

           int* hwndParent,

           ClassDevsFlags Flags

          );

[DllImport("setupapi.dll", SetLastError = true)]

public static extern unsafe int                                        SetupDiGetClassDevs(

            int* guid,

           int* Enumerator,

           int* hwndParent,

           ClassDevsFlags Flags

          );

[StructLayout(LayoutKind.Sequential)]

public struct SP_DEVINFO_DATA

{

     public int cbSize;

     public Guid ClassGuid;

     public int DevInst;

     public int Reserved;

}

[DllImport("setupapi.dll", SetLastError = true)]

public static extern unsafe int                                    SetupDiEnumDeviceInfo(

           int DeviceInfoSet,

           int Index,

           ref SP_DEVINFO_DATA DeviceInfoData

          );

  [Flags]

  public enum ClassDevsFlags

  {

       DIGCF_DEFAULT = 0x00000001,

       DIGCF_PRESENT = 0x00000002,

       DIGCF_ALLCLASSES = 0x00000004,

       DIGCF_PROFILE = 0x00000008,

       DIGCF_DEVICEINTERFACE = 0x00000010,

  }

  // Device interface data

  [StructLayout(LayoutKind.Sequential)]

  public unsafe struct SP_DEVICE_INTERFACE_DATA

  {

    public int cbSize;

    public Guid InterfaceClassGuid;

    public int Flags;

    public int Reserved;

  }

  // Device interface detail data

[StructLayout(LayoutKind.Sequential, CharSet =                           CharSet.Ansi)]

public unsafe struct                                           PSP_DEVICE_INTERFACE_DETAIL_DATA

  {

     public int cbSize;

     [MarshalAs(UnmanagedType.ByValTStr, SizeConst                   = 256)]

     public string DevicePath;

  }

 

   [DllImport("setupapi.dll", SetLastError = true)]

public static extern unsafe int   SetupDiEnumDeviceInterfaces(

           int DeviceInfoSet,

           int DeviceInfoData,

           ref Guid lpHidGuid,

           int MemberIndex,

           ref SP_DEVICE_INTERFACE_DATA                                                                         lpDeviceInterfaceData);

 

[DllImport("setupapi.dll", SetLastError = true)]

public static extern unsafe int               SetupDiGetDeviceInterfaceDetail(

                       int DeviceInfoSet,

           ref SP_DEVICE_INTERFACE_DATA                                                     lpDeviceInterfaceData,

           int* aPtr,

           int detailSize,

           ref int requiredSize,

           int* bPtr);

 

[DllImport("setupapi.dll", SetLastError = true)]

public static extern unsafe int               SetupDiGetDeviceInterfaceDetail(

   int DeviceInfoSet,

   ref SP_DEVICE_INTERFACE_DATA                                                               lpDeviceInterfaceData,

   ref PSP_DEVICE_INTERFACE_DETAIL_DATA                                   myPSP_DEVICE_INTERFACE_DETAIL_DATA,

   int detailSize,

   ref int requiredSize,

   int* bPtr);

 

   public enum RegPropertyType

   {

                              // DeviceDesc (R/W)           

                              SPDRP_DEVICEDESC = 0x00000000,

                              // HardwareID (R/W)

        SPDRP_HARDWAREID = 0x00000001,

                              // CompatibleIDs (R/W)

        SPDRP_COMPATIBLEIDS = 0x00000002,

        SPDRP_UNUSED0 = 0x00000003, // unused

                              // Service (R/W)

        SPDRP_SERVICE = 0x00000004,

        SPDRP_UNUSED1 = 0x00000005, // unused

        SPDRP_UNUSED2 = 0x00000006, // unused

                          // Class (R--tied to ClassGUID)

        SPDRP_CLASS = 0x00000007,

                              // ClassGUID (R/W)

        SPDRP_CLASSGUID = 0x00000008,

        SPDRP_DRIVER = 0x00000009, // Driver (R/W)

                              // ConfigFlags (R/W)

        SPDRP_CONFIGFLAGS = 0x0000000A,

        SPDRP_MFG = 0x0000000B, // Mfg (R/W)

                              // FriendlyName (R/W)

        SPDRP_FRIENDLYNAME = 0x0000000C,

                              // LocationInformation (R/W)

           SPDRP_LOCATION_INFORMATION = 0x0000000D,

                              // PhysicalDeviceObjectName (R)

        SPDRP_PHYSICAL_DEVICE_OBJECT_NAME =                                                 0x0000000E,

                              // Capabilities (R)

        SPDRP_CAPABILITIES = 0x0000000F,

                              // UiNumber (R)

        SPDRP_UI_NUMBER = 0x00000010,

                              // UpperFilters (R/W)

        SPDRP_UPPERFILTERS = 0x00000011,

                              // LowerFilters (R/W)        

                              SPDRP_LOWERFILTERS = 0x00000012,

                              // BusTypeGUID (R)

              SPDRP_BUSTYPEGUID = 0x00000013,

                              // LegacyBusType (R)

        SPDRP_LEGACYBUSTYPE = 0x00000014,

                              // BusNumber (R)

        SPDRP_BUSNUMBER = 0x00000015,

                              // Enumerator Name (R)

        SPDRP_ENUMERATOR_NAME = 0x00000016,

                              // Security (R/W, binary form)

        SPDRP_SECURITY = 0x00000017,

                              // Security (W, SDS form)

        SPDRP_SECURITY_SDS = 0x00000018,

                              // Device Type (R/W)

        SPDRP_DEVTYPE = 0x00000019,

                              // Device is exclusive-access (R/W)

        SPDRP_EXCLUSIVE = 0x0000001A,

                              // Device Characteristics (R/W)

        SPDRP_CHARACTERISTICS = 0x0000001B,

                              // Device Address (R)

        SPDRP_ADDRESS = 0x0000001C,

                              // UiNumberDescFormat (R/W)

        SPDRP_UI_NUMBER_DESC_FORMAT = 0x0000001E,

                              // Upper bound on ordinals

        SPDRP_MAXIMUM_PROPERTY = 0x0000001F 

}

[DllImport("setupapi.dll", SetLastError = true)]

public static extern unsafe int   SetupDiGetDeviceRegistryProperty(

           int DeviceInfoSet,

           ref SP_DEVINFO_DATA DeviceInfoData,

           RegPropertyType Property,

           int* PropertyRegDataType,

           int* PropertyBuffer,

           int PropertyBufferSize,

           ref int RequiredSize

      );

 

// Device interface detail data

[StructLayout(LayoutKind.Sequential, CharSet =      CharSet.Ansi)]

public unsafe struct DATA_BUFFER

{

  [MarshalAs(UnmanagedType.ByValTStr, SizeConst =                  1024)]

  public string Buffer;

}

 

[DllImport("setupapi.dll", SetLastError = true)]

public static extern unsafe int               SetupDiGetDeviceRegistryProperty(

           int DeviceInfoSet,

           ref SP_DEVINFO_DATA DeviceInfoData,

           RegPropertyType Property,

           int* PropertyRegDataType,

           ref DATA_BUFFER PropertyBuffer,

           int PropertyBufferSize,

          ref int RequiredSize

      );

}

}

3. В основной программе объявляются глобальные переменные и константы:

const int WM_DEVICECHANGE = 0x0219;

   const int DBT_DEVICEARRIVAL = 0x8000;

   const int DBT_DEVICEREMOVECOMPLETE = 0x8004;

 

   [StructLayout(LayoutKind.Sequential)]

   public struct DEV_BROADCAST_HDR

   {

       public int dbch_size;

       public int dbch_devicetype;

       public int dbch_reserved;

   }

4. Оконная процедура для обработки событий имеет вид:

protected override void WndProc(ref Message m)

{

if (m.Msg == WM_DEVICECHANGE)

{

   int EventCode = m.WParam.ToInt32();

   Log(string.Format("WM_DEVICECHANGE. Код={0}",                                   EventCode));

   switch (EventCode)

   {

       case DBT_DEVICEARRIVAL:

       {

           Log("Добавление устройства");

        break;

     }

     case DBT_DEVICEREMOVECOMPLETE:

     {

        Log("Удаление устройства");

        break;

     }

}

}

base.WndProc(ref m);

}

5. Функция Log для вывода на экран сообщений об аппаратных изменениях имеет вид:

private void Log(string s)

 {

listBox1.Items.Add(s);

listBox1.SelectedIndex = listBox1.Items.Count - 1;

 }

6. Функция GetRegistryProperty для получения информации о найденном оборудовании имеет вид:

private unsafe static string GetRegistryProperty(int PnPHandle, ref SetupAPI.SP_DEVINFO_DATA DeviceInfoData, SetupAPI.RegPropertyType Property)

{

int RequiredSize = 0;

SetupAPI.DATA_BUFFER Buffer = new                            SetupAPI.DATA_BUFFER();

int result = SetupAPI.SetupDiGetDeviceRegistryProperty(

           PnPHandle,

           ref DeviceInfoData,

           Property,

           null,

           ref Buffer,

           1024,

           ref RequiredSize

          );

return Buffer.Buffer;

}

7. Для события Click кнопки button1 (Обновить список аппаратных средств) пишем следующий программный код:

private unsafe void button1_Click(object sender, EventArgs e)

{

Guid guid = new Guid("{36FC9E60-C465-11CF-8056-444553540000}");

 

int PnPHandle = SetupAPI.SetupDiGetClassDevs(

                   ref guid,

                   null,

                   null,

                   SetupAPI.ClassDevsFlags.DIGCF_ALLCLASSES

      );

 

       int   result          = -1;

       int DeviceIndex = 0;

int u = 0;

HardWareTreeView.Nodes.Clear();

HardWareTreeView.BeginUpdate();

HardWareTreeView.Nodes.Add("Список оборудования");

while (result!= 0)

       {

                   SetupAPI.SP_DEVINFO_DATA DeviceInfoData = new               SetupAPI.SP_DEVINFO_DATA();

                   DeviceInfoData.cbSize =             Marshal.SizeOf(DeviceInfoData);

                   result =       SetupAPI.SetupDiEnumDeviceInfo(PnPHandle, DeviceIndex, ref DeviceInfoData);

 

       if (result == 1)

       {

                                                 HardWareTreeView.Nodes[u].Nodes.Add(       GetRegistryProp       erty(PnPHandle, ref DeviceInfoData,   SetupAPI.RegPropertyType.SPDRP_DEVICEDESC));

              HardWareTreeView.Nodes[u].Nodes[DeviceIndex].Nodes.     Add(GetRegistryProperty(PnPHandle, ref      DeviceInfoData,   SetupAPI.RegPropertyType.SPDRP_CLASS));

               HardWareTreeView.Nodes[u].Nodes[DeviceIndex].Nodes.       Add(GetRegistryProperty(PnPHandle, ref DeviceInfoData,        SetupAPI.RegPropertyType.SPDRP_CLASSGUID));

               HardWareTreeView.Nodes[u].Nodes[DeviceIndex].Nodes.       Add(GetRegistryProperty(PnPHandle, ref DeviceInfoData,        SetupAPI.RegPropertyType.SPDRP_DRIVER));

               HardWareTreeView.Nodes[u].Nodes[DeviceIndex].Nodes.       Add(GetRegistryProperty(PnPHandle, ref DeviceInfoData,        SetupAPI.RegPropertyType.SPDRP_MFG));

       }

DeviceIndex++;

}

HardWareTreeView.EndUpdate();

}

 

6.3 Задания для самостоятельной работы

Вариант 1

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

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

 


Вариант 2

Отслеживать события создания папок в любом выбранном каталоге или списке каталогов и заносить информацию об изменениях в базу данных. Выполнять обработку базы данных (очистку, фильтрацию по любому признаку и т.д.).

Выводить информацию об аппаратных средствах компьютера с помощью функции SetupDiGetClassDevs с флагом DIGCF_PRESENT. Отслеживать события, связанные с удалением устройств. Результат работы заносить в таблицу БД.

Вариант 3

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

Выводить информацию об аппаратных средствах компьютера с помощью функции SetupDiGetClassDevs с флагом DIGCF_ALLCLASSES. Отслеживать события, связанные с добавлением новых устройств. Результат работы заносить в INI-файл.

Вариант 4

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

Выводить информацию об аппаратных средствах компьютера с помощью функции SetupDiGetClassDevs с флагом DIGCF_DEFAULT. Отслеживать события, связанные с добавлением новых устройств. Результат работы заносить в INI-файл.

Вариант 5

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

Выводить информацию об аппаратных средствах компьютера с помощью функции SetupDiGetClassDevs с флагом DIGCF_PROFILE. Отслеживать события, связанные с добавлением и удалением устройств. Результат работы заносить в специально созданный журнал событий.

Вариант 6

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

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

Вариант 7

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

Выводить информацию об аппаратных средствах компьютера с помощью функции SetupDiGetClassDevs с флагом DIGCF_PRESENT. Отслеживать события, связанные с удалением устройств. Результат работы заносить в таблицу БД.

Вариант 8

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

Выводить информацию об аппаратных средствах компьютера с помощью функции SetupDiGetClassDevs с флагом DIGCF_ALLCLASSES. Отслеживать события, связанные с добавлением новых устройств. Результат работы заносить в INI-файл.

Вариант 9

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

Выводить информацию об аппаратных средствах компьютера с помощью функции SetupDiGetClassDevs с флагом DIGCF_DEFAULT. Отслеживать события, связанные с добавлением новых устройств. Результат работы заносить в INI-файл.

Вариант 10

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

Выводить информацию об аппаратных средствах компьютера с помощью функции SetupDiGetClassDevs с флагом DIGCF_PROFILE. Отслеживать события, связанные с добавлением и удалением устройств. Результат работы заносить в специально созданный журнал событий

Вариант 11

Отслеживать любые изменения файлов в любом выбранном каталоге и получить информацию, с файлами каких типов чаще всего работает пользователь. Заносить полученные статистические данные в базу данных.

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

Вариант 12

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

Выводить информацию об аппаратных средствах компьютера с помощью функции SetupDiGetClassDevs с флагом DIGCF_PRESENT. Отслеживать события, связанные с удалением устройств. Результат работы заносить в таблицу БД.

Вариант 13

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

Выводить информацию об аппаратных средствах компьютера с помощью функции SetupDiGetClassDevs с флагом DIGCF_ALLCLASSES. Отслеживать события, связанные с добавлением новых устройств. Результат работы заносить в INI-файл.

Вариант 14

Составить список файлов, содержимое которых не должно изменяться. Отслеживать любые изменения файловой системы. При попытке изменения файлов из выбранного списка выводить на экран предупреждающее сообщение. Заносить в журнал аудита информации о попытках изменения защищаемых файлов.

Выводить информацию об аппаратных средствах компьютера с помощью функции SetupDiGetClassDevs с флагом DIGCF_DEFAULT. Отслеживать события, связанные с добавлением новых устройств. Результат работы заносить в INI-файл.

Вариант 15

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

Выводить информацию об аппаратных средствах компьютера с помощью функции SetupDiGetClassDevs с флагом DIGCF_PROFILE. Отслеживать события, связанные с добавлением и удалением устройств. Результат работы заносить в специально созданный журнал событий.

Вариант 16

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

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

Вариант 17

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

Выводить информацию об аппаратных средствах компьютера с помощью функции SetupDiGetClassDevs с флагом DIGCF_PRESENT. Отслеживать события, связанные с удалением устройств. Результат работы заносить в таблицу БД

Вариант 18

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

Выводить информацию об аппаратных средствах компьютера с помощью функции SetupDiGetClassDevs с флагом DIGCF_ALLCLASSES. Отслеживать события, связанные с добавлением новых устройств. Результат работы заносить в INI-файл.

Вариант 19

Отслеживать события переименования, создания или изменения исполняемых файлов. При появлении указанных событий выводить на экран предупреждающее сообщение и заносить информацию о данных событиях в БД. Предусмотреть возможность фильтрации записей в БД по дате и времени изменения, а также по типу исполняемого файла (*.exe, *.bat, *.cmd и т.п.).

Выводить информацию об аппаратных средствах компьютера с помощью функции SetupDiGetClassDevs с флагом DIGCF_DEFAULT. Отслеживать события, связанные с добавлением новых устройств. Результат работы заносить в INI-файл.

Вариант 20

Отслеживать любые изменения графических и аудио-файлов. При появлении указанных событий выводить на экран предупреждающее сообщение и заносить информацию о данных событиях в БД. Предусмотреть возможность фильтрации записей в БД по дате и времени изменения, а также по типу файла (*.bmp, *.jpg, *.mp3 и т.п.).

Выводить информацию об аппаратных средствах компьютера с помощью функции SetupDiGetClassDevs с флагом DIGCF_PROFILE. Отслеживать события, связанные с добавлением и удалением устройств. Результат работы заносить в специально созданный журнал событий.

6.4 Контрольные вопросы

1. Опишите основные события класса FileSystemWatcher.

2. Опишите основные свойства класса FileSystemWatche.r

3. Как выполняется подключение нового обработчика событий?

4. Как настроить приложение на отслеживание событий в текущем и во всех вложенных каталогах?

5. Опишите основные функции библиотеки SetupAPI.dll.

6. Какие сообщения посылает операционная система при изменении конфигурации оборудования?

7. Для каких целей используется функция WndProc?

 


ЛИТЕРАТУРА

 

Рекомендуемая основная литература:

1. Грибунин, В.Г. Цифровая стеганография / В.Г. Грибунин. - М.: Солон-Пресс, 2016. - 589 c.

2. Емельянова, Н.З. Защита информации в персональном компьютере: учебное пособие / Н.З. Емельянова, Т.Л. Партыка, И.И. Попов. - М.: Форум, 2013. - 368 c.

3. Жданов, О.Н. Методика выбора ключевой информации для алгоритма блочного шифрования / О.Н. Жданов. - М.: ИНФРА-М, 2015. - 869 c.

4. Шаньгин, В.Ф. Защита информации в компьютерных системах и сетях / В.Ф. Шаньгин. - М.: "ДМК пресс. Электронные книги", 2014. - 592 c.

5. Шнайер, Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си / Б. Шнайер. - М.: Триумф, 2012. - 518 c.

 

Рекомендуемая дополнительная литература:

6. Болотов, А.А. Элементарное введение в эллиптическую криптографию. Протоколы криптографии на эллиптических кривых / А.А. Болотов, С.Б. Гашков, А.Б. Фролов. - М.: КомКнига, 2012. - 306 c.

7. Жук, А.П. Защита информации: учебное пособие / А.П. Жук, Е.П. Жук, О.М. Лепешкин, А.И. Тимошкин. - М.: ИЦ РИОР, НИЦ ИНФРА-М, 2013. - 392 c.

8. Соколов, А.В. Защита информации в распределенных корпоративных сетях и системах / А.В. Соколов, В.Ф. Шаньгин. - М.: ДМК Пресс, 2016. - 656 c.

9. Спесивцев, А.В. Защита информации в персональных ЭВМ / А.В. Спесивцев, В.А. Вегнер, А.Ю. Крутяков. - М.: Радио и связь, 2016. - 192 c.

10. Степанов, Е.А. Информационная безопасность и защита информации. учебное пособие / Е.А. Степанов, И.К. Корнеев. - М.: ИНФРА-М, 2014. - 304 c.

11. Хорев, П.Б. Программно-аппаратная защита информации: учебное пособие / П.Б. Хорев. - М.: Форум, 2013. - 352 c.


СОДЕРЖАНИЕ

 

1. ЛАБОРАТОРНАЯ РАБОТА № 1. АНТИВИРУСНАЯ ЗАЩИТА. ЗАЩИТА ОТ КОМПЬЮТЕРНЫХ ВИРУСОВ.. 4

1.1 Теоретическое введение. 4

1.2 Задания для самостоятельной работы.. 7

1.3 Контрольные вопросы.. 10

2. ЛАБОРАТОРНАЯ РАБОТА № 2. ЗАЩИТА ДОКУМЕНТОВ В ОФИСНЫХ ПРОГРАММАХ И АРХИВАТОРАХ.. 11

2.1 Теоретическое введение. 11

2.2 Задания для самостоятельной работы.. 18

2.3 Контрольные вопросы.. 22

3. ЛАБОРАТОРНАЯ РАБОТА № 3. АЛГОРИТМЫ ШИФРОВАНИЯ.. 23

3.1 Теоретическое введение. 23

3.2 Задания для самостоятельной работы.. 25

3.3 Контрольные вопросы.. 27

4. ЛАБОРАТОРНАЯ РАБОТА № 4. БЛОЧНОЕ СИММЕТРИЧНОЕ ШИФРОВАНИЕ.. 28

4.1 Теоретическое введение. 28

4.2 Задания для самостоятельной работы.. 33

4.3 Контрольные вопросы.. 34

5. ЛАБОРАТОРНАЯ РАБОТА № 5. ВЗАИМОДЕЙСТВИЕ С ЖУРНАЛАМИ СОБЫТИЙ ОС WINDOWS 35

5.1 Теоретическое введение. 35

5.2 Примеры программирования. 38

5.3 Задания для самостоятельной работы.. 45

5.4 Контрольные вопросы.. 47

6. ЛАБОРАТОРНАЯ РАБОТА № 6. ОТСЛЕЖИВАНИЕ ИЗМЕНЕНИЙ ФАЙЛОВОЙ СИСТЕМЫ И АППАРАТНЫХ ИЗМЕНЕНИЙ.. 48

6.1 Отслеживание изменений файловой системы.. 48

6.1.1 Описание класса FileSystemWatcher 48

6.1.2 Приложение для отслеживания изменений файловой системы.. 49

6.2 Отслеживание изменений аппаратных средств компьютера. 55

6.2.1 Описание библиотеки SetupAPI.dll 55

6.2.2 Перехват сообщений об изменении конфигурации аппаратных средств. 58

6.2.3 Приложение для отслеживания аппаратных изменений. 59

6.3 Задания для самостоятельной работы.. 66

6.4 Контрольные вопросы.. 71

ЛИТЕРАТУРА.. 72

 



 

 

Сборник лабораторных работ

по дисциплине «Защита информации»

 

Федулова Анастасия Сергеевна

Борисов Вадим Владимирович

Федулов Ярослав Александрович

 

 

Технический редактор М.А. Андреев

Корректор И.А. Казилина

_________________________________________________________________________________________________

 

Темплан издания филиала ФГБОУ ВО «НИУ «МЭИ» в г. Смоленске, 2021 г., метод.

Подписано в печать 31.03.2021 г.

Печ. л. 4,6.

__________________________________________________________________________________________________________

 

Издательский сектор филиала ФГБОУ ВО «НИУ «МЭИ» в г. Смоленске

214013 г. Смоленск, Энергетический проезд, 1

     

 

 



Поделиться:


Последнее изменение этой страницы: 2021-12-07; просмотров: 85; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.227.69 (0.223 с.)