Информация о файле
Quas Safe Unified
Описание
Программа разработана для шифрования кода, учетных записей, ссылок и т.д.. Она также может быть интегрирована в любой код, поддерживающий выполнение скриптов PowerShell, т.к. написана на нем.
После дешифровки содержимое может быть передано в основной код в качестве параметров или значений (например, переменных) или непосредственно выполнено самой программой Quas Safe..
Для шифрования используются алгоритмы AES-256 и PBKDF2, весь код сохраняется в ключ, который может быть записан в реестр или файл. Зашифрованные ключи не содержат паролей и не поддаются взлому, поэтому их спокойно можно публиковать или пересылать в открытом виде. Для дополнительной защита от взлома через Rainbow Tables программа использует “соль”. Не пренебрегайте этой возможностью.
Программа работает в трех режимах: шифрование, дешифрование, и Менеджер ключей. Она поддерживает множество параметров командной строки, позволяющие автоматизировать режимы шифрования и дешифровки. При запуске без параметров запустится графический Менеджер ключей, в котором можно управлять существующими ключами или создать новые.
ВАЖНО: пароли нигде не хранятся и если вы их забудете, восстановить информацию будет невозможно!
Работа с программой.
Основное окно.
Запускаем скрипт QuasSafe.ps1, откроется окно программы.
Слева поле со списком ключей, под ним - описание ключа (если оно есть). Это поле Description (см. дальше) и в нем можно указать для чего используется ключ. Это не секретная информация.
Справа кнопки:
Theme - переключение тем, светлая/темная.
? - краткое описание и помощь по работе с программой.
Add New Key - создать новый ключ.
Delete Key - удаляет ключ под курсором. Потребуется подтверждение удаления.
Export Key - экспортировать из реестра в файл vault.txt ключ под курсором.
Export All Keys - экспортировать все ключи из реестра в файл vault.txt
Import Key - импортировать в реестр все ключи из файла vault.txt
View / Edit Key - просмотреть или отредактировать ключ под курсором.
Run Decryptor - запустить процедуру дешифровки ключа для проверки его работы. Будет запрошен пароль.
Создание ключа
Кнопка Add New Key откроет окно Create Key с несколькими полями и параметрами.
Name - Имя или идентификатор ключа. Под этим именем ключ сохраняется в реестре и отображается в списке ключей. Это обязательный параметр.
Payload - код, учетные данные, ссылки и любой другой текст, который будет зашифрован и выполнен (если это скрипт и установлена опция выполнения, о которой чуть ниже) или открыт программой по умолчанию. Текст можно проматывать колесом мыши или вертикальным скролл-баром. Это обязательный параметр.
Output filename - название файла, в который будет сохранено содержимое Payload после расшифровки.Это обязательный параметр
Description - описание ключа. Здесь можно указать для чего используется ключ.
Salt - дополнительный параметр шифрования “соль”, предназначен для защиты от взлома с помощью Rainbow Tables. Если не прописан, записывается как Default
Hint - подсказка пароля. Здесь может быть фраза или намек на пароль, которые будут понятны только автору ключа и которые помогут вспомнить пароль, если он забудется.
Password - собственно пароль и его подтверждение
Save to reg - ключ будет сохранен в реестр в раздел HKCU\Software\Quas\Credentials
Save to file - ключ будет сохранен в файл vault.txt
After decrypt (Run file) - если установлена галка, файл будет выполнен или открыт после дешифровки.
Кнопка Save сохраняет созданный ключ.
Пример создания ключа:
После нажатия на кнопку Save Data будет создан ключ TextNote, который после дешифровки автоматически откроет текстовый файл note.txt с надписью “Hello World!”
Еще один пример, как использовать учетные данные
После расшифровки ключа будет создан и выполнен файл set_creds.bat, который пропишет переменные для подключения к Webdav и скачивания файла myfile.txt с помощью curl.
Использовать файл set_creds.bat следует вызовом из подпрограммы, тогда переменные передадутся в основной код. Вот пример такого вызова на cmd:
setlocal
:_Main
rem Вызываем подпрограмму расшифровки, которая вернет нам переменные
call :_Decryption
curl -Lko -u %curllogin%:%curlpass% myfile.txt %curllink%
exit
:_Decryption
rem Запуск QuaSafe для дешифровки ключа CurlWebdav
powershell -NoProfile -ExecutionPolicy Bypass -File "QuasSafe3.9.3.ps1" -Decrypt -keyName "CurlWebdav"
if %errorlevel% equ 0 (
rem Если ошибок дешифровки нет и файл создался, выполняем его, затем удаляем
if exist "set_creds.bat" (
call "set_creds.bat"
del /f /q "set_creds.bat"
)
) else (
rem Если пароль трижды неправильный, выходим из программы
echo Access Denied.
pause
exit
)
exit /b
После запуска этого кода будет вызвана подпрограмма дешифровки, которая попросит ввести пароль от ключа CurlWebdav. Если пароль будет трижды введен неверно, всплывет сообщение Access Denied и программа будет закрыта.
После ввода правильного пароля будет создан и выполнен файл set_creds.bat, который в переменные curllogin, curlpass запишет учетные данные, а в curllink ссылку, и затем эти переменные будут переданы утилите curl, которая по этим данным скачает файл myfile.txt
В данном случае важно, чтобы файл set_creds.bat выполнялся в отдельной подпрограмме (call “set_creds.bat”), иначе переменные не будут переданы в основной код
Работа с командной строкой.
В командной строке поддерживаются следующие параметры:
-Encrypt : Режим шифрования. Создает или обновляет ключ.
-Decrypt : Режим дешифрования. Требуются параметры -keyName (из реестра) или -payload.
-ToReg : Флаг: Сохранить ключ в реестр (HKCU:\Software\Quas\Credentials).
-ToFile : Флаг: сохраняет или добавляет ключи из реестра в файл 'vault.txt'.
-keyName : Уникальное имя/ID ключа в реестре.
-payload : Данные для шифрования. Если содержат точку с запятой, парсятся как 'Salt;Hint;Desc;Cipher;Outfile;RunFlas'.
-outFile : Имя файла в котором будут сохранены расшифрованные данные (например, creds.bat)
-pass : Пароль для использхования в командной строке (иначе программа попросит его ввести)
-saltText : Параметр усложняет взлом По умолчанию это 'Default'.
-hint : Подсказка пароля.
-Run : Флаг: запуск выходного файла после дешифровки. Переопределяет флаг в настройках.
Примеры запуска из командной строки:
.\QuasSafe.ps1 -Encrypt -keyName "MyGoogleCreds" -saltText "MySalt" -hint "Year"
Шифрование данных (из source.txt или ввода вручную) и сохранение в реестр под именем "Koofr".
.\QuasSafe.ps1 -Encrypt -keyName "Test" -saltText "MySalt" -hint "Birth year" -payload "set login=admin & set pass=123"
Шифрование данных с указанием всех параметров в строке запуска скрипта
.\QuasSafe.ps1 -Encrypt -ToReg -ToFile -DelSource -keyName "MyService" -saltText "Salt123"
Шифрует данные из 'source.txt', сохраняет в реестр и файл, затем удаляет исходник. Полная автоматизация.
.\QuasSafe.ps1 -Decrypt -payload "MySalt;MyHint;Base64Data..."
(Сценарий А) Расшифровка строки, содержащей все компоненты.
.\QuasSafe.ps1 -Decrypt -payload "Base64Data..." -saltText "MySalt" -hint "MyHint"
(Сценарий Б) Расшифровка, где каждый компонент передан отдельным параметром.
.\QuasSafe.ps1 -Decrypt -keyName "MyKey"
(Сценарий В) Поиск и расшифровка данных в реестре по имени "MyKey".
Дополнение:
Ключи в файле vault.txt сохраняются в таком формате:
KeyNam = Salt;Hint;Description;Payload;Outfile;Run_flag
В реестре сохраняются точно так же.
Все это очень красиво и выглядит солидно, но как всем этим пользоваться?
Сейчас мы подробно разберем пример кода, который чуть выше.
Итак, задача в следующем: нам нужно скачать какой-то файл с облака, но ссылку, логин и пароль светить нельзя, а вот зашифрованный ключ вполне можно публиковать.
Поэтому все секретные данные мы в него и положим.
Этап первый: Постановка задачи.
Для начала следует решить, какие данные будем туда вносить и как их обрабатывать после расшифровки.
Для скачивания файла нужна такая строка:
curl -Lko -u mylogin:mypassword myfile.txt mylink
Здесь:
mylogin - логин для авторизации в облако
mypassword - пароль для авторизации туда же.
myfile.txt - файл, который будем скачивать
mylink - ссылка для скачивания файла.
Назначим переменные для всех этих параметров, кроме myfile.txt:
set "curllogin=mylogin"
set "curlpass=mypassword"
set "mylink=https://example.com/webdav/Folder/Files/myfile.txt"
Собственно, вот эти три строчки и представляют собой содержимое файла set_creds.bat, который будет выполнен после расшифровки (если вы установите флаг RunFile)
В результате его выполнения трем переменным будут присвоены значения, которы нам и нужны. Затем мы передадим эти значения основному коду, в котором будет выполнена строка с уже назначенными переменными после выполнения set_creds.bat:
curl -Lko -u %curllogin%:%curlpass% myfile.txt %curllink%
и наш файл преспокойно скачается.
Таким образом, основной код у нас будет состоять из трех частей:
- Вызов подпрограммы расшифровки ключа
- Выполнение программы после расшифровки
- Вызов подпрограммы действия (в данном случае - скачивания)
Этап второй: Создание ключа.
Здесь совсем все просто: исполняемый файл set_creds.bat у нас практически сформирован, и его мы помещаем в поле Payload.
Заполняем остальные поля: Name, Output filename, Description (если нужно), Salt, Hint и Password.
Примечание: если вы назначите свой параметр Salt, его нужно будет добавить в строку запуска дешифратора, но об этом далее.
Пароль в этом примере - mypassword, так же, как имя его переменной.
Итак, поля заполнены, отмечаем галку на поле Run File, переключаем на Save to file (так будет проще извлечь ключ) и жмем кнопку Save Data.
Рядом появится файл vault.txt примерно такого вида:
MySecretKey = MySalt;MyHint;Описание ключа;iPaVllcKST2ZngcntNlxZEWgqyR6lit7ET77ILS2qttol9IssNKB5dX16u6O+hUJI5ckN/YyB9XXa4yJdStzrsdyMVR9CETl9dWfewrc4cddxpImKPooktIJfN6WhKIfgqd1207QQcXyNrQIBDg3Jw==;set_creds.bat;1
Все параметры готовы, ключ создан, можно формировать основной код.
Этап третий: Подпрограмма дешифровки.
Здесь мы уже вплотную подходим к использованию приложения QuasSafe в командной строке. Все параметры есть в справке и в этой статье, нам понадобятся только некоторые из них.
Строка запуска дешифровки будет выглядеть так:
powershell -NoProfile -ExecutionPolicy Bypass -File "QuasSafe.3.9.4.ps1" -Decrypt -payload "%payload%" -outfile "set_creds.bat" -hint "MyHint" -saltText "MySalt"
Здесь прописаны все параметры и их значения, которые мы использовали при создании ключа.
Как можно заметить, в строке используется переменная %payload% - это и есть наш ранее созданный ключ.
Чтобы присвоить этой переменной наш ключ, перед запуском дешифровки назначьте его переменной payload, вот так:
set "payload=iPaVllcKST2ZngcntNlxZEWgqyR6lit7ET77ILS2qttol9IssNKB5dX16u6O+hUJI5ckN/YyB9XXa4yJdStzrsdyMVR9CETl9dWfewrc4cddxpImKPooktIJfN6WhKIfgqd1207QQcXyNrQIBDg3Jw=="
Небольшое отступление:
Существуют два режима ввода параметров при дешифровке: параметры из реестра и непосредственно в строке запуска.
В данном случае мы используем строку с набором параметров.
rem Подпрограмма дешифровки, состояит из двух строк - назначение ключа и запуск QuasSafe, который попросит нас ввести пароль.
rem После ввода пароля файл set_creds будет расшифрован.
set "payload=iPaVllcKST2ZngcntNlxZEWgqyR6lit7ET77ILS2qttol9IssNKB5dX16u6O+hUJI5ckN/YyB9XXa4yJdStzrsdyMVR9CETl9dWfewrc4cddxpImKPooktIJfN6WhKIfgqd1207QQcXyNrQIBDg3Jw=="
powershell -NoProfile -ExecutionPolicy Bypass -File "QuasSafe.3.9.4.ps1" -Decrypt -payload "%payload%" -outfile "set_creds.bat" -hint "MyHint" -saltText "MySalt"
Еще одно отступление:
Флаг RunFile у нас записывается отдельно и он служит маркером для QuasSafe - запускать на выполнение после дешифровки или нет.
Поскольку мы в данном случае не используем параметр запуска Run, подпрограмму set_creds.bat можно запускать отдельным вызовом.
Или просто добавить параметр -Run к строке дешифровки. Я специально не добавлял этот параметр, чтобы показать как вызывать и запускать подпрограмму set_creds.bat отдельно.
Собственно, почти все готово, можно сочинять основной код.
Этап четвертый: Собираем все вместе.
Выше описаны три части, из которых будет состоять код, так его и строим:
rem 1. Вызов подпрограммы дешифровки
call :_Decryption
rem 2. Выполнение расшифрованного файла set_creds.bat
call :_ActionSetCredsBat
rem 3. Вызов подпрограммы скачивания
call :_CurlDownload
echo Done.
pause
exit
rem 1a. Подпрограмма дешифровки
:_Decryption
set "payload=iPaVllcKST2ZngcntNlxZEWgqyR6lit7ET77ILS2qttol9IssNKB5dX16u6O+hUJI5ckN/YyB9XXa4yJdStzrsdyMVR9CETl9dWfewrc4cddxpImKPooktIJfN6WhKIfgqd1207QQcXyNrQIBDg3Jw=="
powershell -NoProfile -ExecutionPolicy Bypass -File "QuasSafe.3.9.4.ps1" -Decrypt -payload "%payload%" -outfile "set_creds.bat" -hint "MyHint" -saltText "MySalt"
exit /b
rem 2a. Выполнение расшифрованного файла с последующим его удалением
:_ActionSetCredsBat
if exist set_creds.bat call set_creds.bat&&del /f /q set_creds.bat
exit /b
rem 3a. Скачивание файла
:_CurlDownload
curl -Lko -u %curllogin%:%curlpass% myfile.txt %curllink%
exit /b
Первую и вторую части можно совместить, а также сделать проверку на ошибки (см. пример в начале статьи)
Собственно, это все.
Несколько важных пояснений:
Шифровать можно все что угодно, не обязательно логины и пароли. Но следует иметь в виду, что код будет записан в одну строку, а ее размер ограничен.
Скриптовые файлы (cmd, bat, ps1) будут выполнены в соответствующей оболочке, а остальные открыты программами по умолчанию, например если расширение файла будет txt, то он откроется программой Notepad, и так далее.
Ключ в примере приведен настоящий, со всеми вышеописанными параметрами и значениями, можете попрактиковаться на нем, например импортировать файл vault.txt, который будет приложен к статье.
Напомню, пароль к ключу тоже указан здесь же, это "mypassword" без кавычек.
Что нового в версии 3.9.4
Размещено
Исправлена ошибка в блоке разбора строки для параметра payload, если некоторые параметры отсутствуют (Hint, Description, etc)
