Как FID генерируется для SMB "Создать запрос AndX?"
Я вижу в следах при доступе к сетевому ресурсу, есть несколько CreateAndX
запросы (которые открывают папки) с 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, wireshark может добавить FID к запросу, когда ответ имеет (действительный).