OpenSSH client源码验证:发现padding bytes差异
深度分析OpenSSH packet processing: 关键发现: ✅ ssh_packet_read_poll2_mux(): incoming_packet存储padding_length + type + payload + padding ✅ sshbuf_get_u8()消耗padding_length和type后,剩余payload + padding ✅ kex_input_kexinit(): sshpkt_ptr()返回payload + padding(从cookie开始) ✅ kex->peer存储:payload fields + padding(不包括type byte) 差异: - OpenSSH kex->peer包括padding bytes - 我们client_kexinit_payload不包括padding bytes 测试padding fix: ❌ 加padding后:签名验证失败(说明exchange hash计算方式不同) ✅ 不加padding:签名成功但MAC失败(说明不是padding问题) 结论: OpenSSH exchange hash calculation可能不包括padding bytes 需要进一步验证OpenSSH如何计算exchange hash 下一步建议: 1. 检查OpenSSH exchange hash calculation是否重新构建packet(包括padding) 2. 或验证OpenSSH kex->my是否也包括padding 3. 或使用OpenSSH server对比测试(手动启动)
This commit is contained in: