Анатолій Демидович як отримати пароль з pscredential

І зберегти його в файл для подальшого використання. Навіщо це потрібно? Хоча б для того, щоб не вводити пароль кожного разу руками. Я б вважав за краще файл формату CSV. І бажано зашифрувати пароль за допомогою надійного криптографічного алгоритму. Для початку збережемо своє ім'я користувача і пароль у відповідні поля екземпляра об'єкта PSCredential.

Розглянемо кілька способів введення даних:

- в діалогове вікно:

Анатолій Демидович як отримати пароль з pscredential

Анатолій Демидович як отримати пароль з pscredential

Анатолій Демидович як отримати пароль з pscredential

Анатолій Демидович як отримати пароль з pscredential

Анатолій Демидович як отримати пароль з pscredential


Звернемо увагу на висновок в консолі властивостей об'єкта: ім'я користувача - myname, пароль - System.Security.SecureString.

Схоже наш пароль надійно захищений.

Відправимо дані в CSV-файл на зберігання.

Виконаємо код пару раз.

Анатолій Демидович як отримати пароль з pscredential


Прочитаємо вміст CSV-файлу.

Анатолій Демидович як отримати пароль з pscredential


Схоже все в ялинку - пароль зашифрований.

Перетворимо дані, отримані з CSV-файлу, в екземпляри об'єкта PSCredential, для чого створимо об'єкти за допомогою конструктора, і спробуємо перетворити властивість Password кожного об'єкта в рядок.

Анатолій Демидович як отримати пароль з pscredential


Дивно, а метод ToString () є.

Анатолій Демидович як отримати пароль з pscredential


А тепер увага, стежте за руками.

Анатолій Демидович як отримати пароль з pscredential

Висновок - пароль в такому вигляді зберігати небезпечно.

"Що ж робити?", - запитаєте ви мене :).

Звернемо увагу на командлет перетворення захищеної рядки [System.Security.SecureString] в шифровану рядок [System.String] - ConvertFrom-SecureString.
Саме його ми використовували в процесі підготовки пароля до експорту в CSV-файл.

Командлет пропонує нам пару параметрів для шифрування: Key і SecureKey.
Пропоную використовувати в якості ключа масив байт, що складається з 16, 24 або 32 (за замовчуванням) елементів - 128, 192 або 256-бітний ключ відповідно.

Запам'ятовувати всі елементи масиву - клопітно.
Спростимо: напишемо функцію, яка буде отримувати 4 цифри (як пін-код - так-сяк запам'ятати можна) і повертати масив байт заданої довжини.

Нескладний алгоритм вийшов, тут можна (навіть потрібно) наваять свій власний - наскільки фантазія дозволяє.
Тестуємо функцію.

Анатолій Демидович як отримати пароль з pscredential


Пишемо новий скрипт: перед експортом даних в CSV-файл шифруємо пароль алгоритмом AES. після чого через пару секунд намагаємося його прочитати.

Анатолій Демидович як отримати пароль з pscredential


Схоже вдало.
Змінимо наш "пін-код" і виконаємо скрипт ще раз.

Анатолій Демидович як отримати пароль з pscredential


Очевидно: пароль, зашифрований в перший раз (іншим ключем) нам отримати не вдалося.

Повернемо первісне значення "пін-коду" і, щоб остаточно переконатися в тому, що все працює як задумано, виконаємо скрипт втретє.

Анатолій Демидович як отримати пароль з pscredential


Результат - перший і третій пароль, на другому - помилка, що і було потрібно.

За сім прощаюсь. Всім мир.

p.s. На мій погляд рішення практично будь-якої задачі, в тому числі злому криптографічного алгоритму - питання часу і бюджету.

Схожі статті