Как 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 к запросу, когда ответ имеет (действительный).

Другие вопросы по тегам