Задать вопрос
@vitalyrline

Как генерировать пароль по кодовой фразе и восстанавливать обратно?

Всем здравствуйте!
Коротко опишу задачу. Готовим компьютеры на удалённые участки. Интернет там есть не всегда и иногда приходится выполнять некоторые задачи по телефону руками пользователей. Для этого соответственно приходится давать им пароль локального админа. Если пароль везде одинаковый, то пользователи, зная его, смогут хозяйничать на всех компьютерах. Хочется чтобы на каждом компьютере был уникальный пароль админа.
Можно это делать вручную и записывать в табличку, но это неудобно. Отсюда вопрос. Существует ли в природе какая-нибудь программа/скрипт, которая позволит генерировать и восстанавливать обратно пароль. Как я это вижу? Генерируем пароль на основе двух парольных фраз. Одна из них хранится только у админов, второй фразой является имя компьютера. Таким образом зная имя компьютера всегда можно восстановить пароль.
  • Вопрос задан
  • 224 просмотра
Подписаться 1 Средний 1 комментарий
Решения вопроса 1
paran0id
@paran0id
Умный, но ленивый
Хэш от админского ключа + имени компьютера. Для удобства можно брать последние N знаков.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
pindschik
@pindschik
ФЫВА ОЛДЖ
Не надо никаких программ.

Два способа:

Первый
Придумайте свой простой алгоритм генерации пароля, у которого одна часть будет общая, а часть различной и зависеть от удаленного ПК (например от ФИО работника или от географического расположения).
Подход должен быть общим, чтоб вы просто могли в любой момент восстановить пароль в голове.
При этом по внешнему виду одного-двух паролей - пользователи не смогут догадаться, как восстановить остальные.
Например у нас есть ноут в Москве, у Пырина Ивана Ивановича - пароль будет Ptz119JK, где P - это "Пырин", "tz" - общие для всех символы, 119 - это сумма региона пользователя и общего числа "42", т.е. 77+42, а JK - инициалы И.И. в латинице (ii) со сдвигом по шифру цезаря на 1 и 2 знака. Можно делать в голове. Можно сделать формулу в Экселе.

Второй способ - сгенерите и распечатайте пароли. Наклейте их на технику. На наклейке напишите, что это серийный номер. НО. Это будет пароль с избыточными символами. А вам требуется запомнить только одно ОБЩЕЕ ключевое слово, например "ВИЛЫ". А "серийник" на ПК будет например таким ФЫВАОЛДЖЭ4322.
Вычитаем символы ВИЛЫ из ФЫВАОЛДЖЭ4322 и получаем реальный пароль ФЫАОДЭ4322.
Просите пользователя назвать серийник, и сразу набирате без секретных символов в поле пароля.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Это вообще задача не техническая а организационная. Сделайте участкового
админа
и дайте ему все прививлегии. Зачем играть в эту игру с придумыванием
запутанных схем? Опыт инфо-безопасности показывает что все эти схемы просто
не работают. Про это Керхкофс писал.

Если политика сложности пароля недостаточная - придумайте политику. Обучите
людей чтоб не было совсем уже явных проколов на участках.
Ответ написан
Комментировать
Afranius
@Afranius
Из говорящих дольше живут те, что говорят меньше.
Я с подобной задачей 20 лет назад сталкивался. С тех пор интернет вроде есть везде.
Увы, там не "решали задачи руками пользователей", а просто давали мне УАЗик и день времени чтобы скататься до удалённого участка.
Ответ написан
Dmitry_Tadyshev
@Dmitry_Tadyshev
Определение компонентов пароля

Кодовое слово (например, "bmw")
Статические данные с ПК (например, имя пользователя, имя компьютера, дата создания учетной записи и т. д.)
Пароль (например, "123123")
2. Генерация пароля
Вы можете создать функцию, которая будет комбинировать эти элементы для генерации пароля. Например:

import hashlib

def generate_password(code_word, static_data, user_password):
# Создание уникальной строки на основе входных данных
combined = f"{code_word}:{static_data}:{user_password}"

# Хеширование строки для получения пароля
password_hash = hashlib.sha256(combined.encode()).hexdigest()

return password_hash

3. Логика для восстановления пароля
Для восстановления пароля вам нужно будет проверить кодовое слово и сгенерировать тот же пароль, используя те же статические данные. Например:

def recover_password(code_word, static_data, user_password):
return generate_password(code_word, static_data, user_password)

4. Пример использования
# Пример статических данных
static_data = "user123" # Это может быть имя пользователя или имя компьютера
user_password = "123123" # Ваш исходный пароль
code_word = "bmw" # Кодовое слово

# Генерация пароля
generated_password = generate_password(code_word, static_data, user_password)
print(f"Сгенерированный пароль: {generated_password}")

# Восстановление пароля
recovered_password = recover_password(code_word, static_data, user_password)
print(f"Восстановленный пароль: {recovered_password}")

# Проверка
if generated_password == recovered_password:
print("Пароль успешно восстановлен!")
else:
print("Ошибка восстановления пароля.")
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы