2012-11-15 43 views
2

我正在尝试学习和实现SMB2服务器。我非常有兴趣学习GSS-API(NTLMSSP,NTLMSSP_AUTH)里面。所以,我正在做我自己的GSS-API组件的实验。我在RFC4178 & RFC2478中阅读了mechListMIC的描述。但我不明白如何计算mechListMIC对于'会话设置响应,未知消息类型'响应。为SPNEGO GSS-API(NTLMSSP_AUTH)接受完成(0)状态计算'mechListMIC'的方法

实际上,我可以为'NegotiateProtocol Response'的negTokenInit阶段生成mechListMIC。但问题是,当客户端发送'会话建立请求,NTLMSSP_AUTH,用户:域\管理员,未知消息类型'请求,我不明白它是如何产生的'mechListMIC:01 00 00 00 78 1E E9 4A DB 99 7F E9 00 00 00 00'以及我应该如何在'会话设置响应,未知消息类型'和相应的mechListMIC基于上一个会话建立请求发回响应。

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

AND SMB2.CSessionSetup.securityBlob.GSSAPI.NegotiationToken.NegTokenResp.MechListMic,十六进制数据= 01 00 00 00 78 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 78 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(键,数据)算法来生成mechListMIC为SessionSetup响应和怎么样的信息?

如果可以用我的测试案例来计算mechListMIC“SessionSetup响应,未知的消息类型”响应创建一个一步一步的例子,那将是对我很大的帮助。如果您需要更多信息,请告诉我。


感谢,
Shishir

回答