Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
transfer.sh — مشاركة ملفات سهلة وسريعة من سطر الأوامر. | Kitploit
أدوات/GitHubGitHub/dutchcoders/transfer.sh
أدوات عامةأدوات التشفير/فك التشفيرتسريب البيانات
GitHubdutchcoders/transfer.sh

transfer.sh

مشاركة ملفات سهلة وسريعة من سطر الأوامر.

عرض المستودع
15.9k1.6kمنذ 2 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

تحذير أمني

تجاوز فلتر IP وتوثيق HTTP عبر تزوير رأس X-Forwarded-For غير الموثَّق

transfer.sh Go Report Card Docker pulls Build Status

مشاركة ملفات سهلة وسريعة من سطر الأوامر. يحتوي هذا الكود على الخادم بكل ما تحتاجه لإنشاء نسختك الخاصة.

يدعم Transfer.sh حاليًا مزودات s3 (Amazon S3) و gdrive (Google Drive) و storj (Storj) ونظام الملفات المحلي (local).




إخلاء مسؤولية

@stefanbenten هو أحد صيانة هذا المستودع و الشخص الذي يستضيف تثبيتًا عامًا معروفًا للبرنامج في المستودع.

الاثنان غير مرتبطين على أي حال، والمستودع ليس المكان المناسب لتوجيه الطلبات والمشكلات لأي من التثبيت العام.

لن يتم الإعلان عن أي تثبيت عام من طرف ثالث للبرنامج في المستودع أو ذكره في المستودع نفسه، لأسباب أمنية.

الموقف الرسمي لي، @aspacca، كصيان للمستودع، هو أنك إذا أردت استخدام البرنامج فيجب عليك استضافة تثبيتك الخاص.




الاستخدام

يحدد هذا القسم كيفية استخدام transfer.sh


الرفع```bash

$ curl -v --upload-file ./hello.txt https://transfer.sh/hello.txt

root@kitploit:~
<br />

### تشفير ورفع```bash
$ gpg --armor --symmetric --output - /tmp/hello.txt | curl --upload-file - https://transfer.sh/test.txt

تنزيل وفك التشفير```bash

$ curl https://transfer.sh/1lDau/test.txt | gpg --decrypt --output /tmp/hello.txt

root@kitploit:~
<br />

### الرفع إلى Virustotal```bash
$ curl -X PUT --upload-file nhgbhhj https://transfer.sh/test.txt/virustotal

حذف```bash

$ curl -X DELETE

root@kitploit:~
<br />

---

<br />

## رؤوس الطلبات

يشرح هذا القسم كيفية التعامل مع رؤوس الطلبات باستخدام curl:

<br />

### Max-Downloads```bash
$ curl --upload-file ./hello.txt https://transfer.sh/hello.txt -H "Max-Downloads: 1" # Limit the number of downloads

Max-Days```bash

$ curl --upload-file ./hello.txt https://transfer.sh/hello.txt -H "Max-Days: 1" # Set the number of days before deletion

root@kitploit:~
<br />

### X-Encrypt-Password

#### تحذير: استخدم هذه الميزة فقط على الخادم المستضاف ذاتيًا: الثقة في خدمة طرف ثالث لتشفير جانب الخادم هي على مسؤوليتك الخاصة.```bash
$ curl --upload-file ./hello.txt https://your-transfersh-instance.tld/hello.txt -H "X-Encrypt-Password: test" # Encrypt the content server side with AES256 using "test" as password

X-Decrypt-Password

احذر، استخدم هذه الميزة فقط على خادمك المستضاف ذاتيًا: الثقة بخدمة طرف ثالث لتشفير جانب الخادم هي على مسؤوليتك الخاصة```bash

$ curl https://your-transfersh-instance.tld/BAYh0/hello.txt -H "X-Decrypt-Password: test" # Decrypt the content server side with AES256 using "test" as password

root@kitploit:~
<br />

---

<br />

## ترويسات الاستجابة

يشرح هذا القسم كيفية التعامل مع ترويسات الاستجابة:

<br />

### X-Url-Delete

عنوان URL المستخدم لطلب حذف ملف ويُعاد كترويسة استجابة:```bash
curl -sD - --upload-file ./hello.txt https://transfer.sh/hello.txt | grep -i -E 'transfer\.sh|x-url-delete'
x-url-delete: https://transfer.sh/hello.txt/BAYh0/hello.txt/PDw0NHPcqU
https://transfer.sh/hello.txt/BAYh0/hello.txt



أمثلة

انظر الأمثلة الجيدة للاستخدام في examples.md


أسماء مستعارة للروابط

إنشاء رابط تحميل مباشر:

https://transfer.sh/1lDau/test.txt --> https://transfer.sh/get/1lDau/test.txt

ملف مضمن:

https://transfer.sh/1lDau/test.txt --> https://transfer.sh/inline/1lDau/test.txt




الاستخدام

إذا كنت ترغب في استخدام TLS باستخدام شهادات Let's Encrypt، فقم بتعيين lets-encrypt-hosts إلى نطاقك، واضبط tls-listener إلى :443 وفعّل force-https.

إذا كنت ترغب في استخدام TLS باستخدام شهاداتك الخاصة، فقم بتعيين tls-listener إلى :443، force-https، tls-cert-file و tls-private-key.




التطوير

تم التبديل إلى GO111MODULE```bash go run main.go --provider=local --listener :8080 --temp-path=/tmp/ --basedir=/tmp/

root@kitploit:~
<br />

---

<br />

## بناء```bash
$ git clone [email protected]:dutchcoders/transfer.sh.git
$ cd transfer.sh
$ go build -o transfersh main.go



Docker

للنشر السهل، قمنا بإنشاء حاوية Docker رسمية. هناك نوعان، يختلفان فقط في المستخدم الذي يقوم بتشغيل العملية.

النوع الافتراضي سيعمل كمستخدم root:

[!WARNING] يُنصح بعدم استخدام وسم latest مع WatchTower أو أدوات مشابهة. يمكن أن يشير وسم latest إلى إصدارات مطورين غير مُصدرة، وبنيات اختبارية، وإصدارات تصحيحية للإصدارات القديمة. استخدم وسم إصدار فعلي حتى يدعم transfer.sh وسوم الإصدارات الرئيسية أو الثانوية.```bash docker run --publish 8080:8080 dutchcoders/transfer.sh:latest --provider local --basedir /tmp/

root@kitploit:~
<br />

### بدون صلاحية الجذر

تشير العلامات `-noroot` إلى بناء الصور التي تعمل بأقل الامتيازات لتقليل سطح الهجوم في حال تعرض التطبيق للاختراق.

> [!NOTE]
> استخدام `-noroot` **موصى به**

<br />

النسخة الموسومة باللاحقة `-noroot` ستستخدم `5000` لكل من UID و GID:```bash
docker run --publish 8080:8080 dutchcoders/transfer.sh:latest-noroot --provider local --basedir /tmp/

[!NOTE] تفاصيل تاريخ التطوير في:

  • https://github.com/dutchcoders/transfer.sh/pull/418

العلامات


بناء الحاوية

يمكنك أيضًا بناء الحاوية بنفسك. يتيح لك هذا اختيار UID/GID الذي سيتم استخدامه، على سبيل المثال عند استخدام تركيبات NFS:```bash

Build arguments:

* RUNAS: If empty, the container will run as root.

Set this to anything to enable UID/GID selection.

* PUID: UID of the process. Needs RUNAS != "". Defaults to 5000.

* PGID: GID of the process. Needs RUNAS != "". Defaults to 5000.

docker build -t transfer.sh-noroot --build-arg RUNAS=doesntmatter --build-arg PUID=1337 --build-arg PGID=1338 .

root@kitploit:~
<br />

---

<br />

## استخدام S3

لاستخدام S3 مع دلو أمازون S3، تحتاج فقط إلى تحديد الخيارات التالية:
- المزوّد `--provider s3`
- مفتاح الوصول AWS _(إما عبر العلامة أو المتغير البيئي `AWS_ACCESS_KEY`)_
- المفتاح السري AWS _(إما عبر العلامة أو المتغير البيئي `AWS_SECRET_KEY`)_
- الدلو _(إما عبر العلامة أو المتغير البيئي `BUCKET`)_
- منطقة S3 _(إما عبر العلامة أو المتغير البيئي `S3_REGION`)_

إذا قمت بتحديد منطقة S3، فلن تحتاج إلى تعيين عنوان URL لنقطة النهاية حيث سيتم استخدام النقطة النهائية الصحيحة تلقائيًا.

<br />

### مزوّدو S3 المخصصون

لاستخدام مزوّد S3 مخصص غير تابع لـ AWS، تحتاج إلى تحديد نقطة النهاية كما هو محدد من مزوّد السحابة الخاص بك.

<br />

---

<br />

## مزوّد شبكة Storj

لاستخدام شبكة Storj كمزوّد تخزين، تحتاج إلى تحديد العلامات التالية:
- المزوّد `--provider storj`
- وصول Storj _(إما عبر العلامة أو المتغير البيئي `STORJ_ACCESS`)_
- دلو Storj _(إما عبر العلامة أو المتغير البيئي `STORJ_BUCKET`)_

<br />

### إنشاء الدلو والنطاق

تحتاج إلى إنشاء منحة وصول (أو نسخها من تكوين uplink) ودلو تحضيريًا.

للبدء، قم بتسجيل الدخول إلى حسابك وانتقل إلى قائمة منح الوصول وابدأ المعالج في الزاوية اليمنى العلوية.

أدخل اسم منحة الوصول الذي تختاره، اضغط *التالي* وقيّدها حسب الحاجة/التفضيل. بعد ذلك، تابع إما في واجهة سطر الأوامر أو داخل المتصفح. بعد ذلك، سيُطلب منك عبارة مرور تُستخدم كمفتاح تشفير.
**تأكد من حفظها في مكان آمن. بدونها، ستفقد القدرة على فك تشفير ملفاتك!**

بعد ذلك، يمكنك نسخ منحة الوصول ثم بدء تشغيل نقطة نهاية transfer.sh. يُوصى بتوفير كل من منحة الوصول واسم الدلو كمتغيرات بيئية لتعزيز الأمان.

مثال:```
export STORJ_BUCKET=<BUCKET NAME>
export STORJ_ACCESS=<ACCESS GRANT>
transfer.sh --provider storj



استخدام Google Drive

للاستخدام مع Google Drive، تحتاج إلى تحديد الخيارات التالية:

  • provider
  • gdrive-client-json-filepath
  • gdrive-local-config-path
  • basedir

إنشاء Gdrive Client Json

تحتاج إلى إنشاء معرف عميل OAuth من console.cloud.google.com، وتنزيل الملف، ووضعه في دليل آمن.


مثال الاستخدامgo run main.go --provider gdrive --basedir /tmp/ --gdrive-client-json-filepath /[credential_dir] --gdrive-local-config-path [directory_to_save_config]




Shell functions

Bash, ash and zsh (multiple files uploaded as zip archive)

Add this to .bashrc or .zshrc or its equivalent
root@kitploit:~
transfer() (if [ $# -eq 0 ]; then printf "No arguments specified.\nUsage:\n transfer <file|directory>\n ... | transfer <file_name>\n">&2; return 1; fi; file_name=$(basename "$1"); if [ -t 0 ]; then file="$1"; if [ ! -e "$file" ]; then echo "$file: No such file or directory">&2; return 1; fi; if [ -d "$file" ]; then cd "$file" || return 1; file_name="$file_name.zip"; set -- zip -r -q - .; else set -- cat "$file"; fi; else set -- cat; fi; url=$("$@" | curl --silent --show-error --progress-bar --upload-file "-" "https://transfer.sh/$file_name"); echo "$url"; )```

<br />

#### Now you can use transfer function

$ transfer hello.txt```


Bash and zsh (with delete url, delete token output and prompt before uploading)

Add this to .bashrc or .zshrc or its equivalent
Expand

root@kitploit:~
transfer()
{
    local file
    declare -a file_array
    file_array=("${@}")

    if [[ "${file_array[@]}" == "" || "${1}" == "--help" || "${1}" == "-h" ]]
    then
        echo "${0} - قم بتحميل ملفات عشوائية إلى \"transfer.sh\"."
        echo ""
        echo "الاستخدام: ${0} [خيارات] [<ملف>]..."
        echo ""
        echo "الخيارات:"
        echo "  -h, --help"
        echo "      عرض هذه الرسالة"
        echo ""
        echo "أمثلة:"
        echo "  تحميل ملف واحد من مجلد العمل الحالي:"
        echo "      ${0} \"image.img\""
        echo ""
        echo "  تحميل ملفات متعددة من مجلد العمل الحالي:"
        echo "      ${0} \"image.img\" \"image2.img\""
        echo ""
        echo "  تحميل ملف من مجلد مختلف:"
        echo "      ${0} \"/tmp/some_file\""
        echo ""
        echo "  تحميل جميع الملفات من مجلد العمل الحالي. انتبه إلى تحديد معدل خادم الويب!:"
        echo "      ${0} *"
        echo ""
        echo "  تحميل ملف واحد من مجلد العمل الحالي واستخراج رمز الحذف ورابط التحميل:"
        echo "      ${0} \"image.img\" | awk --field-separator=\": \" '/Delete token:/ { print \$2 } /Download link:/ { print \$2 }'"
        echo ""
        echo "  عرض نص المساعدة من \"transfer.sh\":"
        echo "      curl --request GET \"https://transfer.sh\""
        return 0
    else
        for file in "${file_array[@]}"
        do
            if [[ ! -f "${file}" ]]
            then
                echo -e "\e[01;31m'${file}' لم يتم العثور عليه أو ليس ملفًا.\e[0m" >&2
                return 1
            fi
        done
        unset file
    fi

    local upload_files
    local curl_output
    local awk_output

    du -c -k -L "${file_array[@]}" >&2
    # be compatible with "bash"
    if [[ "${ZSH_NAME}" == "zsh" ]]
    then
        read $'upload_files?\e[01;31mهل تريد حقًا تحميل الملفات أعلاه ('"${#file_array[@]}"$') إلى "transfer.sh"؟ (Y/n): \e[0m'
    elif [[ "${BASH}" == *"bash"* ]]
    then
        read -p $'\e[01;31mهل تريد حقًا تحميل الملفات أعلاه ('"${#file_array[@]}"$') إلى "transfer.sh"؟ (Y/n): \e[0m' upload_files
    fi

    case "${upload_files:-y}" in
        "y"|"Y")
            # من أجل شريط التقدم، قم بتنفيذ 'curl' لكل ملف. المعلمات '--include' و '--form' ستقوم بإخفاء شريط التقدم.
            for file in "${file_array[@]}"
            do
                # عرض رابط الحذف واستخراج رمز الحذف من رأس الاستجابة بعد التحميل.
                # من المهم حفظ 'stdout' الخاص بـ 'curl' عبر قشرة فرعية إلى متغير أو توجيهه إلى أمر آخر،
                # والذي يعيد التوجيه إلى 'stdout' للحصول على مخرجات سليمة بعد ذلك.
                # يتم توجيه شريط التقدم إلى 'stderr' ويتم عرضه فقط،
                # إذا تم توجيه 'stdout' إلى شيء ما؛ على سبيل المثال '>/dev/null'، 'tee /dev/null' أو '| <some_command>'.
                # يتم توجيه رأس الاستجابة إلى 'stdout'، لذا فإن توجيه 'stdout' إلى '/dev/null' لا معنى له.
                # توجيه 'stderr' الخاص بـ 'curl' إلى 'stdout' ('2>&1') سيخفي شريط التقدم.
                curl_output=$(curl --request PUT --progress-bar --dump-header - --upload-file "${file}" "https://transfer.sh/")
                awk_output=$(awk \
                    'gsub("\r", "", $0) && tolower($1) ~ /x-url-delete/ \
                    {
                        delete_link=$2;
                        print "أمر الحذف: " "\""delete_link"\"";

                        gsub(".*/", "", delete_link);
                        delete_token=delete_link;
                        print "رمز الحذف: " delete_token;
                    }

                    END{
                        print "رابط التحميل: " $0;
                    }' <<< "${curl_output}")

                # إرجاع النتائج عبر 'stdout'، لا يقوم 'awk' بذلك لسبب ما.
                echo -e "${awk_output}\n"

                # تجنب تحديد المعدل قدر الإمكان؛ nginx: طلبات كثيرة جدًا.
                if (( ${#file_array[@]} > 4 ))
                then
                    sleep 5
                fi
            done
            ;;

        "n"|"N")
            return 1
            ;;

        *)
            echo -e "\e[01;31mإدخال خاطئ: '${upload_files}'.\e[0m" >&2
            return 1
    esac
}```

</p></details>

#### Sample output
```bash
تنزيل الأداة
ParameterDescriptionValueEnv
listenerالمنفذ لاستخدامه لـ http (:80)LISTENER
profile-listenerالمنفذ لاستخدامه للمُحلل (:6060)PROFILE_LISTENER
force-httpsإعادة التوجيه إلى httpsfalseFORCE_HTTPS
tls-listenerالمنفذ لاستخدامه لـ https (:443)TLS_LISTENER
tls-listener-onlyعلم لتفعيل مستمع tls فقطTLS_LISTENER_ONLY
tls-cert-fileمسار شهادة tlsTLS_CERT_FILE
tls-private-keyمسار المفتاح الخاص لـ tlsTLS_PRIVATE_KEY
http-auth-userالمستخدم للمصادقة الأساسية على http عند الرفعHTTP_AUTH_USER
http-auth-passكلمة المرور للمصادقة الأساسية على http عند الرفعHTTP_AUTH_PASS
http-auth-htpasswdمسار ملف htpasswd للمصادقة الأساسية على http عند الرفعHTTP_AUTH_HTPASSWD
http-auth-ip-whitelistقائمة مفصولة بفواصل لعناوين IP المسموح لها بالرفع دون تحدٍ للمصادقةHTTP_AUTH_IP_WHITELIST
virustotal-keyمفتاح API لـ VirusTotalVIRUSTOTAL_KEY
ip-whitelistقائمة مفصولة بفواصل لعناوين IP المسموح لها بالاتصال بالخدمةIP_WHITELIST
ip-blacklistقائمة مفصولة بفواصل لعناوين IP غير المسموح لها بالاتصال بالخدمةIP_BLACKLIST
temp-pathمسار المجلد المؤقتtemp النظامTEMP_PATH
web-pathمسار ملفات الويب الثابتة (للتطوير أو واجهة أمامية مخصصة)WEB_PATH
proxy-pathبادئة المسار عند تشغيل الخدمة خلف بروكسي (سيتم إزالة البادئة /)PROXY_PATH
proxy-portمنفذ البروكسي عند تشغيل الخدمة خلف بروكسيPROXY_PORT
email-contactالبريد الإلكتروني للتواصل للواجهة الأماميةEMAIL_CONTACT
ga-keyمفتاح Google Analytics للواجهة الأماميةGA_KEY
providerمزود التخزين الذي سيتم استخدامه(s3, storj, gdrive أو local)
uservoice-keyمفتاح User Voice للواجهة الأماميةUSERVOICE_KEY
aws-access-keyمفتاح الوصول لـ AWSAWS_ACCESS_KEY
aws-secret-keyمفتاح الوصول السري لـ AWSAWS_SECRET_KEY
bucketحاوية AWSBUCKET
s3-endpointنقطة نهاية S3 مخصصة.S3_ENDPOINT
s3-regionمنطقة حاوية S3eu-west-1S3_REGION
s3-no-multipartتعطيل الرفع المتعدد الأجزاء لـ S3falseS3_NO_MULTIPART
s3-path-styleفرض نمط مسار URLs، مطلوب لـ Minio.falseS3_PATH_STYLE
storj-accessوصول المشروعSTORJ_ACCESS
storj-bucketالحاوية المستخدمة داخل المشروعSTORJ_BUCKET
basedirمسار التخزين لمزود local/gdriveBASEDIR
gdrive-client-json-filepathمسار ملف تهيئة JSON لعميل OAuth لمزود gdriveGDRIVE_CLIENT_JSON_FILEPATH
gdrive-local-config-pathمسار تخزين ذاكرة التخزين المؤقت لتهيئة transfer.sh المحلية لمزود gdriveGDRIVE_LOCAL_CONFIG_PATH
gdrive-chunk-sizeحجم القطعة لرفع gdrive بالميغابايت، يجب أن يكون أقل من الذاكرة المتاحة (8 MB)GDRIVE_CHUNK_SIZE
lets-encrypt-hostsالمضيفات لاستخدام شهادات Let's Encrypt (مفصولة بفواصل)HOSTS
logمسار ملف السجلLOG
cors-domainsقائمة مفصولة بفواصل للنطاقات لـ CORS، تعيينها لتفعيل CORSCORS_DOMAINS
clamav-hostالمضيف لميزة ClamAVCLAMAV_HOST
perform-clamav-prescanفحص مسبق لكل رفع باستخدام ClamAV (يجب أن يكون clamav-host هو clamd محلي على مقبس Unix)PERFORM_CLAMAV_PRESCAN
rate-limitطلب في الدقيقةRATE_LIMIT
max-upload-sizeالحد الأقصى لحجم الرفع بالكيلوبايتMAX_UPLOAD_SIZE
purge-daysعدد الأيام بعدها يتم مسح الرفوعات تلقائياًPURGE_DAYS
purge-intervalالفاصل الزمني (بالساعات) لتشغيل المسح التلقائي (باستثناء S3 و Storj)PURGE_INTERVAL
random-token-lengthطول الرمز العشوائي لمسار الرفع (ضعف الحجم لمسار الحذف)6RANDOM_TOKEN_LENGTH
الاسمالاستخدام
latestأحدث بناء CI، يمكن أن يكون ليليًا، عند الالتزام، عند العلامة، إلخ.
latest-norootأحدث بناء CI، يمكن أن يكون ليليًا، عند الالتزام، عند العلامة، إلخ. باستخدام [بدون الجذر]
nightlyبناء CI مجدول كل منتصف ليل UTC
nightly-norootبناء CI مجدول كل منتصف ليل UTC باستخدام [بدون الجذر]
edgeأحدث بناء CI بعد كل التزام على main
edge-norootأحدث بناء CI بعد كل التزام على main باستخدام [بدون الجذر]
vx.y.zبناء CI بعد وضع علامة على الإصدار
vx.y.z-norootبناء CI بعد وضع علامة على الإصدار باستخدام [بدون الجذر]

$ ls -lh total 20M -rw-r--r-- 1 <some_username> <some_username> 10M Apr 4 21:08 image.img -rw-r--r-- 1 <some_username> <some_username> 10M Apr 4 21:08 image2.img $ transfer image* 10240K image2.img 10240K image.img 20480K total هل تريد حقًا رفع الملفات أعلاه (2) إلى transfer.sh؟ (Y/n): ######################################################################################################################################################################################################################################## 100.0% أمر الحذف: curl --request DELETE "https://transfer.sh/wJw9pz/image2.img/mSctGx7pYCId" رمز الحذف: mSctGx7pYCId رابط التنزيل: https://transfer.sh/wJw9pz/image2.img

######################################################################################################################################################################################################################################## 100.0% أمر الحذف: curl --request DELETE "https://transfer.sh/ljJc5I/image.img/nw7qaoiKUwCU" رمز الحذف: nw7qaoiKUwCU رابط التنزيل: https://transfer.sh/ljJc5I/image.img

$ transfer "image.img" | awk --field-separator=": " '/Delete token:/ { print $2 } /Download link:/ { print $2 }' 10240K image.img 10240K total هل تريد حقًا رفع الملفات أعلاه (1) إلى transfer.sh؟ (Y/n): ######################################################################################################################################################################################################################################## 100.0% tauN5dE3fWJe https://transfer.sh/MYkuqn/image.img

root@kitploit:~

<br />

---

<br />

## Contributions

Contributions are welcome.

<br />

---

<br />

## Creators

**Remco Verhoef**
- <https://twitter.com/remco_verhoef>
- <https://twitter.com/dutchcoders>

**Uvis Grinfelds**

<br />

---

<br />

## Maintainers

- **Andrea Spacca**
- **Stefan Benten**

<br />

---

<br />

## Copyright and License

Code and documentation copyright 2011-2018 Remco Verhoef.
Code and documentation copyright 2018-2020 Andrea Spacca.
Code and documentation copyright 2020- Andrea Spacca and Stefan Benten.

Code released under [the MIT license](https://github.com/dutchcoders/transfer.sh/blob/HEAD/LICENSE).