# hantar fail — kata laluan dijana automatik, pautan + kata laluan dipaparkan $ ttl send secret.pdf No password provided. Generate one? [Y/n]: Generated password: aB3kL9mX ·✧★◉ Thank goodness, secret.pdf is in orbit (1.2 MB) IMPORTANT! Save your password — required to download and decrypt the file. Password: aB3kL9mX https://ttl.space/aBcDeFgHiJ # muat turun — kata laluan diminta secara interaktif $ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, secret.pdf landed safe and sound (1.2 MB)
CLI mengendalikan penyulitan, muat naik, muat turun dan penyahsulitan secara automatik. Pelayan tidak pernah melihat kata laluan atau data teks biasa Anda.
$ brew install tweenietomatoes/ttl/ttl
$ scoop bucket add ttl https://github.com/tweenietomatoes/scoop-ttl $ scoop install ttl
# muat turun daripada keluaran untuk platform Anda $ curl -Lo ttl.tar.gz \ https://github.com/tweenietomatoes/ttl/releases/latest/download/ttl_linux_amd64.tar.gz $ tar xzf ttl.tar.gz && sudo mv ttl /usr/local/bin/
$ go install github.com/tweenietomatoes/ttl/cmd/ttl@latest
$ git clone https://github.com/tweenietomatoes/ttl $ cd ttl && go build -o ttl ./cmd/ttl/ $ sudo mv ttl /usr/local/bin/
$ ttl version ttl v1.3.0
# jana kata laluan automatik, TTL lalai 7 hari $ ttl send report.xlsx
Jika kata laluan tidak dinyatakan dalam terminal, CLI akan bertanya:
No password provided. Generate one? [Y/n]:
Tekan Enter atau taip y untuk menjana secara automatik.
$ ttl send -p mySecretPass -t 1h document.pdf
# fail dipadamkan secara kekal selepas muat turun pertama $ ttl send -b photo.jpg
$ ttl send -t 5m temp-credentials.txt # tamat tempoh dalam 5 minit $ ttl send -t 30m meeting-link.txt # tamat tempoh dalam 30 minit $ ttl send -t 6h backup.tar.gz # tamat tempoh dalam 6 jam $ ttl send -t 1d daily-report.pdf # tamat tempoh dalam 1 hari $ ttl send -t 3d project-archive.zip # tamat tempoh dalam 3 hari $ ttl send -t 5d design-assets.zip # tamat tempoh dalam 5 hari $ ttl send report.xlsx # tamat tempoh dalam 7 hari (lalai)
$ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)
Kata laluan dibaca secara selamat — tidak dipaparkan dalam terminal. Nama fail asal dikekalkan.
# Anda boleh menggunakan token 10 aksara sahaja tanpa URL penuh $ ttl get aBcDeFgHiJ Enter password: ******** Password verified ◉★✧· Phew, document.pdf landed safe and sound (4.2 MB)
$ ttl get -o ~/Downloads aBcDeFgHiJ
Secara lalai, fail disimpan dalam direktori semasa. Gunakan -o / --output untuk menyatakan direktori lain.
$ ttl get -p mySecretPass https://ttl.space/aBcDeFgHiJ
Anda juga boleh memuat turun dan menyahsulit fail dalam pelayar Anda dengan melawat pautan secara terus. Antara muka web menggunakan pustaka penyulitan yang sama dan akan meminta kata laluan Anda. Tiada pemasangan perisian diperlukan.
Kata laluan adalah asas kunci penyulitan. Ia tidak pernah meninggalkan peranti Anda dan tidak pernah dihantar ke pelayan. Ia boleh dinyatakan melalui lima cara berbeza:
$ ttl send notes.txt No password provided. Generate one? [Y/n]: y Generated password: aB3kL9mX
Menjana kata laluan 8 aksara secara rawak kriptografi daripada set aksara [0-9A-Za-z]. Hanya tersedia semasa send dalam terminal.
$ ttl send notes.txt No password provided. Generate one? [Y/n]: n Enter password: ******** Confirm password: ******** $ ttl get https://ttl.space/aBcDeFgHiJ Enter password: ********
Kata laluan tidak dipaparkan pada skrin dan tidak disimpan dalam sejarah shell. Semasa send, penjanaan automatik ditawarkan dahulu; jika Anda menaip kata laluan sendiri, Anda diminta memasukkannya sekali lagi untuk pengesahan. Semasa get, ia diminta secara terus.
-p / --password$ ttl send -p mySecretPass file.zip $ ttl get --password mySecretPass https://ttl.space/aBcDeFgHiJ
-p / --password kelihatan dalam output ps aux dan mungkin disimpan dalam sejarah shell (~/.bash_history). Elakkan penggunaan dalam persekitaran dikongsi dan skrip. Gunakan --password-stdin atau --password-file sebaliknya.--password-stdin# pipe dengan echo $ echo "mySecretPass" | ttl send --password-stdin backup.tar.gz # pipe daripada pengurus kata laluan $ pass show ttl/key | ttl send --password-stdin data.zip # pipe daripada pemboleh ubah persekitaran $ printenv MY_SECRET | ttl get --password-stdin https://ttl.space/aBcDeFgHiJ # heredoc $ ttl send --password-stdin report.pdf <<<"mySecretPass"
Membaca baris pertama daripada stdin. Berguna dalam skrip, talian paip CI/CD dan automasi. Jika stdin bukan terminal dan sumber kata laluan tidak dinyatakan, CLI akan keluar dengan ralat (kecuali jika --json digunakan — dalam kes itu kata laluan dijana automatik).
--password-file$ ttl send --password-file /run/secrets/key report.xlsx $ ttl get --password-file ~/.ttl-key https://ttl.space/aBcDeFgHiJ
Membaca baris pertama fail (aksara baris baharu di hujung dipotong). Serasi dengan Docker secrets (/run/secrets/), fail Vault agent dan struktur serupa.
ttl.passwordJika kata laluan tidak dinyatakan secara eksplisit, CLI mencari fail ttl.password bersebelahan fail boleh laksana, kemudian ~/.ttl/password. Baris pertama digunakan sebagai kata laluan.
-p / --password, --password-stdin dan --password-file tidak boleh digabungkan. Fail ttl.password yang dikesan automatik hanya disemak apabila tiada satu pun dinyatakan. Panjang minimum kata laluan ialah 8 aksara.| Bendera | Penerangan | Lalai |
|---|---|---|
-p, --password P | Kata laluan penyulitan | interaktif |
--password-stdin | Baca kata laluan daripada stdin | |
--password-file F | Baca kata laluan daripada fail | |
-t, --ttl TEMPOH | Masa untuk hidup | 7d |
-b, --burn | Padam selepas dibaca (satu muat turun) | mati |
--timeout TEMPOH | Had masa pemindahan | automatik |
--server URL | URL pelayan | https://ttl.space |
-h3, --http3 | Cuba HTTP/3 (QUIC), kembali ke TCP | mati |
--json | Tulis output JSON ke stdout (untuk skrip dan ejen AI) | mati |
| Bendera | Penerangan | Lalai |
|---|---|---|
-p, --password P | Kata laluan penyahsulitan | interaktif |
--password-stdin | Baca kata laluan daripada stdin | |
--password-file F | Baca kata laluan daripada fail | |
-o, --output DIR | Direktori output | direktori semasa |
--timeout TEMPOH | Had masa pemindahan | automatik |
-h3, --http3 | Cuba HTTP/3 (QUIC), kembali ke TCP | mati |
--json | Tulis output JSON ke stdout (untuk skrip dan ejen AI) | mati |
Percuma: 5m 10m 15m 30m 1h 2h 3h 6h 12h 24h 1d 2d 3d 4d 5d 6d 7d
Tambahan Orbit: 14d 15d 28d 30d
Lalai: automatik — dikira berdasarkan saiz fail dengan andaian 1 Mbps + 2 minit margin (minimum 5 minit). Ganti dengan --timeout 10m atau --timeout 1h.
#!/bin/bash tar czf /tmp/backup.tar.gz /data echo "$BACKUP_KEY" | ttl send --password-stdin -t 6h /tmp/backup.tar.gz rm /tmp/backup.tar.gz
$ ttl send -p mypass123 file.pdf | pbcopy
$ ttl send -p mypass123 file.pdf | xclip -sel clip
$ echo "$DB_PASSWORD" | ttl send --password-stdin -b -t 5m credentials.env # pautan berfungsi tepat sekali sahaja, tamat tempoh dalam 5 minit
# hantar — kata laluan dijana automatik dalam mod JSON $ ttl --json send report.pdf {"ok":true,"link":"https://ttl.space/xK9mQ2vLpA","filename":"report.pdf","size":2097152,"ttl":"7d","burn":false,"password":"aB3kL9mX"} # muat turun $ ttl --json get -p aB3kL9mX xK9mQ2vLpA {"ok":true,"filename":"report.pdf","size":2097152,"saved_to":"/home/user/report.pdf"} # ralat mengembalikan ok:false {"ok":false,"error":"Link not found"}
Dalam mod --json, semua output diberikan sebagai JSON berstruktur ke stdout. Semasa penghantaran, jika kata laluan tidak dinyatakan, ia dijana automatik dan disertakan dalam respons. Kod keluar ialah 0 untuk berjaya, 1 untuk ralat.
Orbit menawarkan fail yang lebih besar (10 GB), penyimpanan lebih lama (30 hari) dan pengurusan fail (senarai dan padam).
Kunci API dikesan automatik: pemboleh ubah persekitaran TTL_API_KEY, ttl.key bersebelahan fail boleh laksana, atau ~/.ttl/key. Gunakan ttl activate untuk menyimpan kunci Anda atau tulis secara manual ke salah satu lokasi ini.
# aktifkan kunci Anda $ ttl activate ttl_orbit_aBcDeFgHiJ... Orbit plan activated. Key saved to /usr/local/bin/ttl.key # semak pelan dan penggunaan $ ttl plan Plan: orbit Max file size: 10.0 GB Max TTL: 30 days Uploads per day: Unlimited Usage: Uploads today: 3 Active storage: 1.2 GB / 500.0 GB # hantar dengan TTL dilanjutkan $ ttl send -t 30d large-backup.tar.gz # senaraikan muat naik terkini $ ttl list xK9mQ2vLpA 4.2 MB 2026-03-16 10:30 → 2026-04-15 10:30 [active] https://ttl.space/xK9mQ2vLpA rT7bNw3KpF 912.0 KB 2026-03-15 14:20 → 2026-03-17 14:20 [active (burn)] https://ttl.space/rT7bNw3KpF # padam fail lebih awal $ ttl delete xK9mQ2vLpA Deleted: xK9mQ2vLpA # buang kunci yang disimpan $ ttl deactivate Key file removed: /usr/local/bin/ttl.key
ttl send / ttl get atau mod --json. Titik akhir di bawah adalah untuk pengurusan fail Orbit.$ curl https://ttl.space/v1/files -H "X-API-Key: ttl_orbit_..." {"files":[{"token":"xK9mQ2vLpA","link":"https://ttl.space/xK9mQ2vLpA","size_bytes":1048576,"created_at":1711800600,"expires_at":1714392600,"burn":false,"expired":false}]}
Mengembalikan semua fail yang dimuat naik dengan kunci ini. Memerlukan pelan Orbit.
$ curl -X DELETE https://ttl.space/v1/files/xK9mQ2vLpA -H "X-API-Key: ttl_orbit_..."
Mengembalikan 204 No Content apabila berjaya. Memerlukan pelan Orbit. Fail mesti milik kunci ini.
| Status | Makna |
|---|---|
401 | Kunci API tidak sah atau tamat tempoh |
403 | Ciri memerlukan pelan Orbit |
404 | Fail tidak dijumpai atau bukan milik kunci ini |
429 | Had permintaan melebihi |
| Sekatan | Percuma | Orbit |
|---|---|---|
| Saiz fail maks | 2 GB | 10 GB |
| TTL maks | 7 hari | 30 hari |
| Muat naik harian | 10 | 50 |
| Kuota penyimpanan | — | 500 GB |
| Senarai dan padam | — | ✓ |
| Panjang kata laluan min | 8 aksara | |
| Permintaan per IP | 30 dalam 10 saat | |
| Sambungan per IP | 10 serentak | |
Fail disulitkan pada peranti Anda sebelum dimuat naik. Pelayan hanya menyimpan teks sifer dan tidak boleh menyahsulit fail Anda.
| Komponen | Algoritma / Nilai |
|---|---|
| Terbitan kunci | Argon2id (time=3, memory=64 MB, parallelism=1) |
| Sifer | XChaCha20-Poly1305 AEAD |
Sebarang pengubahsuaian pada teks sifer akan menyebabkan penyahsulitan gagal. Pelayan mengesahkan bahawa pemuat turun mengetahui kata laluan yang betul menggunakan token sehala yang diterbitkan daripada kunci penyulitan, sebelum menyerahkan teks sifer.