Sobre el proyecto

croc es una herramienta de transferencia de archivos de línea de comandos diseñada para permitir que dos computadoras intercambien archivos y carpetas de forma sencilla y segura. Según su README, combina transferencia punto a punto con retroceso de retransmisión, encriptación de extremo a extremo basada en acuerdo de clave autenticado por contraseña (PAKE), soporte multiplataforma (Windows, Linux, macOS y cliente de navegador), transferencias de múltiples archivos, transferencias interrumpidas reanudables y sin necesidad de un servidor local o redirección de puertos. Se describe como prioridad IPv6 con retroceso IPv4 y capaz de funcionar a través de un proxy como Tor. El uso se centra en una frase de código corta. El remitente ejecuta `croc send [archivo(s) o carpeta]`, lo que imprime una frase de código; el receptor ejecuta `croc frase-de-código` en otra máquina. La frase de código impulsa el intercambio PAKE que produce una clave secreta compartida para la encriptación. En Linux y macOS, el README recomienda pasar el secreto como variable de entorno (`CROC_SECRET=*** croc`) para evitar que se filtre a través del nombre del proceso, con una opción `--classic` para restaurar el comportamiento predeterminado en sistemas de un solo usuario. Más allá de enviar/recibir básicos, la herramienta documenta muchas opciones: frases de código personalizadas, `--overwrite` y `--rename` para manejar archivos existentes, `--exclude` y `--exclude-file` para filtrar el contenido de carpetas, redirección mediante stdin/stdout, enviar texto corto con `--text`, enviar múltiples archivos o carpetas, mostrar un código QR para uso móvil, soporte para proxy SOCKS5, curvas de encriptación seleccionables, un algoritmo de hash alternativo `imohash`, banderas de comportamiento del portapapeles y un modo silencioso para scripts. El README también describe `croc ssh`, que comparte una sesión de terminal persistente en Linux, macOS, FreeBSD u OpenBSD. El host emite invitaciones separadas de seis palabras para participantes de lectura/escritura y solo lectura; la sesión usa una ruta WireGuard temporal con una clave de host SSH temporal, y los comandos remotos, redirección y SFTP están deshabilitados. Un modo `croc store` carga texto cifrado del lado del cliente para recuperación posterior, con límites de descarga y caducidad configurables, un enlace de navegador cuya clave de descifrado reside en el fragmento de URL, y un comando de revocación. La selección de transporte predeterminada es `--transport auto`: después del intercambio PAKE, los clientes compatibles intentan una ruta basada en WireGuard con retroceso DERP y tránsito NAT, de lo contrario retrocediendo a los puertos de datos de croc. Los usuarios pueden autohospedar una retransmisión con `croc relay` (puertos TCP predeterminados 9009-9013) o mediante Docker, opcionalmente con contraseña. Un cliente web React/Vite, incluido en un servidor `croc-web`, puede enviar y recibir archivos y unirse a sesiones `croc ssh`, y es compatible con la CLI. La instalación se documenta mediante un script de shell, Homebrew, MacPorts, Scoop, Chocolatey, Nix, Alpine, Debian, Arch, Termux, FreeBSD, Conda, Docker, compilando desde el código fuente con Go y aplicaciones de GUI para Android y escritorio de la comunidad. Las notas de implementación cubren Disco, incluyendo variables de entorno, puertos de retransmisión y un volumen de almacenamiento persistente.