openssh / opensshportable, какой ключ я должен извлечь из памяти? - PullRequest
2 голосов
/ 20 мая 2019

Я хочу расшифровать трафик ssh в виртуальной среде, такой как OpenNebula. Для этого я извлек шесть ключей ssh ​​(IV, ключи шифрования и ключи целостности) из функции key_derive_keys из кода openssh / opensshportable. Если я затем отследю ssh-соединение между сервером и клиентом, я могу расшифровать трафик, если обе стороны без проблем используют режим AES-CBC. Но когда стороны используют AES-CTR, ключи, полученные из того же метода, больше не работают. Итак, мой вопрос: могу ли я извлечь неправильную IV? Так я должен отслеживать другую функцию / структуру? Мой код для AES-CTR:

key="1A0A3EBF96277C6109632C5D96AC5AF890693AC829552F33769D6B1A4275EAE2" 
iv="EB6444718D73887B1DF8E1D5E6C3ECFC" 

key_hex=binascii_a2b_hex(key)  
iv_hex=binascii_a2b_hex(iv)    
aes = AES.new(key_hex, AES.MODE_CTR, initial_value = iv_hex, nonce=b' ')    
decrypted = aes.decrypt(binascii.a2b_hex(cipher).rstrip())     
print(decrypted) 

Редактировать: создал новый поток для связанной, но очень похожей проблемы. Проблема здесь: Получить значение счетчика после завершения расшифровки Может быть, у кого-то есть идея?

Edit: я тем временем исправил проблему. Проблема заключалась в том, что счетчик уже увеличивается на этапе аутентификации, что означает, что при запуске шифрования счетчик немного выше, чем IV. Это означает, что у меня были правильные ключи, но счетчик был не прав. Я позволил этой теме открыться для любого заинтересованного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...