1

Тема: password manager (python)

Створив менеджер паролів - https://github.com/Eff1c/password_manager
Зараз потрібна допомога в його покращенні.
Для початку - хочу зробити вікно для вводу паролю, для входу в менеджер. Якщо пароль буде вірним - вікно закриється і відкриється менеджер.
Думаю як це реалізувати. Бачив модуль під назвою getpas, але щось не дуже зрозумів його принцип дії і надійність.
Також хочу додати кнопки редагування пошуку. На рахунок пошуку - можливо зробити не кнопку, а просто зчитувати з поля вводу символи і по них шукати збіги.
І ще одне - ключ для розшифрування зберігається у тому ж тектовому документі, що і паролі і це погано, але що можна зробити в даному випадку - не знаю.
Буду вдячний за будь яку інформацію, або посилання на статті, які мені допоможуть.

2

Re: password manager (python)

Eff1c написав:

І ще одне - ключ для розшифрування зберігається у тому ж тектовому документі, що і паролі і це погано, але що можна зробити в даному випадку - не знаю.
.

не треба зберігати пароль. зберігати треба його хеш.
хешування - одностороннє - тобто з пароля утворюється хеш, але зворотня дія неможлива.

https://docs.python.org/3/library/hashlib.html

отут вроді непогано розписано:
https://www.vitoshacademy.com/hashing-p … in-python/

Подякували: leofun01, Eff1c2

3

Re: password manager (python)

Шифруйте ключ паролем користувача, і буде вам щастя. Чи його гешем.

Подякували: Eff1c1

4

Re: password manager (python)

І ще - там хіба є гарантія, що ключ чи закодовані дані не містять символу #0x20, тобто пробілу? Як ні - split спрацює неправильно.

Подякували: Eff1c1

5

Re: password manager (python)

koala написав:

І ще - там хіба є гарантія, що ключ чи закодовані дані не містять символу #0x20, тобто пробілу? Як ні - split спрацює неправильно.

До цього моменту ще не було помилок
Що тоді потрібно зробити?

6

Re: password manager (python)

Eff1c написав:

Створив менеджер паролів - https://github.com/Eff1c/password_manager
Зараз потрібна допомога в його покращенні.

застосовуйте Shebang
https://en.wikipedia.org/wiki/Shebang_(Unix)
https://www.google.com/url?sa=t&rct … j6Mdzu3CTL

застосовуйте context manager
https://medium.com/better-programming/c … bfaf568092
https://docs.python.org/3/reference/com … -statement

Подякували: Eff1c, leofun012

7

Re: password manager (python)

Eff1c написав:
koala написав:

І ще - там хіба є гарантія, що ключ чи закодовані дані не містять символу #0x20, тобто пробілу? Як ні - split спрацює неправильно.

До цього моменту ще не було помилок
Що тоді потрібно зробити?

Що-що... прочитати документацію і показати мені, що насправді все кодується в base64, а отже, без пробілів.

Подякували: Eff1c1

8 Востаннє редагувалося koala (02.11.2019 09:45:03)

Re: password manager (python)

Спершу продумайте структуру файлу. Вам же треба буде, крім пароля, зберігати купу метаданих до нього - від чого цей пароль, дата створення, час дії, введений він чи зґенерований (і маску ґенерації) і т.д. і т.п. І швидше за все, більшість полів для кожного пароля буде пустою; а для такого, як на мене, найліпше підходить JSON.
Але цей JSON має бути зашифрованим, і в файлі має зберігатися інформація для розшифрування. Не має сенсу шифрувати кожен пароль окремим ключем, якщо всі ключі видно, правда? Достатньо й одного ключа, але його слід зашифрувати паролем користувача.
Ну і якось програма має розуміти, що це саме ваш файл. Якесь магічне число. Просто стрічка "Password manager file v1.0".

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

Ще раз, як, на мою думку, має виглядати читання файлу:
- перевірка сигнатури
- спроба розшифрувати ключ паролем користувача
- якщо ключ розшифрувався, то ключем розшифровується решта файлу і заганяється з JSON-у по об'єктах вашої програми

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

Подякували: Eff1c1

9

Re: password manager (python)

ping написав:

застосовуйте Shebang

#!/usr/bin/python3

Ви про це?

koala написав:

від чого цей пароль, дата створення, час дії, введений він чи зґенерований (і маску ґенерації) і т.д. і т.п.

Можна будь ласка повний список? Пустим полям присвоювати None?

koala написав:

Ну і якось програма має розуміти, що це саме ваш файл. Якесь магічне число. Просто стрічка "Password manager file v1.0".

Не зрозумів

10

Re: password manager (python)

А ви наскільки серйозно плануєте цим займатися? Зараз набратися досвіду і закинути, чи хоча б залишити відкритим для майбутніх покращень?

Подякували: Eff1c1

11

Re: password manager (python)

Просто хочу написати щось корисне, що пригодиться мені і, можливо, іншим людям (ну як мінімум моїм друзям, яким я розкажу про це). Також думав використати в портфоліо.

12

Re: password manager (python)

Тоді краще пишіть з урахуванням можливого розширення.
Ви зараз не знаєте, що саме вам буде потрібно змінити в майбутньому, але про деякі речі можна здогадатися. Наприклад, що кількість пов'язаних із паролем полів буде зростати. Чи що формат файлу зміниться. Тому слід одразу це враховувати - на майбутнє.

Подякували: Eff1c1