版本8新增了从Android和iOS发送文件夹的选项
Android下载:
如果您更喜欢侧载,可以在发布页面获取android_FlyingCarpet.apk
。
iOS下载:
或在App Store搜索"Flying Carpet File Transfer"。
Linux、macOS和Windows版本可在发布页面获取。提供安装程序和独立可执行版本。
Flying Carpet
通过临时WiFi在Android、iOS、Linux、macOS和Windows之间发送和接收文件。无需共享网络或蜂窝连接,只需两台具有WiFi芯片且距离较近的设备即可。
没有U盘?无法访问无线网络?需要在不同文件系统之间移动大于2GB的文件但不想设置网络共享?试试这个!
截图:
使用方法:
Linux: 从发布页面下载.AppImage
文件获取独立版本,或如果您使用基于Debian的发行版,下载.deb
文件并使用apk
或dpkg
安装。
macOS: 从发布页面下载.dmg
磁盘映像文件。双击挂载它,并将其中的.app
包拖到您的应用程序文件夹。或者如果您使用Homebrew,运行brew install flying-carpet
。
Windows: 从发布页面下载.msi
安装程序,或下载FlyingCarpet.exe
获取独立版本。
编译说明:
-
安装Rust。
-
运行
cargo install tauri-cli
安装Tauri。 -
仅限Mac:安装XCode。打开
FlyingCarpetMac/FlyingCarpetMac/FlyingCarpetMac.xcodeproj
并构建它。 -
对于Linux,安装依赖项。Ubuntu 20示例:
sudo apt install libsoup2.4* libjavascriptcoregtk* libgdk-pixbuf2.0* librust-pango-sys-dev libgdk3.0* librust-atk-dev librust-atk-sys-dev librust-gdk* libwebkit2gtk* librsvg2-dev
- 运行
cargo tauri dev
以运行开发版本,或运行cargo tauri build
以创建发布版本。
限制:
-
苹果设备只能与安卓、Linux和Windows之间传输,因为它们不能再以编程方式运行热点。苹果设备之间的传输请使用AirDrop。
-
使用时会禁用您的无线网络连接。(Windows或安卓作为热点主机时不适用。)
-
在特别长的传输过程中,macOS有时会切换回有网络连接的无线网络。
-
安卓版本至少需要Android 8/API级别26。安卓版本在某些小米、MIUI或鸿蒙设备上不工作,可能其他类安卓系统也不行。我没有这些设备所以无法测试,但似乎是因为缺乏对LocalOnlyHotspot API的支持。已确认至少在一款小米手机上可以工作。
-
需要Windows 10或更高版本。
-
Linux版本是在Linux Mint上开发和测试的。我主要希望它能在基于Debian的发行版上运行。如果可以的话,我会尝试帮助解决其他问题,但由于我没有备用机器,可能无法做到。在Fedora上运行时至少出现过一个问题,可能与SELinux有关,但我不太确定。
-
有时在桌面平台上点击取消按钮后,操作系统可能需要一些时间才能完成加入或创建热点的尝试。请只点击一次取消按钮并等待几秒钟。这听起来应该很容易修复,但上次我尝试时并非如此。
计划功能
-
使用蓝牙进行连接协商(而不是扫描二维码或手动输入)?
-
在iOS分享菜单中添加Flying Carpet快捷方式。
可能会被问到的问题:
-
这不是一个Go仓库吗? 是的,螃蟹化已经降临到了地鼠身上。在Go/Qt范式中有几个问题我不知道如何解决,特别是在Windows上:无法制作单文件可执行文件,需要以管理员身份运行,以及必须将WiFi Direct DLL写入临时文件夹并在运行时链接到它,因为Go不能与MSVC一起工作。此外,使用
tokio
/async
和windows-rs
很有趣,Windows网络部分就是用这些编写的。GUI框架现在是Tauri,它在所有平台上提供原生体验,占用空间非常小。安卓版本用Kotlin编写,代码在此仓库中。iOS版本用Swift编写,代码不公开。 -
你使用SHA-256从密码中派生密钥。这不是很糟糕吗?你不应该使用像Scrypt或Argon2这样的基于密码的密钥派生函数吗? 我之前确实这么做了,但这并非严格必要,因为这些密钥只在文件传输期间使用。要拦截传输中的数据,攻击者需要在热点网络上,而热点网络受WPA2保护,所以他们需要偷看密码或二维码。改用SHA-256是因为当我添加移动版本时,在所有平台上都找不到好的Scrypt或Argon2实现。
-
如果已经有WPA2,为什么还要使用AES-GCM呢? 当我2017年开始这个项目时,我试图允许在macOS上使用不需要认证的IBSS WiFi网络。那时我使用了错误的加密方式(而且使用不当),后来我添加了AES-GCM,因为它是我在Go、Swift、Kotlin和现在的Rust中唯一能找到的好的、官方的AEAD实现。如果有密码学专家读到这里发现我仍然在犯傻,请告诉我。
如果你使用过Flying Carpet,请发送反馈至theron@spiegl.dev。感谢你的关注!也请查看https://github.com/spieglt/cloaker、https://cloaker.mobi和https://github.com/spieglt/whatfiles。