هذا المشروع مدعوم من قبل رعاة Github.
croc
هي أداة تسمح لأي جهاز كمبيوتر بنقل الملفات والمجلدات ببساطة. AFAIK ، CROC هي أداة نقل ملف CLI الوحيدة التي تقوم بكل ما يلي:
يسمح لأي جهاز كمبيوتر بنقل البيانات (باستخدام ترحيل)
يوفر التشفير من طرف إلى طرف (باستخدام Pake)
يمكّن عمليات نقل المنصات السهلة (Windows ، Linux ، Mac)
يسمح بنقل الملفات المتعددة
يتيح استئناف عمليات النقل التي توقفت
الخادم المحلي أو المنفذ غير المطلوب
IPv6-first مع احتياطي IPv4
يمكن استخدام الوكيل ، مثل 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
في فيدورا ، يمكنك التثبيت باستخدام dnf
:
dnf install croc
على gentoo يمكنك التثبيت مع portage
:
emerge net-misc/croc
على Termux ، يمكنك التثبيت باستخدام pkg
:
pkg install croc
على FreeBSD يمكنك التثبيت مع pkg
:
pkg install croc
على Linux و MacOs و Windows ، يمكنك تثبيت Conda-Forge على مستوى العالم مع pixi
:
pixi global install croc
أو في بيئة معينة مع conda
:
conda install --channel conda-forge croc
أو يمكنك تثبيت 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 على 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
) ، ولكن يجب أن يكون لديك منفذان على الأقل للترحيل. المنفذ الأول هو للاتصال ويتم استخدام المنافذ اللاحقة لنقل البيانات المتعددة.
يمكنك إرسال ملفات باستخدام الترحيل الخاص بك عن طريق الدخول --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
.
معهد ماساتشوستس للتكنولوجيا
لقد مر croc
بالعديد من التكرارات ، وأنا أشعر بالرهبة من جميع المساهمات العظيمة! إذا كنت تشعر بالمساهمة ، بأي حال من الأحوال ، يمكنك إرسال مشكلة أو علاقات عامة أو في أي شيء.
شكرًا @warner على الفكرة ، @tscholl2 للحصول على gists التشفير ، skorokithakis للحصول على رمز على الوصلات اثنين. أخيرًا ، شكرًا على تقديم طلبات سحب maximbaz ، meyermarcel ، girbons ، techtide ، @heymatthew ، @lunsford94 ، @lummie ، jesuiscamille ، @threefjord ، marcossegovia ، @csleong98 ، @afotescu ، anatolyyyyyy ، goggle ، smileboywtu ، nicolashardy ، fbartels ، rkuprov ، hreese ، xenrox و ipar!