Ce projet est soutenu par les sponsors GitHub.
croc
est un outil qui permet à deux ordinateurs de transférer simplement et en toute sécurité les fichiers et les dossiers. AFAIK, CROC est le seul outil de transfert de fichiers CLI qui fait tous les éléments suivants:
permet à deux ordinateurs de transférer des données (à l'aide d'un relais)
Fournit un cryptage de bout en bout (en utilisant Pake)
Active les transferts de plate-forme multiples faciles (Windows, Linux, Mac)
Permet plusieurs transferts de fichiers
permet de reprendre les transferts qui sont interrompus
le serveur local ou le port de port n'est pas nécessaire
IPv6-First avec iPv4 Fallback
peut utiliser le proxy , comme Tor
Pour plus d'informations sur croc
, consultez mon article de blog ou lisez une récente interview que j'ai faite.
Téléchargez la dernière version de votre système ou installez une version à partir de la ligne de commande:
curl https://getcroc.schollz.com | bash
Sur MacOS, vous pouvez installer la dernière version avec Homebrew:
brew install croc
Sur MacOS, vous pouvez également installer la dernière version avec Macports:
sudo port selfupdate sudo port install croc
Sur Windows, vous pouvez installer la dernière version avec Scoop, Chocolatey ou Winget:
scoop install croc
choco install croc
winget install schollz.croc
Sur Unix, vous pouvez installer la dernière version avec Nix:
nix-env -i croc
Sur Alpine Linux, vous devez d'abord installer les dépendances:
apk add bash coreutils wget -qO- https://getcroc.schollz.com | bash
Sur Arch Linux, vous pouvez installer la dernière version avec pacman
:
pacman -S croc
Sur Fedora, vous pouvez installer avec dnf
:
dnf install croc
Sur Gentoo, vous pouvez installer avec portage
:
emerge net-misc/croc
Sur Termux, vous pouvez installer avec pkg
:
pkg install croc
Sur FreeBSD, vous pouvez installer avec pkg
:
pkg install croc
Sur Linux, MacOS et Windows, vous pouvez installer à partir de Conda-Forge dans le monde avec pixi
:
pixi global install croc
ou dans un environnement particulier avec conda
:
conda install --channel conda-forge croc
Ou, vous pouvez installer Go et construire à partir de la source (nécessite GO 1.17+):
go install github.com/schollz/croc/v10@latest
Sur Android, il existe une application F-Droid tierdirée disponible en téléchargement.
Pour envoyer un fichier, faites simplement:
$ croc send [file(s)-or-folder] Sending 'file-or-folder' (X MB) Code is: code-phrase
Ensuite, pour recevoir le fichier (ou le dossier) sur un autre ordinateur, vous pouvez simplement faire
croc code-phrase
La phrase de code est utilisée pour établir un accord de clé (PAKE) par mot de passe qui génère une clé secrète pour l'expéditeur et le destinataire à utiliser pour le cryptage de bout en bout.
Il existe un certain nombre d'options configurables (voir --help
). Un ensemble d'options (comme le relais personnalisé, les ports et la phrase de code) peuvent être définis à l'aide de --remember
.
croc
sur Linux ou Mac OS Sur Linux et Mac OS, l'envoi et la réception sont légèrement différents pour éviter de divulguer le secret via le nom du processus. Sur ces systèmes, vous devrez exécuter croc
avec le secret comme variable d'environnement. Par exemple, pour recevoir avec le secret ***
:
CROC_SECRET=*** croc
Cela ne montrera que croc
dans la liste de processus d'un système multi-utilisateurs et ne fuira pas le secret.
Pour un système à utilisateur unique, le comportement par défaut peut être activé en permanence en fonctionnant
croc --classic
et confirmant. Exécutez à nouveau cette commande pour désactiver le mode classique.
Vous pouvez envoyer avec votre propre phrase de code (doit comporter plus de 6 caractères).
croc send --code [code-phrase] [file(s)-or-folder]
Par défaut, CROC incitera à écraser un fichier. Vous pouvez écraser automatiquement les fichiers à l'aide de l'indicateur --overwrite
(destinataire uniquement). Par exemple, recevez un fichier pour écraser automatiquement:
croc --yes --overwrite <code>
Vous pouvez tuyau en croc
:
cat [filename] | croc send
Dans ce cas, croc
utilisera automatiquement les données STDIN et envoie et attribuera un nom de fichier comme "Croc-Stdin-123456789". Pour recevoir à stdout
, vous pouvez toujours utiliser le --yes
, approuvera automatiquement le transfert et le tuyau sur stdout
.
croc --yes [code-phrase] > out
Tous les autres texte imprimés sur la console vont à stderr
afin qu'il n'interfère pas avec le message allant à stdout
.
Parfois, vous voulez envoyer des URL ou un texte court. En plus de la tuyauterie, vous pouvez facilement envoyer du texte avec croc
:
croc send --text "hello world"
Cela dira automatiquement au récepteur d'utiliser stdout
lorsqu'il recevra le texte afin qu'il soit affiché.
Vous pouvez utiliser un proxy comme connexion au relais en ajoutant une adresse de proxy avec --socks5
. Par exemple, vous pouvez envoyer via un relais Tor:
croc --socks5 "127.0.0.1:9050" send SOMEFILE
Vous pouvez choisir parmi plusieurs courbes elliptiques différentes à utiliser pour le cryptage en utilisant l'indicateur --curve
. Seul le destinataire peut choisir la courbe. Par exemple, recevez un fichier à l'aide de la courbe P-521:
croc --curve p521 <codephrase>
Les courbes disponibles sont le P-256, le P-348, le P-521 et le SIEC. P-256 est la courbe par défaut.
Vous pouvez choisir parmi plusieurs algorithmes de hachage différents. La valeur par défaut est l'algorithme xxhash
qui est rapide et approfondi. Si vous souhaitez optimiser pour la vitesse, vous pouvez utiliser l'algorithme imohash
qui est encore plus rapide, mais comme il échantillonne des fichiers (par rapport à la lecture du fichier entier), il peut déterminer à tort qu'un fichier est le même sur les deux ordinateurs transférés - bien que ce soit seulement Un problème si vous synchronisez des fichiers par rapport à l'envoi d'un nouveau fichier sur un ordinateur.
croc send --hash imohash SOMEFILE
Le relais est nécessaire pour agrandir les connexions parallèles entrantes et sortantes. Par défaut, croc
utilise un relais public mais vous pouvez également exécuter votre propre relais:
croc relay
Par défaut, il utilise les ports TCP 9009-9013. Assurez-vous de les ouvrir. Vous pouvez personnaliser les ports (par exemple croc relay --ports 1111,1112
), mais vous devez avoir un minimum de 2 ports pour le relais. Le premier port est destiné à la communication et les ports suivants sont utilisés pour le transfert de données multiplexé.
Vous pouvez envoyer des fichiers à l'aide de votre relais en entrant --relay
pour modifier le relais que vous utilisez si vous souhaitez héberger le vôtre.
croc --relay "myrelay.example.com:9009" send [filename]
Remarque, lors de l'envoi, il vous suffit d'inclure le premier port (le port de communication). Les ports suivants pour le transfert de données seront transmis à l'utilisateur du relais.
Si c'est plus facile, vous pouvez également exécuter un relais avec Docker:
docker run -d -p 9009-9013:9009-9013 -e CROC_PASS='YOURPASSWORD' schollz/croc
Assurez-vous d'inclure le mot de passe du relais, sinon toute demande sera rejetée.
croc --pass YOURPASSWORD --relay "myreal.example.com:9009" send [filename]
Remarque: Lorsque vous incluez --pass YOURPASSWORD
vous pouvez à la place passer un fichier avec le mot de passe, par exemple, --pass FILEWITHPASSWORD
.
Mit
croc
a traversé de nombreuses itérations, et je suis impressionné par toutes les grandes contributions! Si vous avez envie de contribuer, de quelque manière que ce soit, vous pouvez envoyer un problème, un PR ou poser une question.
Merci @Warner pour l'idée, @ tscholl2 pour les GIST de chiffrement, @skorokithakis pour le code sur la proxyation de deux connexions. Enfin merci d'avoir fait des demandes de traction @maximbaz, @meyermarcel, @girbons, @techtide, @heymatthew, @ lunsford94, @lummie, @jesuiscamille, @TheRefjord, @MarcosseGovia, @ csleong98, @afotescu, @callmefever, @ el-joja, @anatolyyyyyy, @goggle, @smileboywtu, @nicolashardy, @fbartels, @rkuprov, @hreese, @xenrox et ipar!