Sobre o projeto

croc é uma ferramenta de transferência de arquivos por linha de comando projetada para permitir que dois computadores troquem arquivos e pastas de forma simples e segura. Segundo seu README, combina transferência ponto a ponto com fallback de relay, criptografia de ponta a ponta baseada em acordo de chave autenticado por senha (PAKE), suporte multiplataforma (Windows, Linux, macOS e cliente navegador), transferências de múltiplos arquivos, transferências interrompidas resumíveis e sem necessidade de servidor local ou redirecionamento de portas. É descrito como priorizando IPv6 com fallback IPv4 e capaz de funcionar por meio de um proxy, como o Tor. O uso se baseia em uma frase de código curta. O remetente executa `croc send [arquivo(s)-ou-pasta]`, que imprime uma frase de código; o destinatário executa `croc frase-de-código` em outro computador. A frase de código impulsiona o handshake PAKE que produz uma chave secreta compartilhada para criptografia. No Linux e macOS, o README recomenda passar o segredo como variável de ambiente (`CROC_SECRET=*** croc`) para evitar expor o segredo através do nome do processo, com a opção `--classic` para restaurar o comportamento padrão em sistemas de único usuário. Além do envio e recebimento básicos, a ferramenta documenta muitas opções: frases de código personalizadas, `--overwrite` e `--rename` para lidar com arquivos existentes, `--exclude` e `--exclude-file` para filtrar o conteúdo de pastas, redirecionamento via stdin/stdout, envio de texto curto com `--text`, envio de múltiplos arquivos ou pastas, exibição de código QR para uso móvel, suporte a proxy SOCKS5, curvas de criptografia selecionáveis, algoritmo de hash alternativo `imohash`, flags de comportamento da área de transferência e modo silencioso para scripts. O README também descreve `croc ssh`, que compartilha uma sessão de terminal persistente no Linux, macOS, FreeBSD ou OpenBSD. O host emite convites separados de seis palavras para participantes de leitura/escrita e leitura somente; a sessão usa um caminho WireGuard efêmero com chave de host SSH efêmera, e comandos remotos, redirecionamento e SFTP são desativados. Um modo `croc store` carrega cifra de lado do cliente para recuperação posterior, com limites de download configuráveis e expiração, um link de navegador cuja chave de decodificação está no fragmento da URL e um comando de revogação. A seleção de transporte padrão é `--transport auto`: após o handshake PAKE, clientes compatíveis tentam um caminho baseado em WireGuard com fallback DERP e trânsito de NAT, caso contrário, recorrendo às portas de dados do relay do croc. Os usuários podem hospedar um relay por conta própria com `croc relay` (portas TCP padrão 9009-9013) ou via Docker, opcionalmente com senha. Um cliente web React/Vite, embutido em um servidor `croc-web`, pode enviar e receber arquivos e participar de sessões `croc ssh`, sendo compatível com a CLI. A instalação é documentada por meio de script shell, Homebrew, MacPorts, Scoop, Chocolatey, Nix, Alpine, Debian, Arch, Termux, FreeBSD, Conda, Docker, construção a partir de código-fonte com Go e aplicativos GUI para Android e desktop da comunidade. Notas de implantação abrangem Disco, incluindo variáveis de ambiente, portas de relay e volume de armazenamento persistente.