L
LightMan
Original poster
Привет, в этой статье я ознакомлю вас с полезными модулями для питона.
DPAPI (Data Protection Application Programming Interface)
Хранение данных в открытом виде было уже, как минимум, не солидно. Поэтому с выходом Windows 2000 свет увидел зарождающуюся и сырую версию DPAPI. Её основная цель — защита хранимых паролей и конфиденциальной информации на компьютере. Причем таким способом, чтобы владелец этих данных (пользователь) даже не догадывался о существовании защиты, а взломщику эти данные были недоступны. Идеология системы с той поры не изменилась. Менялись алгоритмы, закрывались дыры, но суть была всё та же.
В итоге появилась полноценная система безопасности, в которой секретные данные были доступны исключительно пользователю-владельцу и никому другому.
DPAPI получил очень широкое распространение и применяется во многих приложениях и подсистемах Windows: в системе шифрования файлов, для хранения беспроводных паролей сети, в диспетчере учетных записей, Internet Explorer, Google Chrome, Microsoft Outlook, Skype, Windows Vault, для защиты RSA ключей и т.д.
![a3669a46766b11ffccdbc6038864e99d.png](/proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fstorage2%2Fa36%2F69a%2F467%2Fa3669a46766b11ffccdbc6038864e99d.png&hash=644d142451ab95eba9053534af8d7f76)
Использование DPAPI в питоне выглядит вот так:
А в C# так:
Больше инфы про DPAPI тут:
Это мой первый модуль который позволяет хранить файлы в контейнерахCryptoContainer
(Может быть вам полезен при написании софта, где нужно хранить данные для авторизации)
- Пароль от раздела нигде не храниться.
- Все файлы шифруються алгоритмом AES-CBC.
- Для доступа к разделу нужно знать его пароль (16 символов).
- В контейнерах может быть много разделов с данными (В зависимости от введенного вами пароля).
Представьте ситуацию: вас заставляют ввести пароль от контейнера
Python:
# Импортируем пакет (pip install CryptoContainer)
from CryptoContainer import CryptoContainer
# Наш ключ шифрования (16 символов)
key = b"nhQ0JPN1X0aaNIal"
# Создаем контейнер
with CryptoContainer("secure_storage.dat") as container:
# Создаем в контейнере пустой раздел если его не существует.
if not container.contains_partition(key):
partition = container.create_partition(key)
partition.close() # Закрываем раздел (сохраняем изменения)
# Открываем раздел
with container.open_partition(key) as partition:
# Запишем туда картинку
partition.handle.write('image.png')
# Извлечь всё файлы в каталог 'out'
partition.handle.extractall('out')
# Вывести список всех файлов в разделе
print(partition.handle.filelist)
# Експортировать все данные из раздела в zip файл
partition.export_zip("export.zip")
# Удалить раздел (И все файлы в нем тоже)
container.erase_partition(partition)
Исходники модуля:
github.com/L1ghtM4n/CryptoContainer
Вложения
Последнее редактирование модератором: