Identifikasi Enkripsi

Tempel nilai yang ingin diidentifikasi.

Identifikasi format

Anda telah mengambil hasil dump basis data dan menemukan string seperti $2y$10$... atau 5f4dcc3b5aa765d61d8327deb882cf99; Anda perlu memahami isi string tersebut sebelum mulai melakukan pemecahan atau pembalikan enkripsi. Identifier ini menerapkan pendekatan heuristik terhadap panjang, karakter set, struktur, dan prefiks untuk menduga algoritma atau metode pengkodean yang paling mungkin digunakan dalam sampel teks terenkripsi.

Cara mengidentifikasi teks sandi

  1. 1

    Tempel sampel

    Satu hash tunggal, blok teks terenkripsi, token, atau string terenkripsi.

  2. 2

    Lihat format yang cocok

    Hasil mengurutkan format yang cocok: yang paling mungkin berada di urutan teratas, lalu kemungkinan lain dari sampel tersebut.

  3. 3

    Periksa silang

    Jika ada beberapa format yang cocok, gunakan hash cracker atau decoder untuk memastikan mana yang benar.

  4. 4

    Perhatikan ketidakpastiannya

    Identifikasi dari satu sampel saja jarang bersifat pasti; jika tidak ada yang cocok, alat ini akan menyatakannya.

Format yang dikenali alat ini

Hash heksadesimal, dikenali dari panjangnya (huruf besar atau kecil):

Panjang (karakter heksadesimal) Paling mungkin
8 CRC32 atau checksum 32-bit lainnya
32 MD5, MD4, atau NTLM
40 SHA-1 atau RIPEMD-160
56 SHA-224 atau SHA3-224
64 SHA-256 atau SHA3-256
96 SHA-384 atau SHA3-384
128 SHA-512 atau SHA3-512

Sebagai contoh, d63dc919e201d7bc4c825630d2cf25fdc93d4b2f0d46706d29038d01 terdiri dari 56 karakter: itu adalah hash SHA-224 dari kata “password”.

Hash kata sandi, dikenali dari prefiks dan strukturnya:

  • $2a$, $2b$, $2y$: bcrypt, dengan faktor biaya yang dibaca dari prefiks
  • $1$: md5crypt; $apr1$: Apache MD5 (htpasswd)
  • $5$ dan $6$: sha256crypt dan sha512crypt
  • $y$: yescrypt; $7$ dan $scrypt$: scrypt
  • $argon2id$, $argon2i$, $argon2d$: Argon2
  • $pbkdf2-sha256$ (passlib) dan pbkdf2_sha256$ (Django): PBKDF2
  • $P$ dan $H$: phpass (WordPress, phpBB); $S$: Drupal 7
  • * yang diikuti 40 karakter heksadesimal: MySQL 4.1+
  • {SSHA}, {SHA}, dan skema LDAP umum lainnya

Untuk kasus yang umum, hasilnya juga menampilkan mode hashcat (-m): MD5 0, NTLM 1000, SHA-1 100, SHA-256 1400, SHA-512 1700, bcrypt 3200, md5crypt 500, sha256crypt 7400, sha512crypt 1800, phpass 400, Drupal 7 7900, MySQL 4.1+ 300, dan Django PBKDF2-SHA256 10000.

Kunci, token, dan pengenal:

  • Blok PEM (-----BEGIN ...-----): kunci privat (RSA, EC, OpenSSH, PKCS #8), kunci privat yang dilindungi kata sandi, kunci publik, sertifikat X.509, dan permintaan sertifikat
  • ASCII armor OpenPGP: pesan terenkripsi (BEGIN PGP MESSAGE), blok kunci, dan tanda tangan
  • Kunci publik OpenSSH (ssh-rsa, ssh-ed25519, ecdsa-sha2-...)
  • JSON Web Token: header-nya didekode untuk menampilkan alg dan typ, dan token lima bagian yang memiliki field enc adalah JWE terenkripsi
  • UUID beserta versinya (sebuah pengenal, bukan hash)

Enkoding, hanya jika tidak ada pola lain yang lebih spesifik yang cocok:

  • Heksadesimal, Base32, Base64, dan Base64url, dengan panjang hasil dekode dalam byte, serta enkoding URL (percent-encoding).
  • Data heksadesimal atau Base64 yang panjang hasil dekodenya kelipatan 16 byte bisa jadi merupakan keluaran cipher blok seperti AES; panjang 128, 256, 384, atau 512 byte juga bisa berupa data terenkripsi RSA atau tanda tangan digital. Data Base64 atau Base32 sepanjang 16, 20, 28, 32, 48, atau 64 byte bisa jadi merupakan hash MD5, SHA-1, atau SHA-2 mentah.

Apa yang tidak dapat ditentukan oleh identifikasi

  • Algoritma yang pasti dengan kepastian 100%. String 64 karakter heksadesimal dilaporkan sebagai SHA-256 atau SHA3-256, tetapi BLAKE2s dan hash 256-bit lainnya tampak persis sama. Hash MD5, MD4, dan NTLM sama-sama terdiri dari 32 karakter heksadesimal.
  • Cipher yang dipakai untuk mengenkripsi data. Data terenkripsi tampak acak. Panjangnya hanya mempersempit pilihan, sehingga AES atau RSA hanyalah kemungkinan, bukan kepastian.
  • Kekuatan kunci. Hash bcrypt menampilkan faktor biaya dalam prefiksnya ($2y$10$ = biaya 10), tetapi tidak mencerminkan kekuatan kata sandi yang sebenarnya.
  • Apakah memakai salt atau tidak. Hash kata sandi modern (bcrypt, Argon2) selalu memakai salt, sedangkan yang lama (MD5/SHA mentah) mungkin memakainya, mungkin juga tidak.
  • Teks asli (plaintext). Identifikasi tidak membalikkan nilai hash; pemecahan hash merupakan proses terpisah yang hanya sah dilakukan pada data Anda sendiri.

Ketika identifikasi salah

  • Token dengan prefiks khusus. Terkadang aplikasi membungkus hash dengan prefiksnya sendiri; hapus pembungkus tersebut terlebih dahulu.
  • Enkoding ganda. Hash biner yang diubah ke heksadesimal lalu dibungkus lagi dengan Base64 akan salah dikenali. Coba dekode sekali, lalu periksa kembali.
  • Panjang yang tidak biasa. Hash yang terpotong (misalnya 16 karakter pertama SHA-256 yang dipakai sebagai ID) akan tampil sebagai data heksadesimal biasa, karena panjangnya tidak cocok dengan hash mana pun di tabel atas.
  • Beberapa nilai sekaligus. Pemeriksaan hanya membaca satu nilai. Jika Anda menempelkan daftar hash, hanya baris pertama yang diperiksa; tempel nilai lainnya satu per satu.

Kasus Penggunaan

  • Audit keamanan: pengkatalogan jenis hash di seluruh basis kode sebelum migrasi kriptografi.
  • Tantangan CTF: evaluasi awal yang cepat terhadap objek yang tidak diketahui.
  • Respons insiden: mengidentifikasi format kredensial yang bocor.
  • Debugging framework: menentukan jenis pengkodean yang dihasilkan oleh suatu pustaka.

Pengingat Etika

Mengidentifikasi format hash merupakan bentuk penelitian pasif. Memecahkan nilai hash milik orang lain tanpa izin melanggar undang-undang penyalahgunaan komputer di sebagian besar yurisdiksi. Hanya lakukan analisis terhadap nilai hash yang dimiliki atau telah diberi wewenang untuk dianalisis.

Pertanyaan yang Sering Diajukan

Secara parsial: MD5 terdiri dari 32 karakter heksadesimal, sedangkan SHA-1 terdiri dari 40 karakter heksadesimal. Jika kedua algoritma memiliki panjang yang sama, hasil hash saja tidak dapat digunakan untuk membedakannya. Perbedaan tersebut umumnya dapat ditentukan berdasarkan konteks, seperti nama kolom basis data, pengaturan default framework, atau skema yang bocor.

Tidak. Proses ini hanya berfungsi untuk identifikasi. Untuk membalikkan nilai hash atau mendekripsi teks terenkripsi diperlukan alat khusus (serta kunci atau sumber daya komputasi yang diperlukan untuk pemecahan), dan hanya boleh dilakukan pada materi yang dimiliki secara pribadi.

Argon2id (atau bcrypt dengan faktor biaya tinggi) merupakan rekomendasi saat ini. PBKDF2-SHA256 dan scrypt masih dapat diterima. MD5 polos, SHA-1, atau SHA-256 tanpa salt tidak aman untuk penyimpanan kata sandi.

Tidak. Nilai yang Anda tempel dikirim ke server kami untuk pemeriksaan format, tetapi tidak disimpan dalam basis data apa pun dan tidak ditambahkan ke tautan halaman. Di antara kedua langkah, nilai tersebut disimpan sementara di tab browser ini, dan tombol “Mulai dari awal” akan menghapusnya.

Alat Terkait

Alat ini tersedia dalam bahasa lain