Действительно ли Windows 7 поддерживает протокол ядра SMB?

Я начал разработку SMB-сервера для старой машины на базе Z80. Это машина работает с очень простой операционной системой, подобной MS-DOS (без многозадачности, без концепции пользователей, только файловая система FAT, без Unicode, только имена файлов 8.3) и имеет ограниченную память, поэтому моя первая идея - реализовать только основной протокол SMB. Я буду использовать транспорт TCP.

На данный момент у меня есть только очень короткий тестовый код, который просто отвечает на команду SMB_COM_NEGOTIATE, указывая, что основной протокол («PC NETWORK PROGRAM 1.0») является желаемым диалектом. проверьте это, я пытаюсь подключиться с компьютера Windows 7, открыв окно проводника и набрав «\\ » в адресной строке. Я проверил с помощью Wireshark, что сервер получает согласование команда и отправляет (очевидно) правильный ответ.

Проблема: , как только Windows c Клиент получает ответ, он показывает типичное сообщение об ошибке «Невозможно получить доступ к ресурсу» (с кодом ошибки 0x80004005), а затем ничего не происходит (дальнейшие сообщения SMB не отправляются). Я ожидал получить SMB_COM_TREE_CONNECT или аналогичную команду.

Я подумал, что, возможно, Windows 7 не поддерживает основной протокол (он очень старый и в нем отсутствуют какие-либо функции безопасности), но тогда почему в запросе согласования указано имя основного диалекта? Может, я пропускаю какой-то шаг? Должен ли сервер отправлять какие-либо дополнительные пакеты после ответа согласования?

Клиентская ОС - это Windows 7 Ultimate 64 бит, и вот дампы Wireshark запроса и ответа на тот случай, если кто-то может обнаружить что-то не так в процессе:

​​Запрос:

SMB dialect negotiate request

Ответ:

SMB dialect negotiate response

ОБНОВЛЕНИЕ: Если я выберу диалект NT LM 0.12 вместо основного диалекта, я получаю от клиента команду SESSION_SETUP_AND_REQUESTX. Таким образом, очевидно, что действительно основной протокол не поддерживается Windows 7. В любом случае, любая дополнительная информация будет принята с благодарностью.

10
задан Konamiman 16 February 2011 в 10:24
поделиться