为SPNEGO GSS-API(NTLMSSP_AUTH)接受完成(0)状态计算'mechListMIC'的方法

时间:2012-11-15 09:07:55

标签: smb cifs spnego

我正在尝试学习和实施SMB2服务器。我很有兴趣在里面学习 GSS-API(NTLMSSP,NTLMSSP_AUTH)。所以,我正在尝试使用我自己的GSS-API组件。我在 RFC4178&amp ;;中阅读了mechListMIC的描述。 RFC2478 即可。但我无法理解如何计算'SessionSetup响应 mechListMIC ,未知消息类型'响应。

实际上,我可以为'NegotiateProtocol Response'的negTokenInit阶段生成mechListMIC。但问题是,当客户端发送'SessionSetup请求,NTLMSSP_AUTH,用户:域\管理员,未知消息类型'请求时,我无法理解它是如何生成'mechListMIC:01 00 00 00 78 1E E9 4A DB 99 7F E9 00 00 00 00'以及我应该如何在'SessionSetup响应中发送响应,未知消息类型'以及相应的 mechListMIC 基于之前的SessionSetup请求。

我尝试了以下信息: SMB2.CSessionSetup.securityBlob.GSSAPI.InitialContextToken.InnerContextToken.SpnegoToken.NegTokenInit.MechTypes,十六进制数据= 30 0C 06 0A 2B 06 01 04 01 82 37 02 02 0A

SMB2.CSessionSetup.securityBlob.GSSAPI.NegotiationToken.NegTokenResp.MechListMic,十六进制数据= 01 00 00 00 7 1E E9 4A DB 99 7F E9 00 00 00 00

SecBuffer SignBuffers [2];

SignBufferDesc.ulVersion = SECBUFFER_VERSION; // SECBUFFER_VERSION = 0

SignBufferDesc.cBuffers = 2;

SignBufferDesc.pBuffers = SignBuffers;

SignBuffers [0] = 30 0C 06 0A 2B 06 01 04 01 82 37 02 02 0A;

SignBuffers [1] = 01 00 00 00 7 1E E9 4A DB 99 7F E9 00 00 00 00;

SignBuffers [0] .BufferType = SECBUFFER_DATA; // SECBUFFER_DATA = 1

SignBuffers [1] .BufferType = SECBUFFER_TOKEN; // SECBUFFER_TOKEN = 2



任何人都可以告诉我在 HMAC-MD5(密钥,数据)算法中需要使用哪些信息来生成用于SessionSetup响应的 mechListMIC 以及如何使用?

如果可以使用我的测试用例为'SessionSetup响应计算 mechListMIC ,使用未知消息类型'响应创建一个分步示例对我很有帮助。如果您需要任何进一步的信息,请与我们联系。


谢谢,
Shishir

1 个答案:

答案 0 :(得分:0)