跳转到主要内容

简单的加密文件传输服务

项目描述

Expedite

简单的加密文件传输服务

简介

Expedite是一个简单的加密文件传输服务,允许人们在没有依赖第三方文件共享服务(并且不断担心他们的数据可能如何被使用)或感到需要公开可见的IP地址(并且不断担心脚本小子攻击您的计算机)的情况下,相互同步共享资源。

Expedite服务器可以部署在具有可由Expedite客户端用户发现的IP地址的虚拟专用服务器上,以代理文件内容。使用WebSockets进行的传输使用128位高级加密标准进行端到端加密,服务器仅将不可识别的活动记录到易失性内存。

Expedite 目前处于测试阶段,如果您喜欢项目的发展方向,请考虑通过给项目仓库加星、提交软件错误或功能请求的问题报告、为项目代码库做出贡献或赞助我以帮助维护服务器,并让我继续从事更多类似的开源项目。

提供的服务

您可以选择部署自己的Expedite服务器以从您的Expedite客户端用户组中代理文件内容,或者您可以使用以下由我设置的公开服务器。选择靠近您用户组的服务器可以帮助提高传输的性能和可靠性。如果您希望在此列出您的服务器,请提交一个pull请求。

  • 亚特兰大,GA - ws://expedite-atla.apexaltruism.net:6969
  • 孟买,MH - ws://expedite-mumb.apexaltruism.net:6969

示意图

客户端 - 桥接 - 信息

客户端 - 桥接 - 交付 - 静态

客户端 - 桥接 - 收集 - 静态

客户端 - 桥接 - 交付 - 进度

客户端 - 桥接 - 收集 - 进度

客户端 - 提示 - 帮助

客户端 - 提示 - 交付 - 帮助

客户端 - 提示 - 收集 - 帮助

客户端 - 提示 - 交付 - 静态

客户端 - 提示 - 收集 - 静态

客户端 - 提示 - 交付 - 进度

客户端 - 提示 - 收集 - 进度

服务器 - 代理

安装

开发

  1. 确保已安装所需的工具和依赖项。
    $ sudo dnf install python3 python3-virtualenv python3-pip git poetry
    
  2. 将代码库分叉并克隆到本地存储。
    $ git clone git@github.com:$(whoami)/expedite.git
    
  3. 使项目克隆位置为当前工作目录。
    $ cd expedite
    
  4. 为安装项目依赖项创建虚拟环境。
    $ virtualenv venv
    
  5. 在继续之前激活新创建的虚拟环境。
    $ source venv/bin/activate
    
  6. 安装项目代码库及其依赖项。
    (venv) $ poetry install
    

使用

从PyPI

  1. 确保已安装所需的工具和依赖项。
    $ sudo dnf install python3 python3-virtualenv python3-pip
    
  2. 为安装项目依赖项创建虚拟环境。
    $ virtualenv venv
    
  3. 在继续之前激活新创建的虚拟环境。
    $ source venv/bin/activate
    
  4. 从Python包索引安装项目代码库。
    (venv) $ pip3 install expedite
    

从GitHub

  1. 访问项目仓库的 GitHub Actions 页面。
    https://github.com/gridhead/expedite/actions
    
  2. 要获取适用于 GNU/Linux 发行版 的自动化构建,请访问以下页面。
    https://github.com/gridhead/expedite/actions/workflows/gnul.yml
    
  3. 要获取适用于 Microsoft Windows 的自动化构建,请访问以下页面。
    https://github.com/gridhead/expedite/actions/workflows/mswn.yml
    
  4. 如果它们在最近的流程运行中不可用,请请求构建。
    https://github.com/gridhead/expedite/issues
    

执行

服务器

  1. 确保激活先前创建的虚拟环境。
    $ source venv/bin/activate
    
  2. 执行以下命令以查看项目的帮助主题。
    (venv) $ ed-server --help
    
    Usage: ed-server [OPTIONS]
    
    Options:
      -a, --addr TEXT           Set the interface for the service endpoint
                                [default: 127.0.0.1]
      -p, --port INTEGER RANGE  Set the port value for the service endpoint
                                [default: 8080; 64<=x<=65535]
      --version                 Show the version and exit.
      --help                    Show this message and exit.
    
  3. 使用以下命令启动代理服务。
    (venv) $ ed-server --addr 0.0.0.0 --p 9090
    
    1. 代理服务将在IPv4地址(即 0.0.0.0)和特定端口(即 9090)上运行。
    2. 完成时,可以通过发送键盘中断(即 Ctrl + C)停止代理服务。
  4. 注意IP地址或主机名,供客户端连接使用。
    ip a
    

客户端

  1. 确保激活先前创建的虚拟环境。
    $ source venv/bin/activate
    
  2. 执行以下命令以查看项目的帮助主题。
    (venv) $ ed-server --help
    
    Usage: ed-client [OPTIONS] COMMAND [ARGS]...
    
    Options:
      -h, --host TEXT           Set the address for the service endpoint
                                [required]
      -t, --time INTEGER RANGE  Set the expiry period for participants  [default:
                                15; 5<=x<=30]
      -e, --endo TEXT           Set the identity of the opposing client
      --version                 Show the version and exit.
      --help                    Show this message and exit.
    
    Commands:
      recv  Collect file through an encrypted transfer
      send  Deliver file through an encrypted transfer
    

交付

  1. 执行以下命令以查看 SEND 子命令的帮助主题。
    (venv) $ ed-client send --help
    
    Usage: ed-client send [OPTIONS]
    
      Deliver file through an encrypted transfer
    
    Options:
      -p, --pswd TEXT           Set the password for delivering encryption
                                [default: 123972B4]
      -f, --file PATH           Set the filepath for delivering to network
                                [required]
      -s, --size INTEGER RANGE  Set the unit size for file chunking (in B)
                                [default: 262144; 1024<=x<=524288]
      --help                    Show this message and exit.
    
  2. 如果交付客户端在收集客户端之前加入网络,请执行以下命令。
    (venv) $ ed-client --host ws://localhost:9090 --time 30 send --file /path/to/file.extn --pswd expedite --size 131072
    
    [2024-07-06 11:52:10] Expedite Client v0.1.0a2
    [2024-07-06 11:52:10] Addr. ws://localhost:9090
    [2024-07-06 11:52:10] Pass. expedite
    [2024-07-06 11:52:10] Plan. DELIVERING
    [2024-07-06 11:52:10] Wait. 30 seconds
    [2024-07-06 11:52:10] Please share your acquired identity to begin interaction.
    [2024-07-06 11:52:10] Attempting to connect to the network.
    [2024-07-06 11:52:10] Successfully connected to the network.
    [2024-07-06 11:52:10] You are now identified as 01276D06 in the network.
    
    1. 交付客户端正在尝试连接到部署在 ws://localhost:9090 的代理服务。
    2. 交付客户端有一个 30秒 的非活动超时,超时后将自动断开连接。
    3. 交付客户端已获得 01276D06 的标识符,收集客户端可以使用它进行发现。
    4. 交付客户端正在尝试从 /path/to/file.extn 位置共享名为 file.extn 的文件。
    5. 交付客户端使用 expedite 密码以128位AES加密加密文件内容。
    6. 交付客户端将分批处理大小为 131072字节128KiB 的数据块进行交付。
    7. 交付客户端的用户必须共享其 01276D06 标识符和密码以开始交付过程。
    8. 如果收集客户端以错误模式打开程序,发送客户端将断开与网络的连接。
  3. 如果发送客户端在收集客户端之后加入网络,请执行以下命令。
    (venv) $ ed-client --host ws://localhost:9090 --time 30 --endo DEADCAFE send --file /path/to/file.extn --pswd expedite --size 131072
    
    [2024-07-06 12:02:09] Expedite Client v0.1.0a2
    [2024-07-06 12:02:09] Addr. ws://localhost:9090
    [2024-07-06 12:02:09] Pass. expedite
    [2024-07-06 12:02:09] Plan. DELIVERING
    [2024-07-06 12:02:09] Wait. 30 seconds
    [2024-07-06 12:02:09] Please wait for DEADCAFE to begin interaction.
    [2024-07-06 12:02:09] Attempting to connect to the network.
    [2024-07-06 12:02:09] Successfully connected to the network.
    [2024-07-06 12:02:09] You are now identified as BA40BB0F in the network.
    
    1. 交付客户端正在尝试连接到部署在 ws://localhost:9090 的代理服务。
    2. 交付客户端有一个 30秒 的非活动超时,超时后将自动断开连接。
    3. 发送客户端已获得身份标识 BA40BB0F,收集客户端可以使用它进行发现。
    4. 交付客户端正在尝试从 /path/to/file.extn 位置共享名为 file.extn 的文件。
    5. 交付客户端使用 expedite 密码以128位AES加密加密文件内容。
    6. 交付客户端将分批处理大小为 131072字节128KiB 的数据块进行交付。
    7. 发送客户端的用户期望具有身份标识 DEADCAFE 的收集客户端开始交互。
    8. 如果收集客户端以错误模式打开程序,发送客户端将断开与网络的连接。
  4. 如果发送客户端到代理服务的平均延迟低于 100ms,考虑增加数据块大小以改善发送过程的稳定性。
  5. 如果发送客户端到代理服务的平均延迟高于 100ms,考虑减小数据块大小以改善发送过程的表现。
  6. 让发送过程完成,或在需要时通过发送键盘中断(即 Ctrl + C)终止正在进行的发送过程。

收集

  1. 执行以下命令以查看 RECV 子命令的帮助主题。
    Usage: ed-client recv [OPTIONS]
    
      Collect file through an encrypted transfer
    
    Options:
      -p, --pswd TEXT  Set the password for collecting encryption  [required]
      --help           Show this message and exit.
    
  2. 如果收集客户端在发送客户端之前加入网络,请执行以下命令。
    (venv) $ ed-client --host ws://localhost:8080 --time 30 recv --pswd expedite
    
    [2024-07-06 12:57:43] Expedite Client v0.1.0a2
    [2024-07-06 12:57:43] Addr. ws://localhost:8080
    [2024-07-06 12:57:43] Pass. expedite
    [2024-07-06 12:57:43] Plan. COLLECTING
    [2024-07-06 12:57:43] Wait. 30 seconds
    [2024-07-06 12:57:43] Please share your acquired identity to begin interaction.
    [2024-07-06 12:57:43] Attempting to connect to the network.
    [2024-07-06 12:57:43] Successfully connected to the network.
    [2024-07-06 12:57:43] You are now identified as 13755346 in the network.
    
    1. 收集客户端正在尝试连接到部署在 ws://localhost:9090 的代理服务。
    2. 收集客户端有一个 30秒 的非活动超时,超过此时间将自动断开连接。
    3. 收集客户端已获得身份标识 13755346,发送客户端可以使用它进行发现。
    4. 收集客户端使用密码 expedite 使用128位AES加密解密文件内容。
    5. 收集客户端的用户必须共享其身份标识 13755346 和密码以开始收集过程。
    6. 如果发送客户端以错误模式打开程序,收集客户端将断开与网络的连接。
  3. 如果收集客户端在发送客户端之后加入网络,请执行以下命令。
    (venv) $ ed-client --host ws://localhost:8080 --time 30 --endo DEADCAFE recv --pswd expedite
    
    [2024-07-06 12:55:30] Expedite Client v0.1.0a2
    [2024-07-06 12:55:30] Addr. ws://localhost:8080
    [2024-07-06 12:55:30] Pass. expedite
    [2024-07-06 12:55:30] Plan. COLLECTING
    [2024-07-06 12:55:30] Wait. 30 seconds
    [2024-07-06 12:55:30] Please wait for DEADCAFE to begin interaction.
    [2024-07-06 12:55:30] Attempting to connect to the network.
    [2024-07-06 12:55:30] Successfully connected to the network.
    [2024-07-06 12:55:30] You are now identified as 13AA7DB2 in the network.
    
    1. 收集客户端正在尝试连接到部署在 ws://localhost:9090 的代理服务。
    2. 收集客户端有一个 30秒 的非活动超时,超过此时间将自动断开连接。
    3. 收集客户端已获得身份标识 13AA7DB2,发送客户端可以使用它进行发现。
    4. 收集客户端使用密码 expedite 使用128位AES加密解密文件内容。
    5. 收集客户端的用户必须共享其身份标识 13AA7DB2 和密码以开始收集过程。
    6. 如果发送客户端以错误模式打开程序,收集客户端将断开与网络的连接。
  4. 让收集过程完成,或在需要时通过发送键盘中断(即 Ctrl + C)终止正在进行的收集过程。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

expedite-0.1.0a5.tar.gz (517.5 kB 查看哈希值)

上传时间 源代码

构建分发

expedite-0.1.0a5-py3-none-any.whl (563.4 kB 查看哈希值)

上传于 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面