Lompat ke konten
dokumentasi.id
Commit 89c41b0
v1
Star3,2 rb

2

Placeholder dan Konvensi Penulisan One-liner

Repository ini tidak menyertakan skrip pembungkus atau parser: placeholder hanyalah teks literal yang pembaca ganti sendiri sebelum perintah dijalankan. Bagian Definitions di README menetapkan bentuk-bentuk placeholder itu beserta artinya README.md:6-15, dengan kalimat pembuka yang menyatakan bahwa bagian tersebut mendefinisikan istilah dan placeholder yang dipakai di seluruh one-liner README.md:8.

Enam placeholder dan artinya

README memberi nomor pada setiap butir definisi, dan nomor itu memperlihatkan pasangan konsepnya: 1.1 dan 1.2 untuk keluarga HOST, 2.1 dan 2.2 untuk keluarga URL README.md:10-13.

PlaceholderArti menurut READMEContoh penggantianRujukan
HOSTsatu hostname, (sub)domain, atau IP addressinternal.host, domain.tld, sub.domain.tld, 127.0.0.1README.md:10
HOSTS.txtberkas yang memuat lebih dari satu nilai kriteria 1.1daftar subdomain satu programREADME.md:11
URLURL utuh yang dimulai dengan protokol HTTP/HTTPShttp://domain.tld/path/page.htmlREADME.md:12
URLS.txtberkas yang memuat lebih dari satu nilai kriteria 2.1daftar URL hasil crawlREADME.md:13
FILE.txt / FILE{N}.txtberkas yang dibutuhkan perintah sesuai konteks dan kebutuhannyaFILE1.txt, FILE2.txtREADME.md:14
OUT.txt / OUT{N}.txtberkas tujuan penyimpanan hasil perintahOUT.txtREADME.md:15

Pemetaan placeholder ke nilai nyata

graph LR
  HOST["HOST"] --> V1["domain.tld"]
  HOST --> V2["sub.domain.tld"]
  HOST --> V3["127.0.0.1"]
  URL["URL"] --> V4["http://domain.tld/path/page.html"]
  HOSTS["HOSTS.txt"] --> HOST
  URLS["URLS.txt"] --> URL
  FILE["FILE.txt / FILE{N}.txt"] --> OUT["OUT.txt / OUT{N}.txt"]
  style HOST fill:#f59e0b,color:#000
  style URL fill:#f59e0b,color:#000
  style HOSTS fill:#8b5cf6,color:#fff
  style URLS fill:#8b5cf6,color:#fff
  style FILE fill:#336791,color:#fff
  style OUT fill:#336791,color:#fff
  style V1 fill:#2d7d46,color:#fff
  style V2 fill:#2d7d46,color:#fff
  style V3 fill:#2d7d46,color:#fff
  style V4 fill:#2d7d46,color:#fff
%% fig: Placeholder ke nilai nyata
%% desc: HOST dan URL diisi satu nilai konkret, sedangkan HOSTS.txt dan URLS.txt mengumpulkan banyak nilai; FILE.txt menyimpan hasil antara dan OUT.txt hasil akhir.
Fig. 1: Placeholder ke nilai nyataHOST dan URL diisi satu nilai konkret, sedangkan HOSTS.txt dan URLS.txt mengumpulkan banyak nilai; FILE.txt menyimpan hasil antara dan OUT.txt hasil akhir.

Satu nilai versus satu berkas

HOST diisi satu target, jadi ia muncul langsung sebagai argumen flag: subfinder -d HOST -all -silent README.md:61. Sebaliknya HOSTS.txt dipakai untuk banyak target, dan bentuk pemakaiannya berbeda-beda. Ada yang membaca berkas lewat pipa, cat HOSTS.txt | getJS | httpx README.md:54, ada yang menyerahkannya sebagai argumen program, python3 hosthunter.py HOSTS.txt > OUT.txt README.md:390, dan ada yang memakai xargs dengan replace-str %, cat HOSTS.txt | xargs -I % python3 paramspider.py -l high -o ./OUT/% -d % README.md:274. Ketiga bentuk itu menuntut penggantian yang sama, yaitu mengisi berkasnya, tetapi susunan perintahnya tidak dapat dipertukarkan.

Pola yang sama berlaku untuk keluarga URL. URLS.txt muncul sebagai nilai flag, gospider -S URLS.txt -c 10 -d 5 README.md:42, dan juga sebagai sumber while read, cat URLS.txt | while read h do README.md:82.

FILE.txt sebagai simpanan sementara

FILE.txt bukan berkas masukan yang harus disiapkan pembaca. Pada many one-liner ia ditulis oleh perintah pertama lalu dibaca ulang oleh perintah berikutnya dalam rantai yang sama: tee FILE.txt && cat FILE.txt | dalfox -b YOURS.xss.ht pipe > OUT.txt README.md:48. Ketika satu perintah butuh dua tempat penampungan sekaligus, README memakai bentuk berindeks, tee -a FILE1.txt dan tee -a FILE2.txt README.md:249, sesuai definisi FILE{N}.txt README.md:14.

⚠️ Placeholder FILE juga muncul tanpa ekstensi: subfinder -d HOST >> FILE; assetfinder --subs-only HOST >> FILE README.md:267. Definisinya menyebut FILE.txt atau FILE{N}.txt README.md:14, jadi bentuk tanpa ekstensi itu menyimpang dari konvensi meskipun maksudnya sama, yaitu berkas penampung sementara.

OUT.txt dan varian direktori

OUT.txt adalah ujung rantai. Contoh paling ringkas ada pada python3 hosthunter.py HOSTS.txt > OUT.txt README.md:390 dan pada > OUT.txt di akhir one-liner XSS README.md:48.

⚠️ OUT juga dipakai sebagai nama direktori, bukan nama berkas: -o ./OUT/% README.md:274. Di situ % adalah replace-str dari xargs -I %, sehingga perintah menulis ke direktori OUT yang harus sudah ada sebelum perintah dijalankan.

Placeholder yang tidak masuk Definitions

Beberapa penanda dipakai di one-liner tanpa butir definisi, sehingga pembaca harus menyimpulkannya dari konteks. YOURS.xss.ht adalah host blind XSS pribadi yang diisi pada flag -b dalfox README.md:48. Keyword FUZZ milik ffuf digabung dengan HOST menjadi https://FUZZ.HOST README.md:221, dan dipakai terpisah pada -H "Host: FUZZ" README.md:362. Satu one-liner bahkan tidak memakai placeholder sama sekali, melainkan positional parameter skrip, curl -s $1 ... grep $2 | grep -v $3 README.md:341.

Placeholder yang dibungkus variabel shell

Sebagian penulis membungkus nilai di awal perintah agar penggantian cukup sekali. Bentuk yang muncul adalah export LHOST="URL" README.md:30, export host="HOST" README.md:118, dan site="URL" README.md:355. Setelah baris itu perintah memakai $LHOST, $host, atau $site, jadi teks yang diganti tetap satu nilai tunggal. Yang perlu dibedakan adalah variabel hasil while read, seperti LINE README.md:75 dan h README.md:82: keduanya bukan placeholder, karena nilainya berasal dari stdin.

Aturan penggantian

  1. Ganti semua kemunculan placeholder dalam satu perintah; nama berkas placeholder dipakai apa adanya, yaitu HOSTS.txt dan URLS.txt README.md:11-13.
  2. Placeholder ditulis huruf besar tanpa tanda $; awalan $ hanya dipakai untuk variabel shell yang memang diekspor lebih dulu README.md:30.
  3. Indeks {N} pada FILE{N}.txt dan OUT{N}.txt diganti angka, misalnya FILE1.txt dan FILE2.txt README.md:249, sesuai rentang definisi README.md:14-15.
  4. Bila targetnya banyak, pindahkan nilai tunggal ke HOSTS.txt atau URLS.txt, lalu sesuaikan bentuk masukan perintahnya, apakah dibaca lewat cat atau diserahkan sebagai argumen README.md:54 README.md:390.
graph LR
  IN["HOSTS.txt atau URLS.txt"] --> PIPE["cat berkas | perintah"]
  PIPE --> MID["FILE.txt"]
  MID --> SECOND["perintah kedua"]
  PIPE --> RESULT["OUT.txt"]
  SECOND --> RESULT
  style IN fill:#8b5cf6,color:#fff
  style PIPE fill:#f59e0b,color:#000
  style MID fill:#336791,color:#fff
  style SECOND fill:#f59e0b,color:#000
  style RESULT fill:#2d7d46,color:#fff
%% fig: Peran berkas dalam satu one-liner
%% desc: Berkas masukan dibaca lewat pipe, hasil antara ditulis ke FILE.txt untuk dipakai perintah berikutnya, dan hasil akhir disimpan ke OUT.txt.
Fig. 2: Peran berkas dalam satu one-linerBerkas masukan dibaca lewat pipe, hasil antara ditulis ke FILE.txt untuk dipakai perintah berikutnya, dan hasil akhir disimpan ke OUT.txt.

Kaitan dengan halaman lain

Konvensi di halaman ini dipakai ulang di seluruh dokumentasi. Penerapannya pada pengumpulan aset dibahas di Teknik Recon dan Pengumpulan Aset, sedangkan susunan rantai perintah yang menghubungkan FILE.txt dan OUT.txt dibahas di Alur Pipeline dan Toolchain.