跳转至

项目概述

欢迎使用QR Code文件传输工具!这是一个基于Python开发的创新文件传输解决方案,通过二维码技术实现文件或文件夹的安全传输。本项目提供了完整的Python源码和独立可执行文件两种使用方式,适合各种场景下的文件传输需求。

项目简介

QR Code文件传输工具是一个轻量级但功能强大的文件传输解决方案,它利用二维码作为数据载体,实现了无需网络连接的文件传输。该工具支持文件压缩、Base64编码、数据分块、二维码生成与读取等完整流程,并集成了基于哈希链的区块链可追溯功能,确保传输过程的安全性和可验证性。

Sources: README.md

核心功能

二维码生成(发送端)

  • 将文件或文件夹压缩为ZIP格式
  • 转换为Base64编码
  • 生成包含元数据的二维码(任务ID、总个数、当前索引、数据块、哈希值)
  • 按设定时间循环显示二维码

二维码读取(接收端)

  • 从屏幕捕获二维码
  • 自动识别多个二维码
  • 校验数据完整性
  • 还原为原始文件或文件夹

区块链可追溯

  • 基于哈希链的操作记录
  • 每个操作生成哈希块
  • 支持链完整性验证
  • 确保操作可追溯、不可篡改

Sources: README.md

系统架构

graph TD
    A[用户输入文件/文件夹] -->|发送端| B[压缩为ZIP]
    B --> C[计算哈希值]
    C --> D[Base64编码]
    D --> E[分割数据块]
    E --> F[生成二维码]
    F --> G[循环显示二维码]
    G -->|记录操作| H[哈希链]

    I[屏幕捕获] -->|接收端| J[识别二维码]
    J --> K[解析数据]
    K --> L[验证哈希]
    L --> M[合并数据块]
    M --> N[Base64解码]
    N --> O[解压缩]
    O --> P[还原文件]
    P -->|记录操作| H

    H --> Q[完整性验证]

Sources: README.md, main.py

项目结构

qrcode_transfer/
├── main.py              # 主程序入口(完整功能)
├── send.py              # 发送端入口(轻量版)
├── receive.py           # 接收端入口(完整版)
├── config.ini           # 配置文件
├── requirements.txt     # 依赖库列表
├── build.bat            # 一键打包脚本
├── dist/                # 打包后的可执行文件
│   ├── qr-send.exe      # 发送端(~23MB)
│   └── qr-receive.exe   # 接收端(~81MB)
└── modules/             # 功能模块
    ├── config_manager.py # 配置管理
    ├── config_init.py    # 配置初始化
    ├── logger.py         # 日志管理
    ├── compressor.py     # 压缩解压缩
    ├── encoder.py        # base64编码解码
    ├── qrcode_generator.py # 二维码生成
    ├── displayer.py      # 二维码显示
    ├── qrcode_reader.py  # 二维码识别
    ├── validator.py      # 数据校验
    └── blockchain.py     # 哈希链管理

Sources: README.md

技术栈

技术/库 用途 使用端
Python 3.8+ 开发语言 两端
qrcode[pil] 二维码生成 发送端
pillow 图像处理 两端
pyzbar 二维码识别 接收端
opencv-python 图像处理 接收端
pyautogui 屏幕捕获 接收端
pycryptodome 哈希计算 两端
tkinter GUI 显示 发送端
numpy 数组处理 接收端

Sources: README.md

应用场景

本工具适用于以下场景: - 无网络环境下的文件传输 - 需要物理隔离的安全环境 - 跨设备临时文件共享 - 教学演示与技术展示 - 区块链可追溯性需求场景

下一步

想要开始使用QR Code文件传输工具?请继续阅读: - 快速开始 - 了解如何快速上手使用本工具 - 环境配置 - 学习如何配置开发环境 - 安装依赖 - 了解项目依赖的安装方法