openssh / opensshportable,应该从内存中提取哪个密钥?

时间:2019-05-20 09:14:20

标签: python c ssh

我想在OpenNebula等虚拟环境中解密ssh流量。 为此,我从openssh / opensshportable代码的功能key_derive_keys中提取了六个ssh密钥(IV,加密密钥和完整性密钥)。 如果随后我跟踪服务器与客户端之间的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) 

编辑:为相关但又类似的问题创建了一个新线程问题在这里:Get the counter value after decrypt finished 也许有人有主意?

编辑:我同时解决了这个问题。问题在于,计数器已在身份验证步骤中递增,这意味着在加密开始时,计数器比IV高一点。 这意味着我拥有正确的钥匙,但计数器是错误的。我让任何感兴趣的人都可以打开该线程。

0 个答案:

没有答案