이 프로젝트는 Github 스폰서가 지원합니다.
croc
는 두 컴퓨터가 파일과 폴더를 간단하고 안전하게 전송할 수있는 도구입니다. Afaik, Croc는 다음을 모두 수행하는 유일한 CLI 파일 전환 도구입니다.
두 컴퓨터가 데이터를 전송할 수 있습니다 (릴레이 사용)
엔드 투 엔드 암호화를 제공합니다 (Pake 사용)
쉬운 크로스 플랫폼 전송 가능 (Windows, Linux, Mac)
여러 파일 전송이 가능합니다
중단 된 재개 이사를 허용합니다
로컬 서버 또는 포트 포워드가 필요하지 않습니다
IPv4 폴백이있는 IPv6 우선
Tor와 같은 프록시를 사용할 수 있습니다
croc
에 대한 자세한 내용은 내 블로그 게시물을 참조하거나 최근 인터뷰를 읽으십시오.
시스템의 최신 릴리스를 다운로드하거나 명령 줄에서 릴리스를 설치하십시오.
curl https://getcroc.schollz.com | bash
MacOS에서는 Homebrew로 최신 릴리스를 설치할 수 있습니다.
brew install croc
MacOS에서는 MacPorts를 사용하여 최신 릴리스를 설치할 수도 있습니다.
sudo port selfupdate sudo port install croc
Windows에서는 Scoop, Chocolatey 또는 Winget을 사용하여 최신 릴리스를 설치할 수 있습니다.
scoop install croc
choco install croc
winget install schollz.croc
Unix에서는 Nix를 사용하여 최신 릴리스를 설치할 수 있습니다.
nix-env -i croc
Alpine Linux에서는 먼저 종속성을 설치해야합니다.
apk add bash coreutils wget -qO- https://getcroc.schollz.com | bash
Arch Linux에서는 pacman
과 함께 최신 릴리스를 설치할 수 있습니다.
pacman -S croc
Fedora에서는 dnf
로 설치할 수 있습니다.
dnf install croc
Gentoo에서는 portage
와 함께 설치할 수 있습니다.
emerge net-misc/croc
용기에서 pkg
로 설치할 수 있습니다.
pkg install croc
freebsd에서는 pkg
로 설치할 수 있습니다.
pkg install croc
Linux, MacOS 및 Windows에서는 pixi
사용하여 Conda-Forge에서 설치할 수 있습니다.
pixi global install croc
또는 conda
있는 특정 환경으로 :
conda install --channel conda-forge croc
또는 소스에서 GO 및 빌드를 설치할 수 있습니다 (GO 1.17+ 필요) :
go install github.com/schollz/croc/v10@latest
Android에는 다운로드 할 수있는 타사 F-Droid 앱이 있습니다.
파일을 보내려면 간단히하십시오.
$ croc send [file(s)-or-folder] Sending 'file-or-folder' (X MB) Code is: code-phrase
그런 다음 다른 컴퓨터에서 파일 (또는 폴더)을 받으려면
croc code-phrase
코드 문구는 발신자와 수신자가 엔드 투 엔드 암호화에 사용할 비밀 키를 생성하는 비밀번호 인증 된 키 계약 (Pake)을 설정하는 데 사용됩니다.
여러 구성 가능한 옵션이 있습니다 ( --help
참조). 사용자 정의 릴레이, 포트 및 코드 문구와 같은 일련의 옵션을 --remember
사용하여 설정할 수 있습니다.
croc
사용 Linux 및 Mac OS에서 보내기 및 수신은 프로세스 이름을 통해 비밀을 누출하지 않도록 약간 다릅니다. 이 시스템에서는 환경 변수로 비밀을 사용하여 croc
실행해야합니다. 예를 들어, 비밀로 받기 위해 ***
:
CROC_SECRET=*** croc
이것은 다중 사용자 시스템의 프로세스 목록에 croc
만 표시되며 비밀을 누출하지 않습니다.
단일 사용자 시스템의 경우 실행을 통해 기본 동작을 영구적으로 활성화 할 수 있습니다.
croc --classic
그리고 확인. 클래식 모드를 비활성화하려면이 명령을 다시 실행하십시오.
자신의 코드 문구로 보낼 수 있습니다 (6 자 이상이어야 함).
croc send --code [code-phrase] [file(s)-or-folder]
기본적으로 CROC는 파일을 덮어 쓰는지 여부를 자극합니다. --overwrite
플래그 (수신자 만)를 사용하여 파일을 자동으로 덮어 쓸 수 있습니다. 예를 들어, 자동으로 덮어 쓸 수있는 파일을 수신합니다.
croc --yes --overwrite <code>
croc
에 파이프 할 수 있습니다.
cat [filename] | croc send
이 경우 croc
STDIN 데이터를 자동으로 사용하고 "Croc-Stdin-123456789"와 같은 파일 이름을 보내고 할당합니다. stdout
을 받으려면 언제든지 --yes
를 stdout
수 있습니다.
croc --yes [code-phrase] > out
콘솔에 인쇄 된 다른 모든 텍스트는 stderr
로 이동하여 stdout
로 이동하는 메시지를 방해하지 않습니다.
때로는 URL 또는 짧은 텍스트를 보내려고합니다. 배관 외에도 croc
으로 쉽게 텍스트를 보낼 수 있습니다.
croc send --text "hello world"
이렇게하면 텍스트가 표시되면 수신기가 stdout
사용하여 표시되므로 표시됩니다.
--socks5
가있는 프록시 주소를 추가하여 프록시를 릴레이 연결로 사용할 수 있습니다. 예를 들어 Tor 릴레이를 통해 보낼 수 있습니다.
croc --socks5 "127.0.0.1:9050" send SOMEFILE
--curve
플래그를 사용하여 암호화에 사용할 여러 타원 곡선 중에서 선택할 수 있습니다. 수신자 만 곡선을 선택할 수 있습니다. 예를 들어, P-521 곡선을 사용하여 파일을받습니다.
croc --curve p521 <codephrase>
사용 가능한 곡선은 P-256, P-348, P-521 및 SIEC입니다. P-256은 기본 곡선입니다.
여러 해시 알고리즘 중에서 선택할 수 있습니다. 기본값은 빠르고 철저한 xxhash
알고리즘입니다. 속도를 최적화하려면 더 빠른 imohash
알고리즘을 사용할 수 있지만 파일을 샘플링하고 (전체 파일을 읽는 것과 비교할 때) 파일이 전송하는 두 컴퓨터에서 파일이 동일하다고 잘못 판단 할 수 있습니다. 파일을 동기화하는 것과 컴퓨터에 새 파일을 전송하는 경우 문제.
croc send --hash imohash SOMEFILE
병렬 수신 및 나가는 연결을 자랑하기 위해 릴레이가 필요합니다. 기본적으로 croc
공개 릴레이를 사용하지만 자신의 릴레이를 실행할 수도 있습니다.
croc relay
기본적으로 TCP 포트 9009-9013을 사용합니다. 그것들을 열어야합니다. 포트 (예 : croc relay --ports 1111,1112
)를 사용자 정의 할 수 있지만 릴레이의 경우 최소 2 개의 포트가 있어야합니다. 첫 번째 포트는 통신을위한 것이며 후속 포트는 다중 데이터 전송에 사용됩니다.
직접 사용자 정의 호스트를 원하는 경우 사용중인 릴레이를 변경하려면 --relay
를 사용하여 릴레이를 사용하여 파일을 보낼 수 있습니다.
croc --relay "myrelay.example.com:9009" send [filename]
보낼 때 첫 번째 포트 (통신 포트) 만 포함하면됩니다. 데이터 전송을위한 후속 포트는 릴레이에서 사용자에게 다시 전송됩니다.
더 쉬운 경우 Docker와 함께 릴레이를 실행할 수도 있습니다.
docker run -d -p 9009-9013:9009-9013 -e CROC_PASS='YOURPASSWORD' schollz/croc
릴레이의 비밀번호를 포함시켜야합니다. 그렇지 않으면 모든 요청이 거부됩니다.
croc --pass YOURPASSWORD --relay "myreal.example.com:9009" send [filename]
참고 : --pass YOURPASSWORD
포함시킬 때 대신 --pass FILEWITHPASSWORD
와 함께 파일을 전달할 수 있습니다.
MIT
croc
많은 반복을 겪었고 나는 모든 큰 기여에 경외심을 느낍니다! 어떤 식 으로든 기여하고 싶다고 생각되면 문제, PR을 보내거나 질문을 할 수 있습니다.
아이디어에 대해 @Warner에게 감사드립니다. @tscholl2 암호화 GISTS, @Skorokithakis는 두 연결을 프록시하는 코드에 대해 감사합니다. 마지막으로 풀 요청 @maximbaz, @meyermarcel, @girbons, @techtide, @heymatthew, @lunsford94, @lummie, @jesuiscamille, @threefjord, @marcossegovia, @csleong98, @afotescu, @callmefever, @el-el-joja, @callmefever. @anatolyyyyyyy, @goggle, @smileboywtu, @nicolashardy, @fbartels, @rkuprov, @hreese, @xenrox 및 ipar!