协议命令字

上一篇 / 下一篇  2012-12-24 19:40:27 / 个人分类:协议

  这篇日志为本人在工作中研究的SMB2(Server Message Block)中的SMB2_QUERY_DIRECTORY协议命令字。未经过评审,仅自己看文档进行学习总结而来。SMB2是SMB协议的升级版smb 2.1,客户端需要windows7,windows server 2008等系统 。
 
缩略语:
CIFS (Common Internet File SysteCIFS是当前主流异构平台共享文件系统之一。主要应用在NT/Windows环境下,是由Microsoft公司开发。其工作原理是让CIFS协议运行于TCP/IP通信协议之上,让Unix计算机可以在网络邻居上被Windows计算机看到。
SMB(Server Message BlockSMB协议是一种IBM协议,用于在计算机间共享文件、打印机、串口等。SMB协议可以用在因特网的TCP/IP协议之上,也可以用在其它网络协议如IPXNetBEUI 之上。CIFS是公共的或开放的SMB协议版本,并由Microsoft使用。
 

1.     概述

SMB2 QUERY_DIRECTORY主要是针对目录的枚举操作。通过抓包查看到的是FIND(0x0e),每次请求和响应都是2个复合包在SMB2中,2个复合包都属于客户端的行为。打开共享目录,查看到目录下的文件或文件夹就会触发这个命令字。

2.1 SMB2 QUERY_DIRECTORY包含以下的组成部分:

      2.1.1StructureSize (2 bytes):客户端必须设置一个字段的值,主要是表明请求的结构,不含header

2.1.2 FileInformationClass (1 byte):描述文件信息,包含以下命令字:

FileDirectoryInformation0x01文件或文件夹的基本信息(如文件名,时间戳,大小和属性),在response中详细列出了这些值。

抓包返回的报文都是FileDirectoryInformation的值,下面的情况目前未知在客户端如何触发。

FileFullDirectoryInformation0x02

文件或文件夹的所有信息,再加上扩展属性大小。

FileIdFullDirectoryInformation (0x26) Full information plus volume file ID about a file or directory. A volume file ID is defined as a number assigned by the underlying

object store that uniquely identifies a file within a volume.

文件信息加上FID,理解就是打开文件或目录会有一个ID唯一标识。它通过底层对象存储并唯一识别的ID

FileBothDirectoryInformation (0x03)文件和文件夹的基本信息加上扩展属性大小和短名字。

FileIdBothDirectoryInformation (0x25) FileBothDirectoryInformation plus volume file ID about a file or directory. FileBothDirectoryInformation加上FID

FileNamesInformation0x0C)在一个目录里面详细的文件名和目录名信息。

2.1.3 flags (1 byte)该结构定义的请求类型和操作,具体有四种:
SMB2_RESTART_SCANS(0x01) The server MUST restart the enumeration from the beginning, but the search pattern is not changed.
SMB2_RETURN_SINGLE_ENTRY(0x02)服务端仅返回第一次进入目录查询到的结果。
SMB2_INDEX_SPECIFIED(0x04) The server SHOULD<60> return entries beginning at the byte number specified by FileIndex.
SMB2_REOPEN(0x10) The server MUST restart the enumeration from the beginning, and the search pattern MUST be changed to the provided value.
This often involves silently closing and reopening the directory
on the server side.

2.1.4FileIndex(4 bytes) Flags中如果没有设置SMB2_INDEX_SPECIFIED这位fileIndex设置为0服务端忽略它。

FileId (16 bytes)目录枚举时一个识别目录的ID。这个ID返回是从Create Request到打开一个目录在服务器端。

FileNameOffset(2 bytes)偏移

FileNameLength(2 bytes)这个字段在search pattern里面。如果search pattern不提供,length字段必须为0

OutputBufferLength(4 bytes)服务端被允许返回在回复字段中。

Buffer (可变长度)缓存区

 

TAG:

 

评分:0

我来说两句

日历

« 2024-05-07  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 19147
  • 日志数: 32
  • 建立时间: 2012-03-07
  • 更新时间: 2013-11-03

RSS订阅

Open Toolbar