Skip to content
Wireshark Wiki 中文翻译整理专题首页原始页面

SMB2/Create/ExtraInfo

SMB2/Create 请求和回复可以设置/返回有关文件的附加信息,例如设置初始 EA,或返回该文件的 maximum SMB2/AccessMask。这由 SMB2/Create 请求和响应末尾传递的 extrainfo blob 处理。

在 IPC$ 共享上打开 pipes 时,不使用 extrainfo blob。

extrainfo blob 由 extrainfo entries 的串联列表组成。每个 extrainfo blob 中可以有多个条目。

ExtraInfo Entry

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Chain Offset |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Tag Offset | Tag Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Tag Length(cont) | Data Offset |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Data Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+...| Tag+-+-+-+-+...+-+-+-+-+...| Data+-+-+-+-+...

Chain Offset

到下一个条目的偏移量;如果后面没有更多条目,则为 0。

该偏移量相对于当前 extrainfo entry,而不是相对于 SMB2 packet 的开头。

Tag Offset

此 extrainfo entry 中存储 Tag 的位置偏移量。

Tag Length

Tag 的字节长度。该字段为 4 字节且不对齐。

Data Offset

此 extrainfo entry 中存储该 tag 的 Data 的位置偏移量。

Data Length

数据的字节长度。

Tag

这是一个 4 字符 ASCII 字符串,用于指定条目的类型以及

设置/请求的信息类型。

到目前为止见过的 Tags 类型包括

ExtA : Set the extended attributesMxAc : Query the maximum access maskTWrp : Open a specific shadow volume copy/reparse point

Data

data 字段结构取决于使用了哪个 Tag,以及它是请求还是响应。in

Data/ExtA

该结构只能在创建文件时用于 SMB2/Create 请求。它用于在创建文件的同时设置文件的 Extended Attributes。该字段不会在响应中返回。

该字段的结构与 get ea infolevel 相同:有关该结构的描述,请参见 SMB2/SMB2_FILE_INFO_0f

Data/MxAc

该 tag 可用于查询文件允许的最大 access mask。客户端通过在 extrainfo 中附加 MxAc tag 来表明在请求中希望知道最大允许 access mask,但 Data Length 为 0 且没有数据。

然后服务器以 SMB2/Create 响应进行回应,其中包含一个 MxAc tag 和 8 字节数据。

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| unknown |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Access Mask |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Data/MxAc/AccessMask

见 SMB2/AccessMask

Data/TWrp

该 tag 在 Create 请求中用于指定要打开特定的 shadow volume copy 版本,而不是普通/当前版本。该 tag 不用于回复。

使用时,客户端首先会使用 SMB2/Ioctl/Function/FILE_DEVICE_NETWORK_FILE_SYSTEM/FSCTL_GET_SHADOW_COPY_DATA Ioctl 获取所有 volume shadow copy 实例列表。它返回所有可用 shadow copies 的列表,格式为 @GMT-date-time。选择特定 shadow copy 后,date-time 会转换为 8 字节 NTTIME 值,并作为 TWrp extra info 在 Create 调用中传递给服务器。Create 调用在 create flags 中设置了 OpenReparsePoint bit (0x00200000) bit。Create 调用中指定的 filename 是 '@'。

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |+-+-+-+-+ TimeStamp +-+-+-+-+| |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

讨论

我只见过 TWrp 用于打开共享本身的较旧副本,因此我不知道 '@' 是否仍用于打开普通文件或目录的旧版本。也许不能使用?也许它使用的是某种 '@'+something 形式?

于 2020-08-11 23:24:56 UTC 从 https://wiki.wireshark.org/SMB2/Create/ExtraInfo 导入

相关 Wireshark Wiki 页面

网络分析技术档案