CIFS服務端開發筆記

leehq發表於2010-06-28

◆ 當SMB_COM_WRITE_ANDX請求寫入的資料位元組數大於或等於65535時,資料包的ByteCount欄位將為0,這種情況下只能夠通過資料包的實際大小判斷要寫入的資料位元組數。

 

◆ 在執行lsarpc的LsarLookupSids2方法時,ReferencedDomains引數必須有內容,否則Windows XP或更高版本的客戶端將不能識別返回的使用者名稱。

 

◆ 所有的DCERPC的字串內容必須按2字元對齊並且以空(0)字元結尾,如果字元數量為單數,應該在它的後面追加一個空(0)字元。

 

◆ 在SMB_COM_NEGOTIATE應答時MaxMpx為1並且SMB_COM_NT_CREATE_ANDX應答時OpLockLevel的值為0,將會導致一些檔案相關的Win32 API函式(例如GetPrivateProfileString)不能正常工作。

 

◆ 有些Windows Vista之前版本的客戶端使用NTLM v2的方式登入時,傳送的AUTHENTICATE_MESSAGE中Lm Response和Nt Response都是24位元組,和NTLM v2的標準格式不同。其中Lm Response前8個位元組為Client Challenge,必須接在Server Challenge之後組成一個16位元組的內容,並計算出這個內容的MD5值。然後使用NTLM v1的加密方法(P24)把MD5值加密為24位元組資料與Nt Response進行比較。

 

◆ Windows Vista或更高版本的Windows客戶端不再支援NTLM v1的身份驗證方式。

 

◆ Windows 7客戶端登入時,會傳送24個位元組的Lm Response,但是每個位元組的值都為0,不知道有什麼作用。

 

◆ 在處理TRANS2_FIND_FIRST2的Transacton時,如果請求查詢的是所有檔案(查詢名稱為“*”),必須在應答的查詢結果中包含“.”和“..”這兩個特殊目錄資訊(即使要查詢的目錄下沒有任何內容)。

 

◆ 返回一個檔案屬性如果為SMB_FILE_ATTRIBUTE_NORMAL而不是SMB_FILE_ATTRIBUTE_ARCHIVE,可能會造成某些程式無法正常訪問檔案。

 

◆ 在應答SMB_COM_NT_CREATE_ANDX的時候,如果OpLockLevel的值為0可能會降低Windows讀寫檔案的效能。

 

相關文章