Найти тему
Computer Pro

Модуль 6. Задачи 1 и 2. Аутентификация и Сложность пароля

Задача 1. Аутентификация

Сконфигурируйте логгер программы из темы 4 так, чтобы он:

  • писал логи в файл stderr.txt;
  • не писал дату, но писал время в формате HH:MM:SS, где HH — часы, MM — минуты, SS — секунды с ведущими нулями. Например, 16:00:09;
  • выводил логи уровня INFO и выше.

В первом задании все довольно просто, я даже не знаю как можно пояснить, всё итак понятно из кода:

-2

level=logging.INFO меняет уровень логгирования с DEBUG на INFO, сообщения уровня DEBUG уже не будут записываться в файл.
filename="stderr.txt" имя файла в который будут писаться логи
format="" в каком формате будут записываться сообщения (время, имя логгера, уровень логгирования, само сообщение).
datefmt="" в каком формате будет писаться дата и время (у меня в примере пишется только часы:минуты:секунды).

На выходе получается вот такой лог:

-3

Задача 2. Сложность пароля

К нам пришли сотрудники отдела безопасности и сказали, что, согласно новым стандартам безопасности, хорошим паролем считается такой пароль, который не содержит в себе слов английского языка (то есть, символы пароля должны быть бессмысленными, что-то типа: zmdxKpfn1oHJXw==, а не что-то типа: "super_password"). Так что нужно доработать программу из предыдущей задачи.

Напишите функцию is_strong_password, которая принимает на вход пароль в виде строки, а возвращает булево значение, которое показывает, является ли пароль хорошим по новым стандартам безопасности.

Список английских слов по идее должен храниться в файле /usr/share/dict/words. Но у меня тут не было никакого файла кроме cracklib-small, в котором тоже содержатся какие-то слова... Я на всякий случай скачал и сохранил слова по пути указанному выше. Если что, буду от туда и плясать.

  • Берите слова длиной больше четырёх символов. Учтите, что функция может запускаться несколько раз, поэтому стоит сделать предобработку списка слов.
  • Подумайте, какая структура данных лучше всего подойдёт для того, чтобы быстро узнать, есть ли конкретное слово в списке слов из файла.
  • Для извлечения всех слов из пароля воспользуйтесь регулярными выражениями.

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

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

затем этот list_of_words открываем в функции проверки пароля
затем этот list_of_words открываем в функции проверки пароля
-5

Я не уверен что это решение точное. Потому как в условиях задачи был совет - воспользоваться "регулярными выражениями" для поиска слов в пароле, но мне так показалось проще. Можно было найти все слова в пароле, слово могло быть не одно. Но для проверки пароля - нам достаточно найти одно слово из списка, чтобы забраковать пароль.

Лог получается такой:

-6

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

С подпиской рекламы не будет

Подключите Дзен Про за 159 ₽ в месяц