

O si prefiere Sideload, android_FlyingCarpet.apk está disponible en la página de versiones.

O busque en la tienda de aplicaciones para "transferencia de archivos de alfombra voladores".
Envíe y reciba archivos entre Android, iOS, Linux, MacOS y Windows a través de AD HOC WiFi. No se requiere una conexión de red o celda compartida, solo dos dispositivos con chips WiFi a corta distancia.
¿No tienes una unidad flash? ¿No tienes acceso a una red inalámbrica? ¿Necesita mover un archivo más grande de 2 GB entre diferentes sistemas de archivos pero no quiere configurar una red compartida? ¡Pruébalo!
Video de demostración





Linux: descargue el archivo .AppImage de la página de comunicados para una versión independiente, o si está en una distribución basada en Debian, descargue el archivo .deb e instálelo con apk o dpkg .
MacOS: descargue el archivo de imagen de disco .dmg de la página de comunicados. Haga doble clic para montarlo y arrastre el paquete .app dentro de su carpeta de aplicaciones. O si usa Homebrew, ejecute brew install flying-carpet .
Windows: descargue el instalador .msi de la página de versiones o FlyingCarpet.exe para una versión independiente.
Instalar óxido.
Ejecute cargo install tauri-cli para instalar Tauri.
Solo Mac: instale xcode. Abierto FlyingCarpetMac/FlyingCarpetMac/FlyingCarpetMac.xcodeproj y construirlo.
Para Linux, instale dependencias. Ubuntu 20 Ejemplo:
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 para ejecutar una versión de desarrollo o cargo tauri build para crear artefactos de lanzamiento. Los dispositivos Apple solo pueden transferir a/desde Android, Linux y Windows, ya que ya no pueden ejecutar puntos calientes. Use AirDrop en su lugar para transferencias de manzana a manzana.
Desactiva su conexión inalámbrica a Internet mientras está en uso. (No se aplica a Windows o Android al alojar el punto de acceso).
Los macOS a veces vuelven a una red inalámbrica con conectividad a Internet durante transferencias particularmente largas.
La versión de Android requiere al menos Android 8/API Nivel 26. La versión de Android no funciona en algunos dispositivos Xiaomi, Miui o Harmonyos, y posiblemente otros OSE similares a Android. No soy dueño de estos dispositivos y, por lo tanto, no puedo probar, pero parece que esto se debe a la falta de apoyo para la API localonlyhotspot. Se ha confirmado que funciona en al menos un teléfono Xiaomi.
Requiere Windows 10 o posterior.
La versión de Linux fue desarrollada y probada en Linux Mint. Principalmente tengo la intención de que se ejecute en distribuciones basadas en Debian. Intentaré ayudar a solucionar problemas de otros si puedo, pero es posible que no pueda hacerlo, ya que no tengo acceso a máquinas de repuesto. Ha habido al menos un problema en Fedora, posiblemente a Selinux, pero realmente no lo sé.
A veces, cuando el botón Cancelar se presiona en las plataformas de escritorio, el sistema operativo puede tardar el sistema operativo para terminar de unirse o crear un punto de acceso. Solo haga clic en el botón Cancelar una vez y espere unos segundos. Esto parece que debería ser fácil de solucionar, pero la última vez que lo intenté no lo fue.
Bluetooth para la negociación de conexión (en lugar de escaneo de código QR o entrada manual)?
Agregue el atajo de alfombra volador al menú de compartir iOS.
¿No era esto un repositorio? Sí, la carcinización ha sido para el Gopher. Hubo varios problemas que no sabía cómo resolver en el paradigma GO/QT, especialmente con Windows: no poder hacer un ejecutable de un solo archivo, la necesidad de ejecutar como administrador y tener que escribir el DLL directo WiFi a una carpeta TEMP y vincularlo en tiempo de ejecución porque Go no funciona con MSVC. Además, fue divertido usar tokio / async y windows-rs , con los cuales se escriben las porciones de red de Windows. El marco GUI ahora es Tauri, que brinda una experiencia nativa en todas las plataformas con una huella muy pequeña. La versión de Android está escrita en Kotlin y el código está en este repositorio. La versión de iOS está escrita en Swift y el código no es público.
Estás utilizando SHA-256 para derivar la clave de una contraseña. ¿No es malo? ¿No debería usar una función de derivación de clave basada en contraseña como Scrypt o Argon2? Estaba haciendo esto antes, pero no era estrictamente necesario porque estas claves solo se usan durante la transferencia de archivos. Para que un atacante intercepte los datos en tránsito, necesitaría estar en la red de puntos de acceso, lo cual está protegido por WPA2, por lo que tendrá que hombros con la contraseña o el código QR. El cambio a SHA-256 se realizó porque no pude encontrar una buena implementación Scrypt o Argon2 en todas las plataformas cuando agregué las versiones móviles.
¿Por qué estás usando AES-GCM si ya hay WPA2 entonces? Cuando comencé a trabajar en este proyecto en 2017, estaba tratando de permitir redes WiFi IBSS en macOS que no usaban autenticación. Estaba usando el cifrado incorrecto (y incorrectamente) entonces, y luego agregué AES-GCM porque es la única implementación de AEAD buena y oficial que pude encontrar en todos los GO, Swift, Kotlin y ahora Rust. Si algún criptógrafo lee esto y descubren que todavía estoy siendo tonto, hágamelo saber.
Si ha usado la alfombra voladora, envíe comentarios a [email protected]. ¡Gracias por tu interés! Consulte también https://github.com/spieglt/cloaker, https://cloaker.mobi y https://github.com/spieglt/whatfiles.