Всем привет! 🦝 Хочу сегодня с вами поделиться своей маленькой программкой, которой я частенько пользуюсь сам. Она предназначена для шифрования файлов, с возможностью расшифровки конечно 😀
🌊вВодная часть
Идея написать эту программу пришла мне в голову, когда я столкнулся cо случаем "шпионажа" на работе🕴🏻. Однажды к нам устроился некий мужчина и как выяснилось, он любил приходить на работу пораньше и сливать данные с рабочих компьютеров своих коллег. Сыграло на руку ему ещё то, что у нас на предприятии было строгое ограничение на пароли для учетной записи пользователя - они должны быть одинаковыми для всех, сейчас у каждого свой пароль. Когда я узнал, что этот, весьма подозрительный тип, копается в компьютерах коллег - решил проверить журнал Windows своего ПК на предмет "несанкционированного" доступа. А именно, не включал ли кто-то мой компьютер раньше меня. И как оказалось - включали.
Меня этот факт не шутку разозлил тогда, и я придумал весьма элегантный способ защитить свои данные - написать свою программку для шифрования файлов. Так и родился White List.
🔮Принцип работы
Основой для шифрования файлов выступает модуль Cryptography.Fernet. Этот модуль предоставляет метод симметричного шифрования, известный как Fernet.
Этот метод использует алгоритм Advanced Encryption Standard (AES) и позволяет как зашифровывать информация, так и расшифровывать её. Главным плюсом этого метода является невозможность получения доступа к зашифрованной информации без специального ключа. Это мне и нужно было для шифрования файлов. То есть, не просто зашифровать данные по алгоритму, а зашифровать с использованием ключа, который будет только у меня.
Исходный код программы, как и исполняемые файлы для операционных систем Windows и Linux вы сможете найти на моём Github, 🔗ссылка ниже
Пример использования на Windows
Загружаем с моего Github исполняемый exe файл для Windows. Для этого переходим в раздел с релизами.
Далее скачиваем себе whitelist.exe
📌Лично я храню эту программку на своей флешке - очень удобно.
Если просто дважды кликнуть по исполняемому файлу – то ничего не произойдет. Это консольная утилита и работать с ней нужно с помощью команды и аргументов. Давайте рассмотрим аргументы программы и заодно попробуем зашифровать целую папку с файлами (включая вложенные папки).
Для зашифровки файлов вводим следующую команду к консоли:
whitelist.exe –e <путь_к_папке>
или же аналогом этой команды:
whitelist.exe –Encrypt <путь_к_папке>
Обратите внимание, рядом с программой создался файл kluch.key – это и есть тот самый ключ🔑. С помощью него шифруются данные и с помощью него же, мы и будем их расшифровывать. Не потеряйте этот файл, иначе информацию никак не расшифровать, по сути она навсегда останется потерянной.
🎉Отлично, файлы зашифрованы. Давайте попробуем посмотреть, что же в них содержится. Если открыть файл, то ценной информации в нём уже не найти.
Очень удобно ещё то, что файлы внешне в проводнике никак не меняются. Так как перезаписываю я только содержимое файла, а не его имя и формат. А так как тот «шпион» копировал в основном файлы чехом, то он даже и не узнает, что они зашифрованы. Зато будет крайне удивлен, когда попробует их открыть, а там лишь набор символов, либо файл поврежден. Ну, а теперь давайте расшифруем данные.
Для расшифровки файлов, нужно просто изменить
whitelist.exe –d <путь_к_папке>
аналог:
whitelist.exe –Decrypt <путь_к_папке>
И если теперь попробовать открыть файл, то он успешно прочтется.
К слову с помощью программы можно шифровать не только целые папки, но и также отдельные файлы. Для этого в аргументе нужно указать путь к файлу.
📌Ещё, я бы отметил тот факт, что на эту программку, по крайней мере в моем случае, не обращал внимания антивирус.
Пример использования на Linux
Принцип работы с программой на Linux такой же как и на Windows, за исключением нескольких моментов. Нужно скачать другой исполняемый файл.
Я также сохранил этот исполняемый файл на флешку.
Теперь давайте попробуем зашифровать тестовую папку. Для этого я перехожу по путь куда примонтирована флешка
cd /media/enotik/Fleksha/
А дальше всё как и на Windows, единственное, что мы обращаемся не exe, а просто к исполняемому двоичному файлу.
./whitelist -e /home/enotik/test/
Ну и расшифровка аналогична:
./whitelist -d /home/enotik/test/
У программы также есть и другие функции. Например если передать программе следующий аргумент, то она выведет список файлов в директории, включая вложенные.
./whitelist -l /home/enotik/test/
Есть и возможность вывести справочную информацию...
./whitelist -h
Ну а последняя функция тестовая, на этапе разработки я игрался с передаваемыми аргументами и проверял как это работает. Решил оставить, пусть будет.
📌Кстати, о том, как собрать исполняемый файл программы из исходников, я написал в своей новой статье