Отчет по лабораторной работе должен содержать: Тему и цель лабораторной работы; Вариант задания на лабораторную работу




Скачать 296 Kb.
Дата 27.08.2016
Размер 296 Kb.


Лабораторные работы по курсу

«Методы и средства защиты компьютер­ной информации»

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

Отчет по лабораторной работе должен содержать:



    1. Тему и цель лабораторной работы;

    2. Вариант задания на лабораторную работу;

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

    4. Листинг разработанной программы с подробными комментариями;

    5. Результаты работы программы;

    6. Выводы.


Лабораторная работа № 1

Реализация дискреционной модели политики безопасности


Цель работы: ознакомиться с проблемами реализации политик безопасности в компьютерных системах на примере дискреционной модели.

Теоретические сведения

Под политикой безопасности понимают набор норм, правил и практических приемов, регулирующих управление, защиту и распределение ценной ин­формации. Политика безопасности задает механизмы управления доступа к объ­екту, определяет как разрешенные, так и запрещенные доступы.

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

Политика безопасности определяется способом управле­ния доступом, который задаёт порядок доступа к объектам систе­мы. Различают два основных вида политики безопасности: изби­рательную и полномочную.

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

Матрица доступа представляет собой матрицу, в которой столбец соответст­вует объекту системы, а строка – субъекту. На пересечении столбца и строки мат­рицы указывается тип разре­шенного доступа субъекта к объекту. Обычно выде­ляют такие ти­пы доступа субъекта к объекту, как «доступ на чтение», «доступ на запись», «доступ на исполнение» и т.п. Матрица доступа является самым простым подходом к моделированию систем управления доступом. Однако она служит основой для сложных мо­делей, более адекватно описывающих реальные ав­томатизированные системы обработки информации (АСОИ).

Избирательная политика безопасности широко применяет­ся в АСОИ коммер­ческого сектора, так как её реализация соответ­ствует требованиям коммерческих организаций по разграничению доступа и подотчетности, а также имеет приемле­мую стоимость.

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

1) все субъекты и объекты системы однозначно идентифицирова­ны;

2) каждому объекту системы присвоена метка конфиденциаль­ности инфор­мации, определяющая ценность содержащейся в нем информации;

3) каждому субъекту системы присвоен определенный уровень допуска, оп­ределяющий максимальное значение метки конфи­денциальности информации объектов, к которым субъект имеет доступ.

Чем важнее объект, тем выше его метка конфиденциаль­ности. Поэтому наи­более защищенными оказываются объекты с наиболее высокими значениями метки конфиденциальности.

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

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

1. В информационную структуру вносится структура ценностей (определя­ется ценность информации) и проводится анализ угроз и рисков для информации и информационного обмена.

2. Определяются правила использования для любого информационного про­цесса, права доступа к элементам информации с учетом данной оценки ценностей.

Реализация политики безопасности должна быть четко продумана. Результа­том ошибочного или бездумного определения правил политики безопасности, как правило, является разрушение ценности информации без нарушения политики.

Дискреционная политика безопасности

Пусть О – множество объектов, U – множество пользователей, S – множество действий пользователей над объектами. Тогда дискреционная политика определяет ото­бражение OU (объектов на пользователей-субъектов). В соответствии с данным отображением, каждый объект OjO объявляется собственностью соответствую­щего пользователя UkU, который может выполнять над ними определенную сово­купность действий SiS, в которую могут входить несколько элементарных действий (чтение, запись, модификация и т.д.). Пользователь, являющийся собст­венником объекта, иногда имеет право передавать часть или все права другим пользователям (обладание администраторскими правами).

Указанные права доступа пользователей-субъектов к объектам компьютерной системы записываются в виде так называемой матрицы доступа. На пересечении i-й строки и j-ого столбца данной матрицы располагается элемент Sij – множество разрешенных действий j-ого пользователя над i-м объектом.

Пример. Пусть имеем множество из трёх пользователей {Администратор, Гость, Пользователь_1} и множество из четырёх объектов {Файл_1, Файл_2, CD-RW, Диско­вод}. Множество возможных действий включает следующие: {Чтение, Запись, Передача прав другому пользователю}. Действие «Полные права» разрешает вы­полнение всех трёх действий, действие «Запрет» запрещает выполне­ние всех перечисленных действий. В данном случае, матрица доступа, описывающая дискреционную политику безопасности, может выглядеть следую­щим образом.
Таблица 1. Пример матрицы доступа


Объект /

Субъект


Файл_1

Файл_2

CD-RW

Дисковод

1. Администра­тор

Полные

права


Полные права

Полные

права


Полные права

2. Гость

Запрет

Чтение

Чтение

Запрет

3. Пользова­тель_1

Чтение,

пе­редача прав



Чтение,

за­пись


Полные

права


Запрет

Например, Пользователь_1 имеет права на чтение и запись в Файл_2. Переда­вать же свои права другому пользователю он не может.

Пользователь, обладающий правами передачи своих прав доступа к объекту другому пользователю, может сделать это. При этом, пользователь, передающий права, может указать непосредственно, какие из своих прав он передает другому.

Например, если Пользователь_1 передает право доступа к Файлу_1 на чтение пользователю Гость, то у пользователя Гость появляется право чтения из Файла_1.



Задание на лабораторную работу

Пусть множество S возможных операций над объектами компьютерной сис­темы задано следующим образом: S = {«Доступ на чтение», «Доступ на запись», «Передача прав»}.

1. Получить данные о количестве пользователей и объектов компьютерной системы из табл. 2, соответственно варианту.

2. Реализовать программный модуль, создающий матрицу доступа пользова­телей к объектам компьютерной системы. Реализация данного модуля подразуме­вает следующее:

2.1. Необходимо выбрать идентификаторы пользователей, которые будут использоваться при их входе в компьютерную систему (по одному идентификатору для каждого пользователя, количество пользователей указано для варианта). Например, множество из трёх идентификаторов пользователей {Ivan, Sergey, Boris}. Один из данных идентификаторов должен соответствовать администратору компьютерной системы (пользователю, обладающему полными правами доступа ко всем объектам).

2.2. Реализовать программное заполнение матрицы доступа, содержащей ко­личество пользователей и объектов, соответственно Вашему варианту.

2.2.1. При заполнении матрицы доступа необходимо учитывать, что один из пользователей должен являться администратором системы (допустим, Ivan). Для него права доступа ко всем объектам должны быть выставлены как полные.

2.2.2. Права остальных пользователей для доступа к объектам компьютерной системы должны заполняться случайным образом с помощью датчика случайных чисел. При заполнении матрицы доступа необходимо учитывать, что пользователь может иметь несколько прав доступа к некоторому объекту компьютерной сис­темы, иметь полные права, либо совсем не иметь прав.

2.2.3. Реализовать программный модуль, демонстрирующий работу в дискре­ционной модели политики безопасности.

3. Данный модуль должен выпол­нять следующие функции:

3.1. При запуске модуля должен запрашиваться идентификатор пользователя (проводится идентификация пользователя), при успешной идентифика­ции пользователя должен осуществляться вход в систему, при неуспешной – вы­водиться соответствующее сообщение.

3.2. При входе в систему после успешной идентификации пользователя на экране должен распечатываться список всех объектов системы с указанием пе­речня всех доступных прав доступа идентифицированного пользователя к данным объектам. Вывод можно осуществить, например, следующим образом:

User: Boris

Идентификация прошла успешно, добро пожаловать в систему

Перечень Ваших прав:

Объект1: Чтение

Объект2: Запрет

Объект3: Чтение, Запись

Объект4: Полные права

Жду ваших указаний >

3.3. После вывода на экран перечня прав доступа пользователя к объектам компьютерной системы, необходимо организовать ожидание указаний пользователя на осу­ществление действий над объектами в компьютерной системе. После получения команды от пользователя, на экран необходимо вывести сообщение об успешности либо не успешности операции. При выполнении операции передачи прав (grant) должна модифицироваться матрица доступа. Программа должна поддерживать операцию выхода из системы (quit), после которой запрашивается идентифи­катор пользователя. Диалог можно организовать, например, так:

Жду ваших указаний > read

Над каким объектом производится операция? 1

Операция прошла успешно

Жду ваших указаний > write

Над каким объектом производится операция? 2

Отказ в выполнении операции. У Вас нет прав для ее осуществления

Жду ваших указаний > grant

Право на какой объект передается? 3

Отказ в выполнении операции. У Вас нет прав для ее осуществления

Жду ваших указаний > grant

Право на какой объект передается? 4

Какое право передается? read

Какому пользователю передается право? Ivan

Операция прошла успешно

Жду ваших указаний > quit

Работа пользователя Boris завершена. До свидания.

User:


4. Выполнить тестирование разработанной программы, продемонстрировав реализованную модель дискреционной политики безопасности.

5. Оформить отчет по лабораторной работе.


Таблица 2. Варианты заданий


Вариант

Количество субъектов

доступа (пользователей)



Количество объектов

доступа


1

3

3

2

4

4

3

5

4

4

6

5

5

7

6

6

8

3

7

9

4

8

10

4

9

3

5

10

4

6

11

5

3

12

6

4

13

7

4

14

8

5

15

9

6

16

10

3

17

3

4

18

4

4

19

5

5

20

6

6

21

7

3

22

8

4

23

9

4

24

10

5

Окончание табл. 2

Вариант

Количество субъектов

доступа (пользователей)



Количество объектов

доступа


25

3

6

26

4

3

27

5

4

28

6

4

29

6

5

30

8

6


Контрольные вопросы
1. Что понимается под политикой безопасности в компьютерной системе?

2. В чем заключается модель дискреционной политики безопасности в ком­пьютерной системе?

3. Что понимается под матрицей доступа в дискреционной политике безопас­ности? Что хранится в данной матрице?

4. Какие действия производятся над матрицей доступа в том случае, когда один субъект передает другому субъекту свои права доступа к объекту компью­терной системы?



Лабораторная работа № 2

Количественная оценка стойкости пароль­ной защиты


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

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

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

Парольная аутентификация пользователя, как правило, передний край обороны СЗИ. В связи с этим модуль аутентификации по паролю наиболее часто подвергается атакам со стороны злоумышленника. Цель последнего в данном случае – подобрать аутентифицирующую информацию (пароль) легаль­ного пользователя.

Методы парольной аутентификации пользователя наиболее про­сты и при несоблюдении определенных требований к выбору пароля являются достаточно уязвимыми.

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

К паролю:

1) минимальная длина пароля должна быть не менее 6 символов;

2) пароль должен состоять из различных групп символов (малые и большие латинские буквы, цифры, специальные символы ‘(’, ‘)’, ‘#’ и т.д.);

3) в качестве пароля не должны использоваться реальные слова, имена, фа­милии и т.д.

К подсистеме парольной аутентификации:

1) администратор СЗИ должен устанавливать максимальный срок действия пароля, после чего, пароль следует сменить;

2) в подсистеме парольной аутентификации необходимо установить огра­ничение числа попыток ввода пароля (как правило, не более трёх);

3) в подсистеме парольной аутентификации требуется установить вре­менную задержку в случае ввода неправильного пароля.

Как правило, для генерирования паролей в СЗИ, удовлетворяющих перечис­ленным требованиям к паролям, используются программы – автоматические гене­раторы паролей пользователей.

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


Количественная оценка стойкости парольной защиты
Пусть A – мощность алфавита паролей (количество символов, которые могут быть использованы при составлении пароля: если пароль состоит только из малых английских букв, то A = 26), L – длина пароля, S = AL – число всевозможных паро­лей длины L, которые можно составить из символов алфавита A, V – скорость пе­ребора паролей злоумышленником, T – максимальный срок действия пароля.

Тогда, вероятность P подбора пароля злоумышленником в течение срока его действия V определяется по следующей формуле:



P = (V T) / S = (V T) / AL.

Эту формулу можно использовать в обратную сторону для решения следую­щей задачи.



Задача. Определить минимальные мощность алфавита паролей A и длину па­ролей L, обеспечивающих вероятность подбора пароля злоумышленником не бо­лее заданной P, при скорости подбора паролей V, максимальном сроке действия пароля T.

Данная задача имеет неоднозначное решение. При исходных данных V, T, P однозначно можно определить лишь нижнюю границу S* числа всевозможных па­ролей. Целочисленное значение нижней границы вычисляется по формуле



S* = [ P / T], (1)

где [] – целая часть числа, взятая с округлением вверх.

После определения нижней границы S* необходимо выбрать такие A и L для формирования = AL, чтобы выполнялось следующее неравенство:

S* ≤ S = AL. (2)

При выборе S, удовлетворяющего неравенству (2), вероятность подбора па­роля злоумышленника (при заданных V и T) будет меньше, чем заданная P.

Следует отметить, что при осуществлении вычислений по формулам (1) и (2), величины должны быть приведены к одним размерностям.

Пример. Исходные данные: P = 10-6, T = 7 дней = 1 неделя, V = 10 (паролей / ми­нуту) = 10 · 60·24·7 = 100800 паролей в неделю. Тогда, S* = [(10800 ∙ 1) / 10-6] = = 108 ∙ 108.

Условию S* ≤ AL удовлетворяют, например, такие комбинации A и L, как A = 26, L = 8 (пароль состоит из восьми малых символов английского алфавита), A = 36, L = 6 (пароль состоит из шести символов, среди которых могут быть малые латинские буквы и произвольные цифры).


Задание на лабораторную работу
1. В табл. 3 найти для указанного варианта значения характеристик P, V, T.

2. Вычислить по формуле (1) нижнюю границу S* для заданных P, V, T.

3. Выбрать некоторый алфавит с мощностью A и получить минимальную длину пароля L, при котором выполняется условие (2).

4. Реализовать программу для генерации паролей пользователей. Программа должна формировать случайную последовательность символов длины L, при этом должен использоваться алфавит из A символов.

5. Оформить отчет по лабораторной работе.

Коды символов:

1. Коды английских символов : «A» = 65, …, «Z» = 90, «a» = 97,…, «z» = 122.

2. Коды цифр : «0» = 48, «9» = 57.

3. «!» = 33, «“» = 34, «#» = 35, «$» = 36, «%» = 37, «&» = 38, «‘» = 39.

4. Коды русских символов : «А» – 128, … «Я» – 159, «а» – 160,…, «п» – 175, «р» – 224,…, «я» – 239.


Таблица 3. Варианты заданий


Вариант

P

V

T

1

10-4

15 паролей/мин

2 недели

2

10-5

3 паролей/мин

10 дней

3

10-6

10 паролей/мин

5 дней

4

10-7

11 паролей/мин

6 дней

5

10-4

100 паролей/день

12 дней

6

10-5

10 паролей/день

1 месяц

7

10-6

20 паролей/мин

3 недели

8

10-7

15 паролей/мин

20 дней

9

10-4

3 паролей/мин

15 дней

10

10-5

10 паролей/мин

1 неделя

11

10-6

11 паролей/мин

2 недели

12

10-7

100 паролей/день

10 дней

13

10-4

10 паролей/день

5 дней

14

10-5

20 паролей/мин

6 дней

15

10-6

15 паролей/мин

12 дней

16

10-7

3 паролей/мин

1 месяц

17

10-4

10 паролей/мин

3 недели

18

10-5

11 паролей/мин

20 дней

19

10-6

100 паролей/день

15 дней

20

10-7

10 паролей/день

1 неделя

21

10-4

20 паролей/мин

2 недели

22

10-5

15 паролей/мин

10 дней

23

10-6

3 паролей/мин

5 дней

Окончание табл. 3

Вариант

P

V

T

24

10-7

10 паролей/мин

6 дней

25

10-4

11 паролей/мин

12 дней

26

10-5

100 паролей/день

1 месяц

27

10-6

10 паролей/день

3 недели

28

10-7

20 паролей/мин

20 дней

29

10-4

15 паролей/мин

15 дней

30

10-5

3 паролей/мин

1 неделя


Контрольные вопросы
1. Чем определяется стойкость подсистемы идентификации и аутентифика­ции?

2. Перечислить минимальные требования к выбору пароля.

3. Перечислить минимальные требования к подсистеме парольной аутен­тификации.

4. Как определить вероятность подбора пароля злоумышленником в тече­ние срока его действия?

5. Выбором каких параметров можно повлиять на уменьшение вероятно­сти подбора пароля злоумышленником при заданной скорости подбора пароля злоумышленником и заданном сроке действия пароля?


Лабораторная работа №3

Ассиметричные алгоритмы шифрования данных


Цель работы: освоить методику работы ассиметричных алгоритмов шифрования, где суще­ствует два ключа – один для шифрования, другой для дешифрования.
Теоретические сведения
Алгоритм RSA разработан в 1977 г. Роном Ривестом, Ади Шамиром и Ле­ном Адлеманом и опубликован в 1978 г. С тех пор алгоритм Rivest-Shamir-Adleman (RSA) широко применяется практически во всех приложениях, исполь­зующих криптографию с открытым ключом.

Алгоритм RSA:



1. Вычисление ключей

Важным моментом в этом криптоалгоритме является создание пары ключей: открытого и закрытого. Для алгоритма RSA этап создания ключей состоит из сле­дующих операций:

1.1. Выбираются два простых различных числа p и q. Вычисляется их произ­ведение n = p · q, называемое модулем. Под простым числом будем понимать такое число, которое делится только на 1 и на само себя. Взаимно простыми числами будем называть такие числа, которые не имеют ни одного общего делителя, кроме единицы.

1.2. Вычисляется функция Эйлера Ф(n) = (p – 1) · (q – 1).

1.3. Выбирается произвольное число e (e n), такое, что 1 e Ф(n) и не имеет общих делителей, кроме 1 (взаимно простое) с числом (p – 1) · (q – 1).

1.4. Вычисляется d методом Евклида таким образом, что (e · d – 1) де­лится на (p – 1) · (q – 1).

1.5. Два числа (е, n) публикуются как открытый ключ.

1.6. Число d хранится в секрете – закрытый ключ есть пара (d, n), кото­рый позволит читать все послания, зашифрованные с помощью пары чисел (е, n).



2. Шифрование

Шифрование с помощью пары чисел производится следующим образом:

2.1. Отправитель разбивает своё сообщение M на блоки mi. Значение mi n, поэтому длина блока mi в битах не больше k = [log2(n)] бит, где квадратные скобки обозначают, взятие целой части от дробного числа.

Например, если n = 21, то максимальная длина блока k = [log2(21)] = [4.39…]= = 4 бита.

2.2. Подобный блок может быть интерпретирован как число из диапазона (0; 2k – 1). Для каждого такого числа mi вычисляется выражение (ci – зашифро­ванное сообщение): ci = ((mi)e) mod n.

Необходимо добавлять нулевые биты слева в двоичное представление блока до размера k = [log2(n)] бит.


3. Дешифрование

Чтобы получить открытый текст, необходимо каждый блок дешифровать отдельно: mi = ((ci)d) mod n.



Пример:

Выбрать два простых числа: р = 7, q = 17.


Вычислить n = p · q = 7 · 17 = 119.
Вычислить Ф(n) = (p – 1) · (q – 1) = 96.

Выбрать е так, чтобы е было взаимнопростым с Ф(n) = 96 и меньше, чем Ф(n): е = 5.

Определить d так, чтобы d · e ≡ 1 mod 96 и d d = 77, так как

77 · 5 = 385 = 4 · 96 + 1.

Результирующие ключи открытый {5, 119} и закрытый ключ {77, 119}.

Например, требуется зашифровать сообщение М = 19: 195 = 66 (mod 119),



С = = 66. Для дешифрования вычисляется 6677 (mod 119) = 19.
Варианты заданий
1. Разработать консольное приложение для шифрования/дешифрования произвольных фай­лов с помощью алгоритма RSA.

2. Разработать визуальное приложение для шифрования/дешифрования изо­бражений.

3. Разработать визуальное приложение для шифрования/дешифрования про­извольных файлов.

4. Разработать клиент-серверное приложение для защищённой передачи фай­лов по сети.

5. Разработать клиент-серверное приложение для защищённого обмена сооб­щениями по сети.

6. Разработать визуальное приложение для шифрования/дешифрования чисел.

7. Разработать консольное приложение для генерации ключей.

8. Реализовать программу для шифрования / дешифрования текстов, работающую по алгоритму RSA. Программа должна уметь работать с текстом произвольной длины.


Контрольные вопросы:
1. Дайте определение алгоритма с открытым ключом.

2. Сколько этапов содержит алгоритм RSA?

3. В чем заключается вычисление ключей алгоритма RSA?

4. Как происходит шифрование в алгоритме RSA?

5. Как происходит дешифрование в алгоритме RSA?

Лабораторная работа №4

Защита от копирования. Привязка к аппа­ратному обеспечению. Использование реестра


Цель работы: ознакомиться с возможностями «привязки» к характеристикам компьютера.
Теоретические сведения
В качестве анализируемых характеристик компьютера могут использоваться:

1. Информация об используемой операционной системе

2. Имя пользователя;

3. Имя компьютера;

4. Наличие звуковой карты;

5. Наличие подключенных принтера, сканера и т.д;

6. Дата создания BIOS;

7. Серийный номер диска;

8. Характеристики процессора.

Для получения подобных характеристик в операционной системе Windows используются API-функции и информация из реестра.



API-функции

API сокращенно Application Programming Interface (интерфейс прикладного программирования). API – набор функций, которые операционная система предос­тавляет программисту. API обеспечивает относительно простой путь для про­граммистов для использования полных функциональных возможностей аппарат­ных средств или операционной системы.

32-разрядные версии Windows обычно используют один и тот же набор функций API, хотя имеются некоторые различия между платформами.

Почти все функции, которые составляют Windows API, находятся внутри DLL (Dynamic Link Library). Эти dll-файлы находятся в системной папке Windows. Существует свыше 1000 функций API, которые условно делятся на че­тыре основные категории:

1) работа с приложениями – запуск и закрытие приложений, обработка ко­манд меню, перемещения и изменения размера окон;

2) графика – создание изображений;

3) системная информация – определение текущего диска, объема памяти, имя текущего пользователя и т.д.

4) работа с реестром – манипуляции с реестром Windows.



Реестр Windows

Реестр – база данных операционной системы, содержащая конфигурационные сведения. По замыслу Microsoft реестр должен был полностью заменить файлы ini, которые были оставлены только для совместимости со старыми программами, ориентированными на более ранние версии операционной системы.

Переход от ini файлов к реестру произошел по той причине, что на эти файлы накладывается ряд серьезных ограничений, и главное из них состоит в том, что предельный размер такого файла составляет 64Кб.

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

Реестр имеет следующую структуру:

1) HKEY_CLASSES_ROOT. В этом разделе содержится информация о заре­гистрированных в Windows типах файлов, что позволяет открывать их по двой­ному щелчку мыши, а также информация для OLE и операций drag-and-drop;

2) HKEY_CURRENT_USER. Здесь содержатся настройки оболочки пользо­вателя (например, Рабочего стола, меню "Пуск", ...), вошедшего в Windows. Они дублируют содержимое подраздела HKEY_USER\name, где name – имя пользова­теля, вошедшего в Windows. Если на компьютере работает один пользователь и используется обычный вход в Windows, то значения раздела берутся из подраздела HKEY_USERS\.DEFAULT;

3) HKEY_LOCAL_MACHINE. Этот раздел содержит информацию, относя­щуюся к компьютеру: драйверы, установленное программное обеспечение и его настройки;

4) HKEY_USERS. Содержит настройки оболочки Windows для всех пользо­вателей. Как было сказано выше, именно из этого раздела информация копируется в раздел HKEY_CURRENT_USER. Все изменения в HKCU (сокращенное название раздела HKEY_CURRENT_USER) автоматически переносятся в HKU;

5) HKEY_CURRENT_CONFIG. В этом разделе содержится информация о конфигурации устройств Plug&Play и сведения о конфигурации компьютера с пе­ременным составом аппаратных средств;

6) HKEY_DYN_DATA. Здесь хранятся динамические данные о состоянии различных устройств, установленных на компьютере пользователя. Именно све­дения этой ветви отображаются в окне "Свойства: Система" на вкладке "Устрой­ства", вызываемого из Панели управления. Данные этого раздела изменяются са­мой операционной системой, так что редактировать что-либо вручную не реко­мендуется.

Примеры процедур и функций, определяющих параметры компьютера

Определение версии операционной системы

BOOL DisplaySystemVersion()

{

OSVERSIONINFOEX osvi;



BOOL bOsVersionInfoEx;

ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));

osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);

if( !(bOsVersionInfoEx = GetVersionEx ((OSVERSIONINFO *) &osvi)) )

{

osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);



if (! GetVersionEx ( (OSVERSIONINFO *) &osvi) )

return FALSE;

}
switch (osvi.dwPlatformId)

{

case VER_PLATFORM_WIN32_NT:



if ( osvi.dwMajorVersion

printf("Microsoft Windows NT ");

if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 )

printf ("Microsoft Windows 2000 ");

if( bOsVersionInfoEx )

{

if ( osvi.wProductType == VER_NT_WORKSTATION )



{

if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1 )

printf ("Microsoft Windows XP ");
if( osvi.wSuiteMask & VER_SUITE_PERSONAL )

printf ( "Home Edition " );

else

printf ( "Professional " );



}

else if ( osvi.wProductType == VER_NT_SERVER )

{

if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2 )



printf ("Microsoft Windows .NET ");
if( osvi.wSuiteMask & VER_SUITE_DATACENTER )

printf ( "DataCenter Server " );

else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )

if( osvi.dwMajorVersion == 4 )

printf ("Advanced Server " );

else


printf ( "Enterprise Server " );

else if ( osvi.wSuiteMask == VER_SUITE_BLADE )

printf ( "Web Server " );

else


printf ( "Server " );

}

}



else

{

HKEY hKey;



char szProductType[BUFSIZE];

DWORD dwBufLen=BUFSIZE;

LONG lRet;

lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE,

"SYSTEM\\CurrentControlSet\\Control\\ProductOptions",

0, KEY_QUERY_VALUE, &hKey );

if( lRet != ERROR_SUCCESS )

return FALSE;

lRet = RegQueryValueEx( hKey, "ProductType", NULL, NULL,

(LPBYTE) szProductType, &dwBufLen);

if( (lRet != ERROR_SUCCESS) || (dwBufLen > BUFSIZE) )

return FALSE;

RegCloseKey( hKey );

if ( lstrcmpi( "WINNT", szProductType) == 0 )

printf( "Professional " );

if ( lstrcmpi( "LANMANNT", szProductType) == 0 )

printf( "Server " );

if ( lstrcmpi( "SERVERNT", szProductType) == 0 )

printf( "Advanced Server " );

}

if ( osvi.dwMajorVersion

{

printf ("version %d.%d %s (Build %d)\n",

osvi.dwMajorVersion,

osvi.dwMinorVersion,

osvi.szCSDVersion,

osvi.dwBuildNumber & 0xFFFF);

}

else


{

printf ("%s (Build %d)\n",

osvi.szCSDVersion,

osvi.dwBuildNumber & 0xFFFF);

}

break;


case VER_PLATFORM_WIN32_WINDOWS:

if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0)

{

printf ("Microsoft Windows 95 ");



if ( osvi.szCSDVersion[1] == 'C' || osvi.szCSDVersion[1] == 'B' )

printf("OSR2 " );

}

if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10)



{

printf ("Microsoft Windows 98 ");

if ( osvi.szCSDVersion[1] == 'A' )

printf("SE " );

}

if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90)



{

printf ("Microsoft Windows Millennium Edition ");

}

break;


}

return TRUE;

}

Определение серийного номера раздела диска

TCHAR szVolName[256];

DWORD dwNum;

DWORD dwMaxComSize;

DWORD dwFlags;

TCHAR szFS[256];

BOOL bRes;

bRes = GetVolumeInformation ( "c:\\", szVolName, sizeof(szVolName), &dwNum, &dwMaxComSize, &dwFlags, szFS, sizeof(szFS));



Определение имени компьютера

const int WSVer = 0x101;

WSADATA wsaData;

char Buf[128];

if (WSAStartup(WSVer, &wsaData) == 0)

{

gethostname(&Buf[0], 128);



MessageBox(0, Buf,0,0);

WSACleanup;

}

Определение имени пользователя

char buffer[UNLEN+1];

DWORD size;

size=sizeof(buffer);

GetUserName(buffer,&size);

Определение версии BIOS

LPSTR GetSystemBiosVersion()

{

HKEY hKey;



LONG Res1, Res2;

DWORD cData=255;

TCHAR SystemBiosVersion[255]={'\0'};

Res1=RegOpenKeyEx(HKEY_LOCAL_MACHINE,"HARDWARE\\DESCRIPTION\\System",NULL, KEY_QUERY_VALUE, &hKey);

if(Res1==ERROR_SUCCESS)

{

Res2=RegQueryValueEx(hKey,"SystemBiosVersion",NULL,NULL,…



(LPBYTE)SystemBiosVersion,&cData);

if(Res2==ERROR_SUCCESS)

{

for (const char* p = SystemBiosVersion; *p; p += strlen(p)+1)



{

printf("%s\n", p);

}
return SystemBiosVersion;

}

else



{

MessageBox(NULL,"RegQueryValueEx: SystemBiosVesion","ERROR",MB_OK);

return NULL;

}

}



else

{

MessageBox(NULL,"RegOpenKeyEx: SystemBiosVersion","ERROR",MB_OK);



return NULL;

}

RegCloseKey(hKey);



}

Определение частоты процессора (способ №1)

double CPUSpeed(void)

{

DWORD dwTimerHi, dwTimerLo;



asm

{

DW 0x310F



mov dwTimerLo, EAX

mov dwTimerHi, EDX

}

Sleep (500);



asm

{

DW 0x310F



sub EAX, dwTimerLo

sub EDX, dwTimerHi

mov dwTimerLo, EAX

mov dwTimerHi, EDX

}

return dwTimerLo/(1000.0*500);



}

Задание на лабораторную работу
Разработать программу, реализующую привязку к компьютеру, используя совокупность харак­теристик согласно варианту задания. Добиться того, чтобы программа не запуска­лась на другом компьютере.
Таблица 4. Варианты заданий


№ вари­анта

Характеристики

1

Серийный номер раздела жесткого диска, MAC-адрес сетевой карты

2

Информация из реестра, тактовая частота процессора

3

Версия операционной системы, MAC-адрес сетевой карты

4

Имя пользователя, серийный номер раздела жесткого диска

5

Название компьютера, информация из реестра

6

Версия БИОС, имя пользователя

7

Серийный номер раздела жесткого диска, имя пользователя

8

Имя пользователя, тактовая частота процессора

9

MAC-адрес сетевой карты, тактовая частота процессора


Контрольные вопросы
1. Что понимается под «привязкой» к компьютеру?

2. Какие характеристики обычно используются для идентификации компь­ютера?

3. Перечислите основные API-функции для определения индивидуаль­ных характеристик компьютера.

4. Что представляет собой реестр Windows?



5. Какую структуру имеет реестр?



База данных защищена авторским правом ©infoeto.ru 2022
обратиться к администрации
Как написать курсовую работу | Как написать хороший реферат
    Главная страница