

Ou si vous préférez la mise en ligne, android_FlyingCarpet.apk est disponible sur la page des versions.

Ou recherchez dans l'App Store "Transfert de fichiers de tapis volant".
Envoyez et recevez des fichiers entre Android, iOS, Linux, MacOS et Windows via le WiFi ad hoc. Aucune connexion de réseau ou de cellule partagée ne requise, seulement deux appareils avec des puces WiFi à bout portant.
Vous n'avez pas de lecteur flash? Vous n'avez pas accès à un réseau sans fil? Besoin de déplacer un fichier supérieur à 2 Go entre différents systèmes de fichiers mais ne souhaitez pas configurer un partage de réseau? Essayez-le!
Vidéo de démonstration





Linux: Téléchargez le fichier .AppImage à partir de la page des versions pour une version autonome, ou si vous êtes sur une distribution basée sur Debian, téléchargez le fichier .deb et installez-le avec apk ou dpkg .
MacOS: Téléchargez le fichier image de disque .dmg à partir de la page des versions. Double-cliquez pour le monter et faites glisser le bundle .app à l'intérieur vers votre dossier Applications. Ou si vous utilisez Homebrew, exécutez brew install flying-carpet .
Windows: Téléchargez le programme d'installation .msi à partir de la page des versions, ou FlyingCarpet.exe pour une version autonome.
Installez la rouille.
Exécutez cargo install tauri-cli pour installer Tauri.
Mac uniquement: installer Xcode. Open FlyingCarpetMac/FlyingCarpetMac/FlyingCarpetMac.xcodeproj et construisez-le.
Pour Linux, installez les dépendances. Ubuntu 20 Exemple:
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 pour exécuter une version de développement ou une cargo tauri build pour créer des artefacts de sortie. Les appareils Apple ne peuvent transférer que vers / depuis Android, Linux et Windows car ils ne peuvent plus exécuter par programme. Utilisez AirDrop à la place pour les transferts Apple-Apple.
Désactive votre connexion Internet sans fil lors de l'utilisation. (Ne s'applique pas à Windows ou Android lors de l'hébergement du hotspot.)
MacOS revient parfois à un réseau sans fil avec une connectivité Internet lors de transferts particulièrement longs.
La version Android nécessite au moins le niveau Android 8 / API 26. La version Android ne fonctionne pas sur certains appareils Xiaomi, MIUI ou Harmonyos, et peut-être d'autres OSS de type Android. Je ne possède pas ces appareils et je ne peux donc pas tester, mais il semble que cela soit dû au manque de soutien à l'API localOnlyhotspot. Il a été confirmé pour fonctionner sur au moins un téléphone Xiaomi.
Nécessite Windows 10 ou version ultérieure.
La version Linux a été développée et testée sur Linux Mint. J'ai principalement l'intention qu'il fonctionne sur les distributions basées sur Debian. J'essaierai d'aider à dépanner les autres si je le peux, mais je ne pourrai peut-être pas le faire car je n'ai pas accès aux machines de rechange. Il y a eu au moins un problème sur Fedora, peut-être pour Selinux, mais je ne sais pas vraiment.
Parfois, lorsque le bouton Annuler est touché sur les plates-formes de bureau, il peut prendre du temps au système d'exploitation pour terminer d'essayer de rejoindre ou de créer un hotspot. Veuillez cliquer sur le bouton Annuler une seule fois et attendre quelques secondes. Cela semble que cela devrait être facile à réparer, mais la dernière fois que j'ai essayé, ce n'était pas le cas.
Bluetooth pour la négociation de connexion (au lieu de la numérisation du code QR ou de l'entrée manuelle)?
Ajoutez le raccourci de tapis volant au menu de partage iOS.
N'est-ce pas un repo de Go? Oui, la carcinisation est venue pour le Gopher. Il y avait plusieurs problèmes que je ne savais pas comment résoudre dans le paradigm Go / Qt, en particulier avec Windows: ne pas pouvoir faire un exécutable à un seul fichier, à s'exécuter en tant qu'administrateur, et avoir à rédiger la DLL directe WiFi dans un dossier temporaire et à lui lier à l'exécution, car GO ne fonctionne pas avec MSVC. De plus, c'était amusant d'utiliser tokio / async et windows-rs , avec lesquels les parties de réseautage Windows sont écrites. L'interface graphique est maintenant Tauri qui offre une expérience native sur toutes les plates-formes avec une très petite empreinte. La version Android est écrite en Kotlin et le code est dans ce référentiel. La version iOS est écrite en Swift et le code n'est pas public.
Vous utilisez SHA-256 pour dériver la clé d'un mot de passe. N'est-ce pas mal? Ne devriez-vous pas utiliser une fonction de dérivation de clé de mot de passe comme Scrypt ou Argon2? Je faisais cela avant, mais ce n'était pas strictement nécessaire car ces clés ne sont utilisées que pendant le transfert de fichiers. Pour qu'un attaquant intercepte les données en transit, il devrait être sur le réseau Hotspot, qui est protégé par WPA2, il aurait donc besoin d'épauler le mot de passe ou le code QR. Le changement de SHA-256 a été effectué car je n'ai pas pu trouver une bonne implémentation Scrypt ou Argon2 sur toutes les plateformes lorsque j'ai ajouté les versions mobiles.
Pourquoi utilisez-vous AES-GCM du tout s'il y a déjà WPA2 alors? Lorsque j'ai commencé à travailler sur ce projet en 2017, j'essayais de permettre les réseaux WiFi IBSS sur MacOS qui n'utilisaient pas l'authentification. J'utilisais alors le mauvais cryptage (et incorrectement), et plus tard, j'ai ajouté AES-GCM parce que c'est la seule mise en œuvre bonne et officielle de l'AEAD que j'ai pu trouver dans tout Go, Swift, Kotlin et maintenant Rust. Si des cryptographes lisent ceci et constatez que je suis toujours stupide, faites-le moi savoir.
Si vous avez utilisé le tapis volant, veuillez envoyer des commentaires à [email protected]. Merci pour votre intérêt! Veuillez également consulter https://github.com/spieglt/cloaker, https://cloaker.mobi et https://github.com/spieglt/whatfiles.