Я хотел бы запустить экземпляр Windows EC2 и программно получить пароль администратора, используя Python. Я знаю, что это можно сделать с помощью CLI, как это, но я бы предпочел расшифровать локально, чтобы избежать отправки моего личного ключа через inte rnet.
aws ec2 get-password-data --instance-id i-0d4d8273cadcae0a0 --priv-launch-key .ssh/elliott2.pem
После прочтения документов Cryptodome я попытался вот так :
import boto3
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
ec2 = boto3.resource('ec2', 'us-west-2')
i = ec2.Instance('i-028dee2acb533fc59')
encrypted_str = i.password_data()['PasswordData']
with open('mykey.pem') as fp:
key = RSA.importKey(fp.read())
cipher = PKCS1_OAEP.new(key)
print(cipher.decrypt(enc_str))
Это не с ошибкой:
Traceback (most recent call last):
File "test.py", line 14, in <module>
print(cipher.decrypt(encrypted_str))
File "/Users/elliott/Library/Python/3.8/lib/python/site-packages/Crypto/Cipher/PKCS1_OAEP.py", line 167, in decrypt
raise ValueError("Ciphertext with incorrect length.")
ValueError: Ciphertext with incorrect length.
Я думаю, cipherkey
должно быть точно 256 байт. Но данные пароля длиннее, поэтому я не уверен, что делать.