Este proyecto está respaldado por los patrocinadores de GitHub.
croc
es una herramienta que permite que dos computadoras transfieran los archivos y carpetas de forma simple y segura. AFAIK, Croc es la única herramienta de transferencia de archivos CLI que hace todo lo siguiente:
Permite que dos computadoras transfieran datos (usando un relé)
Proporciona cifrado de extremo a extremo (usando Pake)
Habilita transferencias de plataforma cruzada fáciles (Windows, Linux, Mac)
Permite múltiples transferencias de archivos
permite reanudar transferencias que se interrumpen
servidor local o puerto no necesario
IPv6-Primero con IPv4 Fallback
puede usar proxy , como tor
Para obtener más información sobre croc
, consulte mi publicación de blog o lea una entrevista reciente que hice.
Descargue la última versión para su sistema o instale una versión desde la línea de comandos:
curl https://getcroc.schollz.com | bash
En MacOS puede instalar el último lanzamiento con HomeBrew:
brew install croc
En MacOS también puede instalar la última versión con MacPorts:
sudo port selfupdate sudo port install croc
En Windows puede instalar el último lanzamiento con Scoop, Chocolatey o Winget:
scoop install croc
choco install croc
winget install schollz.croc
En UNIX puede instalar la última versión con Nix:
nix-env -i croc
En Alpine Linux, primero debe instalar dependencias:
apk add bash coreutils wget -qO- https://getcroc.schollz.com | bash
En Arch Linux puede instalar la última versión con pacman
:
pacman -S croc
En Fedora puede instalar con dnf
:
dnf install croc
En Gentoo puede instalar con portage
:
emerge net-misc/croc
En Termux puede instalar con pkg
:
pkg install croc
En FreeBSD puede instalar con pkg
:
pkg install croc
En Linux, MacOS y Windows puede instalar desde Conda-Forge a nivel mundial con pixi
:
pixi global install croc
o en un entorno particular con conda
:
conda install --channel conda-forge croc
O puede instalar Go y Build desde la fuente (requiere GO 1.17+):
go install github.com/schollz/croc/v10@latest
En Android hay una aplicación F-Droid de tercera parte disponible para descargar.
Para enviar un archivo, simplemente haga:
$ croc send [file(s)-or-folder] Sending 'file-or-folder' (X MB) Code is: code-phrase
Luego para recibir el archivo (o carpeta) en otra computadora, puede hacerlo
croc code-phrase
La frase del código se utiliza para establecer un acuerdo de clave autenticado con contraseña (Pake) que genera una clave secreta para que el remitente y el destinatario los usen para el cifrado de extremo a extremo.
Hay una serie de opciones configurables (ver --help
). Se puede establecer un conjunto de opciones (como relé personalizado, puertos y frase de código) utilizando --remember
.
croc
en Linux o Mac OS En Linux y Mac OS, el envío y la recepción es ligeramente diferente para evitar filtrar el secreto a través del nombre del proceso. En estos sistemas, deberá ejecutar croc
con el secreto como una variable de entorno. Por ejemplo, para recibir con el secreto ***
:
CROC_SECRET=*** croc
Esto mostrará solo croc
en la lista de procesos de un sistema de usuarios múltiples y no filtrará el secreto.
Para un sistema de usuario único, el comportamiento predeterminado puede habilitarse permanentemente ejecutándose
croc --classic
y confirmando. Ejecute este comando nuevamente para deshabilitar el modo clásico.
Puede enviar con su propia frase de código (debe ser más de 6 caracteres).
croc send --code [code-phrase] [file(s)-or-folder]
Por defecto, Croc solicitará si sobrescribir un archivo. Puede sobrescribir automáticamente los archivos utilizando el indicador --overwrite
(solo destinatario). Por ejemplo, reciba un archivo para sobrescribir automáticamente:
croc --yes --overwrite <code>
Puedes meter en croc
:
cat [filename] | croc send
En este caso, croc
usará automáticamente los datos de Stdin y enviará y asignará un nombre de archivo como "Croc-STDIN-123456789". Para recibir a stdout
, siempre puede usar el --yes
aprobará automáticamente la transferencia y la llevará a stdout
.
croc --yes [code-phrase] > out
Todo el otro texto impreso en la consola va a stderr
para que no interfiera con el mensaje que vaya a stdout
.
A veces quieres enviar URL o texto corto. Además de la tubería, puede enviar fácilmente texto con croc
:
croc send --text "hello world"
Esto le indicará automáticamente al receptor que use stdout
cuando reciba el texto para que se mostrará.
Puede usar un proxy como su conexión al relé agregando una dirección de proxy con --socks5
. Por ejemplo, puede enviar a través de un relé TOR:
croc --socks5 "127.0.0.1:9050" send SOMEFILE
Puede elegir entre varias curvas elípticas diferentes para usar para el cifrado utilizando el indicador --curve
. Solo el destinatario puede elegir la curva. Por ejemplo, reciba un archivo usando la curva P-521:
croc --curve p521 <codephrase>
Las curvas disponibles son P-256, P-348, P-521 y SIEC. P-256 es la curva predeterminada.
Puede elegir entre varios algoritmos hash diferentes. El valor predeterminado es el algoritmo xxhash
que es rápido y completo. Si desea optimizar para la velocidad, puede usar el algoritmo imohash
que es aún más rápido, pero dado que muestra archivos (en lugar de leer todo el archivo), puede determinar erróneamente que un archivo es el mismo en las dos computadoras que se transfieren, aunque esto es solo Un problema si está sincronizando archivos versus enviar un archivo nuevo a una computadora.
croc send --hash imohash SOMEFILE
El relé es necesario para engrapar las conexiones entrantes y salientes paralelas. Por defecto, croc
usa un relé público, pero también puede ejecutar su propio relé:
croc relay
Por defecto, utiliza los puertos TCP 9009-9013. Asegúrate de abrirlos. Puede personalizar los puertos (por ejemplo, croc relay --ports 1111,1112
), pero debe tener un mínimo de 2 puertos para el relé. El primer puerto es para la comunicación y los puertos posteriores se utilizan para la transferencia de datos multiplexado.
Puede enviar archivos utilizando su relé ingresando --relay
para cambiar el relé que está utilizando si desea alojamiento personalizado.
croc --relay "myrelay.example.com:9009" send [filename]
Nota, al enviar, solo necesita incluir el primer puerto (el puerto de comunicación). Los puertos posteriores para la transferencia de datos se transmitirán nuevamente al usuario desde el relé.
Si es más fácil, también puede ejecutar un relé con Docker:
docker run -d -p 9009-9013:9009-9013 -e CROC_PASS='YOURPASSWORD' schollz/croc
Asegúrese de incluir la contraseña para el relé, de lo contrario, cualquier solicitud será rechazada.
croc --pass YOURPASSWORD --relay "myreal.example.com:9009" send [filename]
Nota: Al incluir --pass YOURPASSWORD
puede pasar un archivo con la contraseña, por ejemplo, --pass FILEWITHPASSWORD
.
MIT
croc
ha pasado por muchas iteraciones, ¡y estoy asombrado por todas las grandes contribuciones! Si tiene ganas de contribuir, de alguna manera, puede enviar un problema, un PR o hacer una pregunta.
Gracias @Warner por la idea, @tscholl2 por las Gists de cifrado, @skorokithakis por código en el proxy de dos conexiones. Finalmente gracias por hacer solicitudes de extracción @maximbaz, @meyermarcel, @girbons, @techtide, @heymatthew, @lunsford94, @lummie, @jesuiscamille, @threefjord, @Marcossegovia, @csleong98, @afotescu, @callmefever, @el-JoJa, @Marcossegovia, @anatolyyyyyy, @goggle, @smileboywtu, @nicolashardy, @fbartels, @rkuprov, @hreese, @xenrox e ipar!