iterate-ch / cyberduck

Cyberduck is a libre FTP, SFTP, WebDAV, Amazon S3, Backblaze B2, Microsoft Azure & OneDrive and OpenStack Swift file transfer client for Mac and Windows.
https://cyberduck.io/
GNU General Public License v3.0
3.23k stars 286 forks source link

SMB Time Capsule - Underflow error on connect #15226

Closed hoydas closed 11 months ago

hoydas commented 11 months ago

Background: Apple Time Capsule router USB drive attached and setup as network disk sharing (secured with option for device password) Able to connect using SMB on other clients or apps including Finder and Infuse

The bug/error: When I try to connect to the SMB share using Cyberduck, I get the following error:

Connection failed (Infuse) Java.util.concurrent.ExecutionException: com.hierynomus.smbj.common.SMBRuntimeException: com.hierynomus.protocol.transport.TransportException: com.hierynomus.protocol.commons.buffer.Buffer$BufferException: Underflow.

screenshot_0702

dkocher commented 11 months ago

Upstream issue in ^1.

dkocher commented 11 months ago

@hoydas Can you please test with snapshot build 8.7.1.40638 and let me know if that makes any difference.

hoydas commented 11 months ago

@dkocher That error is gone, but now I get a new one: Java.util.concurrent.ExeutionException: com.hierynomus.smbj.common.SMBRuntimeException: com.hierynomus.mssmb.SMB1NotSupportedException: SMBv1 is not supported by SMBJ.

I don't think I can update the SMB version on the Time Capsule, so I'm not sure if anything else can be done?

dkocher commented 11 months ago

I don't think I can update the SMB version on the Time Capsule, so I'm not sure if anything else can be done?

We only aim to be compatible with SMBv3.

hoydas commented 11 months ago

@dkocher Ok. Thats fair and I have read that to be the philosophy of smbj as well due to security reasons. I wonder if SMBv3 support could be the default, but is there a way to let the user allow SMBv1 as an option.

Other apps use the highest version of SMB available but do drop back down if needed. Infuse for example allows Auto, SMB3, SMB2, SMB1, Legacy. Auto seems to figure it out most of the time but sometimes Legacy is needed for older hardware.

Thanks for considering. Once you released SMB support, I saw the potential once there is Mountain Duck support. It would be great if it worked but understand if it's not possible based on choices for your app.

Thanks again!

dkocher commented 11 months ago

@dkocher Ok. Thats fair and I have read that to be the philosophy of smbj as well due to security reasons. I wonder if SMBv3 support could be the default, but is there a way to let the user allow SMBv1 as an option.

SMBv1 is not supported in the upstream library and therefore we cannot provide support.

hoydas commented 11 months ago

@dkocher Thanks again for your responses. I know it won't be a high priority (if at all!), but it looks like there is an older Java package, jCIFS, and some newer forks, that do support older SMB devices. (I totally understand that this may be wishful thinking on my part! Haha!)

dkocher commented 11 months ago

@dkocher Thanks again for your responses. I know it won't be a high priority (if at all!), but it looks like there is an older Java package, jCIFS, and some newer forks, that do support older SMB devices. (I totally understand that this may be wishful thinking on my part! Haha!)

We are reluctant to invest time in integrating yet another third party library to bring support for SMBv1.