Pasé bastante tiempo implementando mi propio cliente SMB, así que me gustaría compartir algo de experiencia aquí.
Primero no use tango en su código de producción porque una vez que se familiarice con SMB se dará cuenta de que su implementación es problemática, p. no es compatible con Unicode y en algunos casos no está rellenando correctamente, por lo que no puede acceder a la carpeta. Y también escuché que la gente decía que no podían conectar la ventana 7 con eso.
En segundo lugar, para resumir mi experiencia me parece jcifs guys had said the best: "cualquier persona que quiera poner en práctica el CIFS necesita saber una cosa muy importante - la 'documentación CIFS oficial' no es exacta y no refleja la realidad no existe una especificación. . no crea todo lo que lee en el borrador IETF o el documento de SNIA (el mismo formato del documento es diferente). se usa solamente como una sugerencia. la referencia definitiva es lo que se ve en el alambre.
Reglas
Wireshark!
... busque en JCIFS la inspiración en el diseño, como por ejemplo cómo búsqueda y respuesta en un mapa por MID y codifica y descodifica marcos.
A continuación, poner en práctica los siguientes comandos:
- SMB_COM_NEGOTIATE
SMB_COM_SESSION_SETUP_ANDX
SMB_COM_TREE_CONNECT_ANDX
SMB_COM_NT_CREATE_ANDX
SMB_COM_READ_ANDX
SMB_COM_WRITE_ANDX
SMB_COM_CLOSE
- todas las respuestas para arriba "
La única cosa que puedo añadir es que, también hay que poner en práctica TRANS2_FIND_FIRST2 petición/respuesta para consultar los archivos dentro de una carpeta y si desea saber cuántas carpetas compartidas del servidor expone lo que necesita implementar NetShareEnum Solicitud/respuesta.
Sólo por curiosidad, ¿su apoyo a la ejecución NTLMv2? – user523234
No. Olvidé mencionar que la autenticación es otra parte que llevará bastante tiempo implementar. Solo implemento NTLM actualmente. – Qiulang