Spędziłem trochę czasu we wdrażaniu własnego klienta SMB, więc chciałbym podzielić się z nami pewnym doświadczeniem.
pierwsze nie używaj tango w kodzie produkcyjnym, ponieważ po zapoznaniu się z SMB zdasz sobie sprawę, że jego realizacja jest problematyczne, np nie obsługuje Unicode, aw niektórych przypadkach nie jest prawidłowo dopełniany, więc nie można uzyskać dostępu do folderu. I słyszałem też, jak ludzie mówili, że nie mogą połączyć się z nim za pomocą okna 7.
drugie, aby podsumować moje doświadczenie uważam jcifs guys had said the best: „kto chce wdrożyć CIFS musi wiedzieć jedną bardzo ważną rzecz -«oficjalny»dokumentacja CIFS nie jest dokładna i nie odzwierciedla rzeczywistości nie ma specyfikacji. . wszystko, co przeczytasz w projekcie IETF lub dokumencie SNIA (sam dokument różni formatowania) nie wierzę. Używaj go tylko jako wskazówka. ostateczne odniesienia jest cokolwiek zobaczyć na drucie.
Rules
Wireshark!
... spójrz na JCIFS, aby uzyskać inspirację do projektu, np. W jaki sposób zadanie i odpowiedź na mapę według MID i koduje i dekoduje ramki.
zaimplementować następujące polecenia:
- 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
- wszystkie odpowiedzi na wyżej "
Jedyne co mogę dodać, to to, że trzeba także wdrożyć TRANS2_FIND_FIRST2 żądania/odpowiedzi na zapytania pliki w folderze, a jeśli chcesz się dowiedzieć, ile Shared folders serwer naraża trzeba implementacja NetShareEnum Żądanie/odpowiedź.
Po prostu ciekawa, czy Twoja implementacja obsługuje NTLMv2? – user523234
Nie. Zapomniałem wspomnieć, że uwierzytelnienie to kolejna część, której wdrożenie zajmie trochę czasu. Obecnie implementuję tylko NTLM. – Qiulang