SMB“创建 AndX 请求”的 FID 是如何生成的?

SMB“创建 AndX 请求”的 FID 是如何生成的?

我看到访问网络共享时的跟踪记录中有多个CreateAndX请求(打开文件夹)带有关联的 FID。但是,有些请求没有关联 FID,因此会得到不同的响应。

292 7.561217000 client_Ip cifs_Server_ip SMB 184 NT Create AndX Request, FID: 0x1781, Path: \share_folder\subfolder

293 7.565304000 cifs_Server_ip client_Ip SMB 193 NT Create AndX Response, FID: 0x1781

320 7.761995000 clientIp cifs_Server_ip SMB 184 NT Create AndX Request, Path: \share_folder\subfolder

323 7.764860000 cifs_Server_ip client_ip SMB 93 NT Create AndX Response, FID: 0x0000, Error: STATUS_FILE_IS_A_DIRECTORY

两个请求之间的唯一区别是第一个请求没有 FID,并且 CreateOptions 字段设置为0x00000040(设置了非目录字段)。第二个请求将此字段设置为0。两者的访问掩码均为0x00120080

客户端是Windows 7,为什么有两个不同的连续CreateAndX请求,并且得到的响应也不同?

答案1

从 wireshark 论坛得到答案:在 SMB 中,FID 会在响应中发送回客户端。Wireshark 还会在请求中显示 FID,因为它已在响应中获悉 FID。您可以看到 FID 不在数据包中,而是由 wireshark 通过 FID 周围的方括号提供的。

因此,在帧 292 中,FID 是已知的,因为它是由帧 293 中的服务器提供的。但对于帧 320 中的请求,由于存在错误,因此没有有效的 FID,并且响应没有有效的 FID(FID=0x0000)。

简而言之,没有请求具有 FID,当响应具有(有效)FID 时,wireshark 可以将 FID 添加到请求中。

相关内容