Tôi đã dành khá nhiều thời gian để triển khai ứng dụng khách SMB của riêng mình vì vậy tôi muốn chia sẻ một số kinh nghiệm tại đây.
Trước tiên, không sử dụng tango trong mã sản xuất của bạn bởi vì khi bạn đã quen với SMB, bạn sẽ nhận ra rằng việc triển khai nó là vấn đề, ví dụ: nó không hỗ trợ unicode và trong một số trường hợp nó không phải là padding một cách chính xác, do đó bạn không thể truy cập vào thư mục. Và tôi cũng nghe mọi người nói rằng họ không thể kết nối cửa sổ 7 với nó. Thứ hai, để tóm tắt kinh nghiệm của tôi, tôi tìm thấy jcifs guys had said the best: "bất kỳ ai muốn thực hiện CIFS cần biết một điều rất quan trọng - tài liệu" CIFS "chính thức không chính xác và không phản ánh thực tế. . Đừng tin bất cứ điều gì bạn đọc trong dự thảo IETF hoặc tài liệu SNIA (cùng tài liệu định dạng khác nhau). Sử dụng nó chỉ như là một gợi ý. các tài liệu tham khảo dứt khoát là bất cứ điều gì bạn nhìn thấy trên dây.
Rules
Wireshark!
... xem JCIFS để biết cảm hứng thiết kế như cách đặt lại nhiệm vụ và phản hồi vào bản đồ của MID và mã hóa và giải mã khung.
Sau đó thực hiện các lệnh sau:
- 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
- tất cả các câu trả lời cho trên "
Điều duy nhất tôi có thể thêm là, bạn cũng cần phải thực hiện TRANS2_FIND_FIRST2 request/response để truy vấn các tập tin trong một thư mục và nếu bạn muốn tìm hiểu có bao nhiêu thư mục chia sẻ máy chủ cho thấy bạn cần triển khai NetShareEnum Yêu cầu/phản hồi.
Chỉ tò mò, hỗ trợ triển khai của bạn có NTLMv2 không? – user523234
No. Quên đề cập đến việc xác thực là một phần khác sẽ mất khá nhiều thời gian để thực hiện. Tôi chỉ thực hiện NTLM hiện tại. – Qiulang