Code Monkey home page Code Monkey logo

alist-encrypt's People

Contributors

ashesofdream avatar j2rong4cn avatar traceless avatar wangdashuaihenshuai avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

alist-encrypt's Issues

是否考虑增加在前端进行解密

这样可以直接建立一个不需要访问者自行部项目署的网站,且相比目前的服务器解密,不受限于服务器带宽和服务器性能。可在网盘302模式的情况下也能加密解密数据,减少访问成本和流量成本。

加密顺序

背景是这样,有的电影发现无法通过rclone挂载alist的webdav上传天翼,尝试用alist-encrypt仍无法上传,提示405,但是用alist-encrypt在本地加密后再上传就没有问题,挺奇怪的;

还有本地加密的小文件会直接在目的路径生成加密文件,但是大一点的视频文件会在文件夹目录下生成.temp文件,且只在.temp目录下生成一个2g的文件,不知道是不是加密失败了,还是限制了大小

根据文件夹内是否有特定文件决定是否加密

功能建议

根据文件夹内是否有特定文件决定是否加密
例如:
文件夹内有 .alist-encrypt,则加密,文件内容可以为加密方式
文件夹内有 .alist-encrypt-ignore,则不加密
特定文件名可由后台配置

是否可以考虑文件夹加密?

目前好像只能对文件名进行加密,但是如果有多层目录,如果目录名不加密,别人一看也可以猜出来是什么东西。是否可以考虑文件夹名加密?谢谢。

关于在alist-encrypt页面上直接使用复制功能无法加密文件的问题

环境

1.Alist使用官方脚本进行一键安装
2.Alist-encrypt使用Docker进行安装

问题

在配置完成后。自动加密上传以及下载均可以正常使用。但是Alist中存在着复制功能。可以直接将Dav中的文件复制到另外一个文件夹中。但是使用这个复制功能的话。Alist-encrypt将不会自动加密复制过去的文件。

功能建议

感觉可以增加新功能,
1:加密文件名的时候,连拓展名一起加密。
2:加密文件夹名

网页编码错误

我在config.json中配置了/baidu/ym-encrypt为加密目录,首次点进该目录时显示正常,f12的请求中只有请求源地址的两个list
image

当在这个页面刷新时,网页会出现乱码,其他文件夹没有这个问题
image
image

视频加载慢

加密之后,阿里云盘里的视频加载比较慢,不知道是不是部署在vps上的缘故,直接使用alist播放阿里云盘,加载速度比较快,套上这个加密之后视频加载速度慢了一些,而且用potplayer播放,有时还会报错。不知道部署在本地会不会好一些,

开源vue源码

方便修改

这个大概只是个待办事项 有空就搞搞吧

说说算法

我倒是学艺不精,但是还是有的想说说自己知道的点❤️((


因为对称加密是块加密

  • AES是可以拿来流加密的,如AES-CTR
  • RC4也属于对称加密算法
    硬盘上也经常使用AES-XTS,也是可以随机读取的,并不存在“块加密”的问题
    (PS: 这两天了解了一下 XTS,上面那句话是错的)

当前项目已添加RC4算法,安全性基本是无可挑剔了
RC4早就爆出不安全了😥…
2015 年 2 月发布的 RFC 7465 禁止在 TLS 中使用 RC4。

虽然对于这样的项目说,我觉得能某种意义上混淆明文就已经能达到目的了,但是还是可以采用更安全的算法😘
就这点的话,安全性来说ChaCha20-Poly1305可能更好,当然AES和chacha20是可以互换的


另外对于极致安全性来说,不要自己实现算法(我说的不是RC4,而是之前的mix混淆prototype,当然实现算法也是蛮有意思的嘛,“设计这个项目的初衷本身就是为了躲避云盘的扫描的”,我也很赞同这一点😄,我之前甚至想过直接把整个文件头部一段字节加密就行了,能抵御大部分扫描),而是参照已有实现会比较好,而且要了解如何正确实现(比如AES的ECB绝对不能用,CBC使用padding不当会有点问题)…


对称加密不方便分享密匙给对方

我没有看RC4是怎么实现的,但是感觉可以另外存密钥或者用文件名派生密钥来解决这个问题?


当然还是很感谢你有时间来维护和创造这个项目❤️

奇怪的需要重复上传两次

你好,我在 istoreOS 里使用docker按照介绍配置,在win使用RaiDrives挂载alist转化的webdav。
使用这个服务后,向加密文件夹复制文件时会提示文件不存在,然后云盘创建自动创建一个0kb同名文件,需要删除该文件重新上传才能正常加解密,阿里云盘和123云盘同样的效果,向未设置加密文件夹复制文件时一切正常,完全不清楚哪里的问题。

通过davfs挂载到目录后上传会失败

我是通过podman部署的,alist监听5244,通过本项目代理,监听5344
Linux上通过davfs挂载5344到目录,目录访问正常,但是上传会失败,表现是,上传后马上ls可以看到文件,稍后再ls就看不到了,应该是上传失败了。无论是否是加密目录都是如此。
davfs2项目地址https://savannah.nongnu.org/projects/davfs2
附上podman logs -f日志

@@request_info:  a1f42f7a-6297-4c54-9a48-7a423b1b1bc3 PROPFIND http://192.168.6.175:5244/dav/ {
  'user-agent': 'davfs2/1.7.0 neon/0.31.2',
  connection: 'TE',
  te: 'trailers',
  host: '192.168.6.175:5244',
  depth: '1',
  'content-length': '257',
  'content-type': 'application/xml',
  authorization: 'Basic YWrhtrhRtaW46Qkp88rhtrthDM3'
} false false
@@statusCode a1f42f7a-6297-4c54-9a48-7a423b1b1bc3 207 {
  'content-type': 'text/xml; charset=utf-8',
  date: 'Thu, 07 Mar 2024 03:59:34 GMT',
  'transfer-encoding': 'chunked'
}
响应关闭... a1f42f7a-6297-4c54-9a48-7a423b1b1bc3 http://192.168.6.175:5244/dav/
响应关闭... a1f42f7a-6297-4c54-9a48-7a423b1b1bc3 /dav/
@@decodeURI(fileName) NUC11
@@request_client:  PROPFIND http://192.168.6.175:5244/dav/NUC11/ {
  'user-agent': 'davfs2/1.7.0 neon/0.31.2',
  connection: 'TE',
  te: 'trailers',
  host: '192.168.6.175:5244',
  depth: '1',
  'content-length': '257',
  'content-type': 'application/xml',
  authorization: 'Basic YWrhtrhRtaW46Qkp88rhtrthDM3'
}
@@statusCode 207 {
  'content-type': 'text/xml; charset=utf-8',
  date: 'Thu, 07 Mar 2024 03:59:34 GMT',
  'content-length': '1048'
}
httpResp响应结束... /dav/NUC11/
@@request_info:  49e22f1b-5c06-433c-bc1f-3e3481ece411 LOCK http://192.168.6.175:5244/dav/NUC11/python362.chm {
  'user-agent': 'davfs2/1.7.0 neon/0.31.2',
  connection: 'TE',
  te: 'trailers',
  host: '192.168.6.175:5244',
  'content-length': '162',
  'content-type': 'application/xml',
  depth: '0',
  timeout: 'Second-1800',
  authorization: 'Basic YWrhtrhRtaW46Qkp88rhtrthDM3'
} false false
@@statusCode 49e22f1b-5c06-433c-bc1f-3e3481ece411 200 {
  'content-type': 'application/xml; charset=utf-8',
  'lock-token': '<1709710985>',
  date: 'Thu, 07 Mar 2024 03:59:34 GMT',
  'content-length': '420'
}
响应关闭... 49e22f1b-5c06-433c-bc1f-3e3481ece411 http://192.168.6.175:5244/dav/NUC11/python362.chm
响应关闭... 49e22f1b-5c06-433c-bc1f-3e3481ece411 /dav/NUC11/python362.chm

同时,通过davfs挂载alist是没问题的,上传功能正常
alist-encrypt的web端上传也正常,加密也没问题。目前仅发现上述问题

[BUG]配置 alist url 为 docker service name 会导致查看非加密数据异常

导致问题的代码:

result.data.raw_url = `${
headers.origin || (headers['x-forwarded-proto'] || ctx.protocol) + '://' + ctx.req.selfHost
}/redirect/${key}?decode=1&lastUrl=${encodeURIComponent(path)}`

如果 ctx.req.selfHost 我们配置的是 docker service 的名字,如下 ALIST_HOST: alist:5244

version: '3.3'
services:
  alist:
    image: 'xhofe/alist:latest'
    restart: always
    volumes:
      - '/etc/alist:/opt/alist/data'
    ports:
      - '5244:5244'
    environment:
      - PUID=0
      - PGID=0
      - UMASK=022
    container_name: alist
  alist-encrypt:
    image: prophet310/alist-encrypt:beta
    restart: unless-stopped
    container_name: alist-encrypt
    volumes:
      - ./alist-encrypt:/node-proxy/conf
    environment:
      TZ: Asia/Shanghai
      ALIST_HOST: alist:5244        # 建议加个设置项,类似这样
    ports:
      - '5344:5344'

就会导致在预处理非加密文件的展示的时候,网址被替换为

image

很容易注意到我们这浏览器中,用到了仅仅可以在 docker 网络中用的 hostname。这会导致我们的浏览器无法正确显示。

问题出现的原因

作者的目的是在相应非加密数据的时候,尽量不代理,走原 alist。但是意外导致了这个问题。

分享:快速迭代 node-proxy 模块的开发方法

分享一个vscode+ahk的开发小技巧,可以快速迭代模块。

这个项目下载下来后,只要node就可以跑起来,(预先打开alist)进入 node-proxy 文件夹,运行 `npm i --omit=dev`  `npm run serve`,马上就能跑起来。


我知道node,webpack有一种开发方式可以监听文件变化,保存后立即自动编译并热更新。不知道这个项目有没有,可能是 dev 指令,但没有下载完整依赖,运行不起来。

实际上可以用 vscode+ahk 加速,速度也很快。

原理:vscode 打开项目文件夹,编辑/修改后,点击某快捷键,之后由ahk接管,自动保存、自动重启serve进程。

以下代码:

app.js 修改标题便于检测:
```
process.title = "Alist-Encrypt.js";
```

ahk 绑定 f1 热键:
```
F1::
	WinGetTitle,Title, A
	if(InStr(Title, "alist-encrypt"))
	{
		if(InStr(Title, "●")) {
			send, ^{s}
		}
		WinGet, WindowPID, PID, Alist-Encrypt.js
		if (WindowPID) {
			RunWait, TaskKill /PID %WindowPID% /F, , Hide
		}
		sleep, 100
		WinGet, WindowPID, PID, Alist-Encrypt.js
		if (WindowPID) {
			RunWait, TaskKill /PID %WindowPID% /F, , Hide
		}
		Run, D:\software\alist-windows-amd64\start.bat
		; start.bat 里面 cd 至 encrypt/node-proxy, 然后 npm serve.
	}
return
```

[BUG]加密文件夹 Form 形式上传文件报错

基础信息

alist-encrypt: v0.3.0

操作方式

在 alist-encrypt 站点(port: 5344)

受试文件内容:
image

正常上传方式:Stream 方式上传单文件,可以正常查看。
image
image

表单上传方式:Form 方式上传单文件,上传的文件查看乱码。
image
image

故障分析

初步猜测是由于 form 上传方式时,数据格式不同,但 alist-encrypt 未特殊处理导致。

建议解决方式

单独处理 form 上传方式,只加密上传内容中的 content,form 的其它字段不加密。

参考文档:https://datatracker.ietf.org/doc/html/rfc7578

上传的文件没有成功加密

我修改了config.json中的encPath"encPath": ["/baidu/ym-encrypt"]
alist服务与此服务部署在服务器上,通过端口转发将5244和5344映射到本地进行操作
通过5344端口的网页打开此目录,使用网页右下角的功能进行上传之后,原视频并没有被加密,百度网盘也可以在线播放。

image
image
image

日志

image

文件转存功能

大佬方便问下文件转存功能啥时候上线嘛?感谢大佬

登录密码是否可配置?

目前登录密码是默认123456,是否可以设置成配置项?类似拉取docker下来,要改密码会比较麻烦。

与 rclone crypt 的兼容性?

我想将rclone的加密功能转到这个项目,对于那些被rclone加密的项目,我是否可以直接通过alist-encrypt加解密呢?

能否加上多线程下载

原因就是,夸克网盘,onedrive网盘限速有官方限速,增加多线程下载的话,加快观看速度。
估计需要本地缓存,然后在继续将文件下发,感觉这个功能不太好实现
如图,使用 motrix 多线程下载 夸克资源
image

decodeName can return unreadable chars

decodeName in ommonUtils.js is not working properly.

e.g file name=IMG_3191.heic due to the "_", it will goto decodeFolderName, then call decodeName.
i tested 10000+ files, few files have issue in that function, below is one example of returned { folderEncType, folderPasswd }:
{ folderEncType: '', folderPasswd: 'J�\x00�w' }

播放器图标加载异常

为什么用了这个项目之后,底部播放器的图标加载不出来了,我是搭建在甲骨文arm服务器上的,原版alist正常加载
屏幕截图 2023-04-30 170801

请求兼容aliyundrive,添加自定义文件后缀功能

您好,前几天fork了项目 试了下 目前如果不牵涉文件名加密的话一切正常. 开启文件名加密后,使用其他webdav挂载aliyundrive即:https://github.com/messense/aliyundrive-webdav 挂载后加密文件夹无法正常访问.其他webdav客户端正常. 另外rclone无法正常上传,使用curl上传正常.
请求添加自定义后缀名的功能.即:在配置文件里自定义后缀名的映射比如.xyz对应.mp4.这样可玩性更高😄.
感谢提供这么好的项目.

网页对加密的文件进行重命名异常

你好,测试发现:网页对加密的文件进行重命名,如果新的文件名过长,可以正常加密,但是解密失败,呈现的文件名前面多了org,并且中间存在空格,导致重命名失败。

感觉好慢?

测试了一个大文件
800mb的MP4,不算太大,挂载本机存储。本地浏览器播放是秒出的。
然而局域网(wifi)就需要缓存 8 秒,同样环境下,原5244只需缓存 2 秒。

挂载云盘也要缓存5~8秒。

是加密方式太复杂,还是需要处理的数据量大?

在线查看解密视频失败

背景:debian10 、 alist v3.33.0 、docker pull prophet310/alist-encrypt:beta
操作步骤:安装alist-encrypt之前,专门给alist一个域名;安装alist-encrypt之后,另装了个域名给alist-encrypt访问alist的入口;

现象:

  • 本地、阿里云、天翼云盘、onedrive 在线播放加密视频失败;表现为自动重新连接5次后,显示“加载失败”

  • onedrive 在线查看加密的txt失败:表现为Failed to fetch xxxurl AxiosError: Network Error

明文密码不要存储在本地的选项

#4 感觉这个很重要啊,可不可以设置这个加解密密码在运行时人工输入或者像上面这个issue提出的读取环境变量。不然密码明文存在硬盘上这个加密对于本地存储的文件就很鸡肋了。
我用这个的初衷是因为自己的webdev是搭建在自己的vps上的,但我没办法防止运营商查看我存在硬盘上的文件,所以需要进行加密。

是否可以考虑解密在客户端执行

目前测试发现一个问题,解密的速度比较慢,也受限于服务器带宽。是否可以考虑解密直接在客户端做,客户端直接调用对应网盘的能力,拿到数据之后,再进行解密。这样可以把数据传输放在客户端,而不会都放在服务器。

针对webdav做加解密

感觉可以只针对alist 的/dav 路径的webdav接口做加解密就行了,可以少很多适配不同网盘的工作量。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.