securefs icon indicating copy to clipboard operation
securefs copied to clipboard

Windows下似乎无法正常处理超长文件名

Open GlobalCBWK opened this issue 7 months ago • 3 comments

创建命令:

securefs c D:\cry7 --keyfile "Z:\a.pdf" --askpass --argon2-t 50 --argon2-m 1048576 --max-padding 8192 --case insensitive

使用的版本:

PS D:\Desktop\securefs-windows-amd64-release> .\securefs.exe version
securefs v1.1.0
Crypto++ 8.9
WinFsp 2.0

Hardware features available:
SSE2: true
SSE3: true
SSE4.1: true
SSE4.2: true
AVX: true
AVX2: true
AES-NI: true
CLMUL: true
SHA: true

今天在复制加密后的文件夹时出现了这样的错误:

Image

列出加密文件

PS D:\cry7> ls

    Directory: D:\cry7

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----           2025/5/20    16:12                NBBZXGJU37WI356YQGDYJQ8C37G44
-a---           2025/5/20    15:07            231 .config.pb
-a---           2025/5/20    21:52          12288 .long_names.db
-a---           2025/5/20    21:52           4290 DPF2SFAKCPM3S2UFBXS9KK88FMAKN3I9YXSHWVGC2KTH4MB2QXJ4QXKH9SJV2M3ZUAJQP6ZI92AY8...
-a---          2024/12/12    16:55      681370339 K6DAYBH2GXBXXDRFUXWNU5GFYMJHGBPFECVY2FD3SN6BJEXZ
-a---          2024/12/18     9:10      144508167 YG6PPNXKPIIEHFTKFXVI6W8C3NPI5YDUS4KG4UNQHHKN87G7NPZAC223Q6PA67NE8JIUUIGJ7PEY8...

发现超长文件名带省略号,且Windows无法正确处理这些文件(如复制)

PS D:\> cp -r D:\cry7 W:\
PS D:\> cd W:\cry7\
PS W:\cry7> ls

    Directory: W:\cry7

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----           2025/5/20    22:11                NBBZXGJU37WI356YQGDYJQ8C37G44
-a---           2025/5/20    15:07            231 .config.pb
-a---           2025/5/20    21:52          12288 .long_names.db
-a---           2025/5/20    21:52           4290 DPF2SFAKCPM3S2UFBXS9KK88FMAKN3I9YXSHWVGC2KTH4MB2QXJ4QXKH9SJV2M3ZUAJQP6ZI92AY8
-a---          2024/12/12    16:55      681370339 K6DAYBH2GXBXXDRFUXWNU5GFYMJHGBPFECVY2FD3SN6BJEXZ
-a---          2024/12/18     9:10      144508167 YG6PPNXKPIIEHFTKFXVI6W8C3NPI5YDUS4KG4UNQHHKN87G7NPZAC223Q6PA67NE8JIUUIGJ7PEY8

可以发现文件名后的省略号已经不存在了,尝试解密挂载以后文件消失

测试用到的文件名:

远古遗迹探索笔记整理初稿版本更新待校对内容备份仅供参考请勿外传重要资料需加密保存测试文件最终版备用勿删最终确认版终极完整版修订稿手把手搭建教学保证吃过用过的的都说好连江南皮革厂都复活了小姨子回来了黄鹤你不是王八蛋.txt

希望大佬解答,谢谢~❤❤❤❤

GlobalCBWK avatar May 20 '25 14:05 GlobalCBWK

补充一下,Windows已经开启长文件名 Image

GlobalCBWK avatar May 20 '25 14:05 GlobalCBWK

额,才发现Win32默认是不允许文件名以.结尾的,所以cp出错,把结尾的三个点扔掉了。securefs用的是比较底层的API,所以可以操作它们。

下个版本我把...改成___好了,不过只会对新生成的数据起效。对于现有的数据,你可以用Git Bash的cp进行操作。

netheril96 avatar May 20 '25 15:05 netheril96

原来...是securefs自己加的,我一开始还以为是Windows加的,感谢解答

昨天发现了一个小问题,在Windows下挂载然后用除Exlporer以外的程序读取文件会提示

PS D:\Desktop> gpg --no-symkey-cache --pinentry-mode ask --decrypt "D:\Desktop\tp.txt.gpg" | & "D:\Desktop\securefs-windows-amd64-release\securefs.exe" m D:\cry7 W:\mountpoint\ori --keyfile "D:\Documents\a.pdf" --askpass
gpg: AES256.CFB encrypted data
gpg: encrypted with 1 passphrase
[Info] [0000000000003934] [2025-05-21 06:52:52.353177100 UTC] [void *__cdecl securefs::FuseHighLevelOpsBase::build_ops::<lambda_c0d4c7d44d1731b01d48e7443cde100f>::operator ()(struct fuse_conn_info *) const:354]    Fuse operations initialized
The service securefs has been started.
[Error] [000000000000286C] [2025-05-21 06:53:10.973820600 UTC] [int __cdecl securefs::lite_format::FuseHighLevelOps::vgetattr(const char *,struct fuse_stat *,const struct fuse_context *):816]    Encountered exception class securefs::WindowsException when opening file /远古遗迹探索笔记整理初稿版本更新待校对内容备份仅供参考请勿外传重要资料需加密保存测试文件最 终版备用勿删最终确认版终极完整版修订稿手把手搭建教学保证吃过用过的的都说好连江南皮革厂都复活了小姨子回来了黄鹤你不是王八蛋.txt for read: error 33 另一个程序已锁定文件的一部分,进程无法访问。 (ReadFile)

这个情况可以稳定复现,例如访问挂载点里的视频,打开纯文本文件等等。但是如果是Exlporer的拖拽复制就没有报错。不过虽然报错也不影响文件的正常读取和写入,小问题目前看来不影响正常使用,就不单独开issue了

GlobalCBWK avatar May 21 '25 07:05 GlobalCBWK

原来...是securefs自己加的,我一开始还以为是Windows加的,感谢解答

昨天发现了一个小问题,在Windows下挂载然后用除Exlporer以外的程序读取文件会提示

PS D:\Desktop> gpg --no-symkey-cache --pinentry-mode ask --decrypt "D:\Desktop\tp.txt.gpg" | & "D:\Desktop\securefs-windows-amd64-release\securefs.exe" m D:\cry7 W:\mountpoint\ori --keyfile "D:\Documents\a.pdf" --askpass
gpg: AES256.CFB encrypted data
gpg: encrypted with 1 passphrase
[Info] [0000000000003934] [2025-05-21 06:52:52.353177100 UTC] [void *__cdecl securefs::FuseHighLevelOpsBase::build_ops::<lambda_c0d4c7d44d1731b01d48e7443cde100f>::operator ()(struct fuse_conn_info *) const:354]    Fuse operations initialized
The service securefs has been started.
[Error] [000000000000286C] [2025-05-21 06:53:10.973820600 UTC] [int __cdecl securefs::lite_format::FuseHighLevelOps::vgetattr(const char *,struct fuse_stat *,const struct fuse_context *):816]    Encountered exception class securefs::WindowsException when opening file /远古遗迹探索笔记整理初稿版本更新待校对内容备份仅供参考请勿外传重要资料需加密保存测试文件最 终版备用勿删最终确认版终极完整版修订稿手把手搭建教学保证吃过用过的的都说好连江南皮革厂都复活了小姨子回来了黄鹤你不是王八蛋.txt for read: error 33 另一个程序已锁定文件的一部分,进程无法访问。 (ReadFile)

这个情况可以稳定复现,例如访问挂载点里的视频,打开纯文本文件等等。但是如果是Exlporer的拖拽复制就没有报错。不过虽然报错也不影响文件的正常读取和写入,小问题目前看来不影响正常使用,就不单独开issue了

你是不是开了padding?

netheril96 avatar Jun 10 '25 08:06 netheril96

确实欸,如果关闭padding就不会有问题了

GlobalCBWK avatar Jun 11 '25 03:06 GlobalCBWK

另外貌似用1.1.1创建还是会出现...文件

GlobalCBWK avatar Jun 11 '25 04:06 GlobalCBWK

这两个问题都得下个版本才能修好

netheril96 avatar Jun 11 '25 04:06 netheril96

Fixed in https://github.com/netheril96/securefs/releases/tag/v2.0.0-beta1.

netheril96 avatar Jun 22 '25 08:06 netheril96