2012-11-15 50 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

回答