2014-12-31 3 views
0

ОК, я не смог найти этот вопрос нигде. Поэтому я заранее извиняюсь, если это было задано раньше.Python hashed пароль для использования в другом скрипте?

Мне нужно иметь сценарий ssh ​​на другие устройства в разное время, для этого мне нужно сохранить пароль. Я не хочу использовать простой текст или base64, но я был бы в порядке с хэшированием пароля, и у меня нет проблем с этим. Проблема в том, что я не знаю, как получить хеш для отправки на устройства в качестве пароля. Он просто отправляет хэш, и логин получает отказ.

Это хэш-скрипт, который записывает в файл:

import getpass, hashlib, os 

pwf = open('hashes.txt', 'w') 
password = getpass.getpass() 
hashpass = hashlib.sha256(password).hexdigest() 
pfw.write(hashpass) 

Это второй сценарий, который я могу вытащить хеш из файла, но его все еще хэш.

hashes = open('hashes.txt', 'r') 
for pw in hashes: 
    passwrd = pw.strip() 
password = passwrd 

Это все хорошо и денди, но не могу Войти Я с хэша .. Я уверен, что им делать что-то в корне неправильно здесь. пожалуйста, дай мне знать.

Также я оставил другой код ssh, поскольку я не думал, что он релевантен.

+1

Хеш в одну сторону. Невозможно вернуть пароль из хэша. –

+0

Это довольно распространенная проблема. Если вы скрипт смог расшифровать хеш для отправки в качестве пароля, тогда любой, кто имеет доступ к этому же скрипту, сможет легко расшифровать хеш, который побеждает цель. Лучше всего убедиться, что скрипт с именем пользователя/паролем находится в безопасной среде, в которой люди не могут получить к ней доступ. – mnjeremiah

+0

Если вам действительно нужно использовать пароль, вам нужен пароль, а не хэш пароля. – khelwood

ответ

1

Весь смысл криптографического хэша состоит в том, что его невозможно перевернуть в исходный пароль. Если вам нужно отправить фактический пароль, хеш не будет работать для вас; вам нужно будет использовать фактический алгоритм шифрования, но тогда вы столкнетесь с аналогичной проблемой, как хранить ключ шифрования, который вы используете для хранения пароля.

В любом случае вам нужен способ безопасного хранения данных на вашей локальной системе, к которым другие неавторизованные пользователи не могут получить доступ. Обычно это делается с использованием аутентификации ssh на основе ключа и хранения ключа с разрешениями, которые делают его недоступным для других пользователей. Это по существу пропускает ненужный шаг шифрования/дешифрования пароля и вместо этого просто использует ключ шифрования в качестве механизма аутентификации для ssh.

Обратите внимание, что существуют библиотеки Python, предназначенные для выполняемой задачи (ssh для удаленных систем и запущенных команд автоматически) - fabric является одним из них.

+0

Он мог использовать хэш своего пароля в качестве ключа шифрования. –

+0

@Camron_Godbout и какая польза вы думаете, что обеспечивает? – Amber

+0

Да, ты прав. Я полностью переоцениваю этот ха-ха. Я думал, что это помешает ему сохранить свой пароль, но ему придется хранить хэш, который будет ключом для шифрования. Так что, может быть, просто безопасность через неясность в лучшем случае. –

Смежные вопросы