Comencé el desarrollo de un servidor SMB para una máquina antigua basada en Z80. Esta máquina ejecuta un sistema operativo similar a MS-DOS muy simple (sin multitareas, sin concepto de usuarios, solo con el sistema de archivos FAT, sin unicode, 8.3 nombres de archivos) y tiene memoria limitada, por lo tanto, mi primera idea es implementar solo el protocolo central SMB . Usaré el transporte TCP.¿Windows 7 realmente es compatible con el protocolo central SMB?
Por el momento, tengo un código de prueba muy corto que solo responde al comando SMB_COM_NEGOTIATE, indicando que el protocolo central ("PC NETWORK PROGRAM 1.0") es el dialecto deseado. Para probarlo, trato de conectarme desde una máquina con Windows 7, abriendo una ventana del explorador y escribiendo "\\<server IP>"
en la barra de direcciones. He verificado con Wireshark que el servidor recibe el comando de negociación y envía una respuesta (aparentemente) correcta.
El problema: tan pronto como el cliente de Windows recibe la respuesta, se muestra un genérico "No se puede tener acceso a los recursos" mensaje de error (con el código de error 0x80004005) y luego no pasa nada (no hay mensajes SMB adicionales son enviados) . Esperaba recibir SMB_COM_TREE_CONNECT o un comando similar.
Estaba pensando que tal vez Windows 7 no es compatible con el protocolo central (es muy antiguo y carece de cualquier característica de seguridad), pero ¿por qué enumera el nombre dialecto central en la solicitud de negociación? Tal vez estoy perdiendo un paso? ¿El servidor debe enviar algún paquete adicional después de la respuesta negociada?
El sistema operativo del cliente es Windows 7 Ultimate 64 bits, y aquí están los Wireshark vertederos tanto de la petición y la respuesta en caso de que alguien puede detectar nada mal en el proceso:
La solicitud:
La respuesta:
ACTUALIZACIÓN: Si selecciono el dialecto NT LM 0.12 en lugar del dialecto central, recibo un comando SESSION_SETUP_AND_REQUESTX del cliente. Aparentemente, parece que, de hecho, el protocolo central no es compatible con Windows 7. De todos modos, se apreciará cualquier información adicional.