Создание генератора сложных паролей на языке программирования Python
Выполнила обучающаяся
Хайруллина Лилия Ильмировна
группы 1ИС10
Руководитель
Чупракова Ирина Владимировна
Что вы видите при включении своего компьютера, ноутбука или смартфона? Если вы семейный человек, или вам важна сохранность личных данных, скорее всего, перед вами открывается экран с полем для ввода пароля от компьютера. Это окошко сегодня стало настолько привычным, что многие люди даже не обращают на него внимания, а ведь это изобретение сильно повлияло на науку. Дело в том, что десятилетия назад ученые были вынуждены работать на одном компьютере, поэтому заниматься сразу несколькими проектами они смогли только после появления учетных записей с паролями.
Вложение | Размер |
---|---|
sozdanie_generatora_slozhnyh_paroley_na_yazyke_programmirovaniya_python.docx | 48.87 КБ |
Создание генератора сложных паролей на языке программирования Python
Выполнила обучающаяся
Хайруллина Лилия Ильмировна
группы 1ИС10
Руководитель
Чупракова Ирина Владимировна
Что вы видите при включении своего компьютера, ноутбука или смартфона? Если вы семейный человек, или вам важна сохранность личных данных, скорее всего, перед вами открывается экран с полем для ввода пароля от компьютера. Это окошко сегодня стало настолько привычным, что многие люди даже не обращают на него внимания, а ведь это изобретение сильно повлияло на науку. Дело в том, что десятилетия назад ученые были вынуждены работать на одном компьютере, поэтому заниматься сразу несколькими проектами они смогли только после появления учетных записей с паролями.
Но история «логинов» и паролей начинается задолго до появления ПК. Еще с древности, когда римские легионеры могли проходить в лагерь только по глиняным табличкам с секретным словом. Одни из первых упоминаний о секретных словах датированы II в. до н.э. В Риме были обнаружены «магические квадраты», относящиеся к началу н.э.
И все-таки, в наши дни, слово пароль более привычно, когда мы говорим о компьютерах и защите данных. Почти каждый человек пользуется паролями, для сокрытия личной информации.
Пароль – условное слово или набор знаков, предназначенный для подтверждения личности или полномочий.
Пароли часто используются для защиты информации от несанкционированного доступа. В большинстве вычислительных систем комбинация «имя пользователя - пароль» используется для удостоверения пользователя
Идея создания защищенных учетных записей пришла в голову американского ученого по имени Фернандо Корбато. Он родился в далеком 1926 году и за свою долгую жизнь сделал множество открытий. В 1990 году он получил одну из самых престижных наград в научной сфере, а именно Премию Тьюринга за большой вклад в информатику.
Свой вклад в информатику он сделал в 1960-е годы, когда придумал компьютерные пароли. В те времена ему было 30 лет и он работал в Массачусетском технологическом институте. Ему и коллегам приходилось делить между собой один огромный компьютер, называемым мэйнфреймом. Пользуясь им, они буквально чувствовали себя как в коммунальной квартире — данные, используемые разными людьми и в разных целях, хранились в одном месте. Это сильно осложняло работу и приводило к путанице.
Решить эту проблему удалось благодаря разработке так называемой системы разделения времени (CTSS). При помощи нее на одном компьютере можно было создать разделы для каждого ученого — входя в них при помощи собственных паролей, пользователи получали доступ только к своим данным.
В 1960-е годы ученые даже не думали, что спустя какие-то два десятка лет человечество изобретет интернет с миллионами разных сайтов. Для входа в свои аккаунты на форумах и социальных сетях тоже начали использоваться пароли, и с увеличением количества сайтов пользователям пришлось запоминать и записывать каждую связку логина и пароля. Использовать один и тот же пароль для всех сайтов не рекомендуется, потому что взломав одну страницу пользователя в социальных сетях, хакеры смогут легко зайти и в другие, введя тот же набор букв и цифр.
В ходе интервью для газеты The Wall Street Journal Фернандо Корбато однажды объявил, что пароли стали настоящим кошмаром для Всемирной паутины. Из-за их большого количества пользователям приходится либо заводить толстые блокноты для их записи, либо использовать специальные программы, которые хранят пароли в зашифрованном виде. Количество паролей у Фернандо в 2014 году перевалило за сотню — они были записаны в трех бумажных листах.
Помимо того, что пароли сложно запоминать, многие пользователи часто ставят легкие для взлома наборы букв и цифр. Даже веб-администраторы, работающие с доступами к различного рода данным, пренебрегают такими простыми и элементарными правилами безопасности, как использование надежных паролей. Зачастую ненадежный пароль становится тем самым «слабым звеном», из-за которого взламываются и компрометируются корпоративные системы. По результатам исследования компании Trustwave, более четверти инцидентов, связанных с безопасностью, произошли в результате использования администраторами систем слабых паролей. Trustwave проанализировала 574 случаев взлома, зафиксированных в 15 странах. Оказалось, что 28% несанкционированных вторжений стали возможны из-за уязвимых паролей.
Очевидно, что при создании таких паролей люди думают, в первую очередь, не о безопасности своих данных, а о простоте воспроизведения парольной комбинации в будущем. Однако с определенного момента пользователи стали осознавать, что добавление цифр в конце пароля делает его более надежными. Правда, эти самые цифры оказались не слишком сложными. Около 420 тыс. из 10 млн паролей (это почти 10%) заканчивались числами от 0 до 99, при этом почти в каждом пятом пароле была добавлена цифра «1».
При создании паролей пользователи часто выбирают на клавиатуре комбинации, которые легко запомнить и можно машинально повторить. Поэтому комбинации клавиш, расположенных рядом, завоевали популярность среди многих пользователей, не думающих о последствиях своего легкого выбора. Логично, что наиболее часто встречающимися паролями стали: qwerty; qwertyuiop; 1qaz2wsx; qazwsx; asdfgh и так далее.
К удивлению исследователей, одним из наиболее популярных слов, используемых в паролях, стало слово love. Отдельно и в комбинациях это слово встретилось 40 тыс. раз из 10 млн выборки паролей. Интересно, что слово love намного чаще фигурирует в паролях более молодых поколений.
Кстати, пользователи женского рода используют слово love чаще, чем пользователи мужского: по данным исследования Технологического института университета Онтарио (UOIT), комбинация ilove [мужское имя] встречалось в четыре раза чаще, чем ilove [женское имя]. Теперь вы понимаете, почему к созданию паролей нужно относиться очень и очень серьезно? Чем «неудобнее» и сложнее для воспроизведения пароль, тем ниже риски взлома вашего аккаунта злоумышленниками.
Представители киберсекьюрити утверждают: длина пароля должна быть не менее 10 символов. По данным исследования Trustwave, комбинация пароля, состоящая из восьми символов, может быть взломана злоумышленником за один день. Тогда как пароль из 10 и более знаков заставит интернет-мошенника изрядно попотеть: на его взлом могут уйти несолько месяцев.
Пароль должен содержать разные символы – строчные и прописные буквы, цифры, знаки. Наименее уязвимыми считаются пароли, сгенерированные по случайному принципу, типа sdl@GK93m**Hlk. Популярные названия, собственные имена, даты рождения, номера телефонов – легкая добыча злоумышленников. Такие пароли быстро вычисляются в рамках брутфорс-атаки.
Никогда нельзя быть уверенным на 100% в том, что текущий пароль не перехвачен злоумышленником (хакер может им воспользоваться не сразу). Частая смена пароля снижает риски, что у кого-то кроме вас в настоящий момент есть доступ к вашей конфиденциальной информации.
Нередко веб-администраторы используют один и тот же пароль для входа в разные системы. На языке безопасности это означает, что злоумышленнику достаточно перехватить один пароль, чтобы совершить «комплексную» компрометацию данных. Для входа в разные системы нужно использовать разные пароли.
Идея запомнить все пароли невероятно привлекательна, однако далеко не все пользователи являются адептами мнемотехники. Для хранения паролей существуют более удобные современные решения в виде программ – безопасных менеджеров паролей.
А вот где точно нельзя хранить пароли – так это в браузерах, «связках ключей», FTP-менеджерах. Автосохраненные пароли таким образом могут быстро стать добычей злоумышленников или троянской программы. «Троянец-воришка», обосновавшийся на компьютере пользователя, способен украсть сохраненные данные совсем незаметно для их владельца.
Навсегда забудьте о такой часто используемой функции на сайте, как «запомнить меня на этом компьютере». Данная функция реализуется с помощью cookie. Если злоумышленнику удастся перехватить ваши cookie (при подключении) или украсть с сайта (через XSS), то он сможет авторизоваться в личном кабинете на сайте уже без пароля.
Если есть возможность, вводите пароль не с обычной, а виртуальной клавиатуры. Виртуальные клавиатуры защищают от кейлоггеров – мошеннических программ, которые регистрируют нажатие клавиш или кликов мыши и передают полученную информацию хакерам.
Владельцы сайтов часто обращаются к помощи сторонних специалистов, предоставляя административный доступ к своему ресурсу сразу всем подрядчикам, что небезопасно. Каждому специалисту необходимо создавать свой персональный доступ, чтобы проследить, какие действия совершил конкретный подрядчик. После окончания работ пароли необходимо сменить или полностью удалить учетную запись пользователя.
Мы часто решаем деловые вопросы, подключаясь к сети в общественных местах. Однако работа в открытых Wi-Fi-сетях – кафе, торговых центрах или аэропортах – всегда сопряжена с риском перехвата ваших конфиденциальных данных программами-анализаторами трафика (снифферами). Что делать в таких случаях? Использовать безопасное VPN-подключение.
В современной цифровой реальности недостаточное внимание к вопросам информационной безопасности чревато печальными последствиями – от небольших неприятностей, с которыми могут столкнуться владельцы сайтов, до полной потери контроля над веб-ресурсом. Самое время задуматься о повышении защищенности бизнеса в онлайн-среде и провести аудит безопасности своего сайта. И начать можно с простого – проверки своего пароля на надежность и неуязвимость.
Все эти правила многие, конечно, знают, но нежелание тратить драгоценное время на сохранение паролей, заставляет забыть о них.
Так каким же образом наши пароли могут попасть в руки хакеров?
Существует два различных типа паролей и, соответственно, два способа их взлома, и они сильно отличаются друг от друга. Первый – это пароли онлайн. Из фильмов вы знаете, что у вас вообще может не быть доступа к сайту, если вы не знаете пароль. Поэтому вы пытаетесь туда проникнуть, подбирая различные имена пользователей и пароли. Главное в этом то, что создатели сайтов стараются защитить себя от хакеров при помощи дополнительных функций, например, ограничения количества попыток ввода данных авторизации.
Второй способ – это взлом паролей оффлайн, когда хакер скачивает хеш со всеми паролями. После этого он ограничен только временем его расшифровки, после чего получит доступ ко всей необходимой информации.
Атака по словарю – это самое простое и быстрое действие для взлома пароля. Проще говоря, речь идет о простом переборе слов из словаря и пробах каждого из них, в целях определения сработает что-нибудь из них или нет. Такой подход представляется нецелесообразным делать вручную, поскольку компьютеры могут делать это очень быстро и за несколько часов могут прокрутить миллионы слов.
Радужная таблица. В настоящее время большинство современных систем хранят хеши паролей. Это означает, что даже если вы сможете попасть в область или файл, в котором хранится пароль, то вы получаете только его хеш. Один из подходов к взлому таких зашифрованных паролей заключается в том, чтобы взять каждый файл со словарем, захешировать каждое слово в словаре, а затем сравнить полученный хеш каждого слова в словаре с захешированным паролем в системе. Это занимает много времени и ресурсов процессора. Более быстрый подход заключается в том, чтобы взять таблицу со всеми словами из уже захешированного словаря и сравнить хеш из файла паролей с вашим списком хешей. Если есть совпадение, то хакер знает пароль.
Брутфорс (brute force) или «Грубая сила» — это самый трудоемкий подход к взлому паролей. Это всегда последний способ подбора пароля . Брутфорс заключается в том, чтобы попытаться использовать в качестве пароля все возможные комбинации всех букв, цифр и специальных символов. Как вы уже догадались, чем вычислительная мощность, тем успешнее можно применить этот подход.
Гибридная атака — это комбинация словарных слов со специальными символами и цифрами. Часто эти гибридные атаки используют комбинацию словарных слов с добавлением или заменой в конце или в начале слов чисел, букв и специальных символов. Например, атака по словарю будет проверять слово «password», но гибридная атака может пытаться проверить «p@$$w0rd123».
«John the Ripper» – это, вероятно, самая известная в мире утилита для взлома паролей. Это исключительно консольная программа и только для Linux. Отсутствие графического интерфейса делает ее более сложной в использовании, но именно поэтому она является очень быстрым взломщиком паролей.
Ophcrack – бесплатный инструмент для взлома паролей на основе радужной таблицы для Windows. Это один из самых популярных инструментов для взлома паролей для Windows («Cain и Abel», вероятно, самая популярная — см. ниже), но также ее можно использовать в системах Linux и Mac.
Cain and Abel – скорее всего, самый известный инструмент взлома паролей на планете. Написан он строго для Windows, может взламывать многочисленные типы хешей
Аircrack-ng является лучшей универсальной утилитой для взлома Wi-Fi. Он способен взламывать как WEP, так и WPA2, а также может делать такие вещи: Создание точки доступа типа Soft AP Создание точки доступа типа «злой двойник»Создание фальшивой точки доступа Проведение DOS-атак против Wi-Fi в точке доступа. Он доступен только для Linux и требует времени на изучение
Как вы поняли, у злоумышленников есть много возможностей получить ваши данные. Опытный хакер вполне способен владеть всеми вышеперечисленными способами получения данных.
Все началось в 1990 году, когда сотрудник голландского института CWI, тогда еще мало кому известный Гвидо ван Россум участвовал в проекте создания языка ABC. Язык был предназначен для замены языка BASIC, для обучения студентов основным концепциям программирования.
Язык стал быстро развиваться, поскольку появилось большое количество заинтересованных и понимающих в развитии языков программирования людей. Сначала это был совсем простой язык, просто небольшой интерпретатор, некоторое количество функций, не было объектно-ориентированного программирования, но все это быстро появилось. Уже в 1991 году появились первые средства объектно-ориентированного программирования.
Через некоторое время Гвидо переехал из Голландии в Америку. Его пригласили работать в корпорации CNRI. Он там работал, используя Python для тех проектов, которыми занималась корпорация, а в свободное рабочее время развивал язык и интерпретатор.
Версия 2.0 – это довольно большой шаг вперед, но в первую очередь в социальном плане. В этой версии самое главное, что процесс развития языка и интерпретатора стал более открытым. Гвидо перевел все на SourceForge. Процесс развития всех альфа версий стал виден гораздо большему количеству народа. Сообщество пользователей выросло и оно стало требовать возможности участия в развитии языка, и Гвидо на это пошел.
Python 3.0 разрабатывался с той же философией, что и предыдущие версии. Однако, поскольку в Python скопились новые и, ставшие избыточными, старые способы решения одних и тех же задач, в Python 3.0 был сделан упор на удалении дублирующихся конструкций и модулей, следуя принципу: «должен существовать один и, желательно, только один очевидный способ сделать это».
PyCharm — это интегрированная среда разработки на языке Python, созданная компанией JetBrains. Среди питонистов эта IDE вторая по популярности после редактора кода Visual Studio Code: как основную её используют 31% разработчиков.
В PyCharm есть все инструменты, чтобы писать, отлаживать и тестировать код. Например, можно быстро исправить программу сразу в нескольких местах, а встроенный форматер приведёт её в соответствие со стандартом PEP 8.
Также IDE позволяет использовать в проектах другие языки программирования, синхронизировать код с системами контроля версий и развёртывать его.
Интерпретатор языка — это программа, которая выполняет код на определенном языке программирования, переводя его в машинный код на компьютере в режиме реального времени. Он читает и исполняет код построчно, обеспечивая выполнение команд и вычисление результатов. Интерпретаторы обычно используются для разработки и тестирования программ, а также для запуска скриптов на языке программирования. Каждый язык программирования имеет свой собственный интерпретатор, который может быть использован для выполнения кода на этом языке.
Базовый набор функций PyCharm можно расширять с помощью плагинов, которые позволяют, например, настраивать внешний вид интерфейса и подключать дополнительные инструменты.
Системные требования PyCharm
PyCharm существует в двух редакциях: Community и Professional. Community бесплатна, а Professional даёт обширный набор инструментов.
Community Edition будет достаточно для обучения программированию и небольших личных проектов, написанных на чистом Python.
Professional Edition подойдёт для крупных проектов, научной и веб-разработки.
Для своего проекта я буду использовать бесплатную версию PyCharm Community Edition 2022.2.3
Основная цель генератора паролей, заключается в том, что мы можем мгновенно придумать новые шаблоны паролей.
С другой стороны, компьютеры - это не одно и то же. В считанные секунды компьютеры могут создавать случайные и надежные пароли в зависимости от наших предпочтений. На рынке представлено несколько генераторов паролей.
Самое приятное в создании нашего собственного генератора паролей - это то, что мы можем сделать его именно таким, каким хотим.
Сначала мы создадим генератор паролей, который запрашивает длину пароля, а затем выдает случайный пароль, включающий цифры, алфавиты и специальные символы.
Разработанная нами программа генерирует случайные и сложные пароли для пользователей, использующих язык программирования Python. Сначала мы создадим функцию 'choices' из модуля 'random' для генерации случайного пароля желаемой длины и символов. Затем сгенерированный пароль отображается на экране для просмотра пользователем.
Программа использует модуль "random" для генерации случайных чисел и символов. Функция 'generate_password()' создана для приема двух аргументов: длины пароля и набора символов, из которых будет сгенерирован пароль. Основная программа запрашивает у пользователя ввод длины пароля и набора символов. После вызова функции 'generate_password()' программа выводит сгенерированный пароль на экран.
Далее программа запрашивает пользователя, хочет ли он сгенерировать пароль автоматически или вручную. Если пользователь решит сгенерировать его вручную, программа спросит, хотят ли они включить в свой пароль цифры, заглавные буквы, строчные буквы или специальные символы. Если пользователь решит сгенерировать его автоматически, программа по умолчанию включит все эти символы в пароль.
Шаги разработки программы генератора паролей:
Листинг программы
from random import choices
digits = '0123456789'
uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
lowercase = 'abcdefghijklmnopqrstuvwxyz'
punctuation = '!#$%&*+-=?@^_'
chars = ''
pwd_length = int(input('Введите желаемую длину пароля: '))
pwd_auto = (input('Сгенерировать пароль автоматически? (yes, no): ') == 'yes')
for text, seq in (('Включить в пароль цифры?', digits ),
('Включить в пароль прописные буквы?', uppercase ),
('Включить в пароль строчные буквы?', lowercase ),
('Включить в пароль специальные символы?', punctuation)):
if pwd_auto or (input(text + ' (yes, no): ') == 'yes'):
chars += seq
password = ''.join(choices(chars, k=pwd_length))
print('\n', password, '\n', sep='')
Процесс программирования, безусловно, захватывает и увлекает.
В исследовательской работе нами была рассмотрена история возникновения паролей, проанализированы возможности языка программирования Python.
В практической части нашей работы был разработан и описан код программы, позволяющий моделировать не только сложные, но и простые пароли.
Данный программный код представляет собой удобный и безопасный способ генерации сложных паролей для пользователей. Он позволяет выбирать длину пароля и набор символов, а также предоставляет возможность выбрать автоматическую или вручную настраиваемую генерацию паролей.
Сгенерированные пароли могут быть очень надежными и защищенными, что делает этот код особенно полезным для использования в качестве инструмента безопасности в различных приложениях и сервисах.
Однако, необходимо помнить, что использование сложных паролей не является единственным способом обеспечения безопасности данных, и следует принимать также другие меры по защите информации.
Исследовательская работа будет интересна и полезна многим людям, желающим создавать и хранить от злоумышленников более сложные пароли, а также рассмотренный материал может быть применен при изучении языка программирования Python.
Загадочная система из шести экзопланет
Сказочные цветы за 15 минут
Три коробки с орехами
Астрономы получили первое изображение черной дыры
Учимся ткать миленький коврик