- Filter string hanya menampilkan string biner yang dapat dibaca, kunci dalam forensik dan CTF.
- Opsi seperti -n, -e, dan -t menyesuaikan panjang, penyandian, dan offset secara tepat.
- Dikombinasikan dengan grep, sort, head, dan binwalk, ia mempercepat investigasi yang kompleks.
- Untuk melindungi string sensitif, pertimbangkan enkripsi runtime dan pengaburan ringan.

Ketika Anda penasaran secara teknis, sedikit perintah Mereka memberikan kepuasan sebanyak strings. Utilitas kecil ini mampu mengungkap teks terbaca yang tersembunyi di tengah byte, baik dalam file yang dapat dieksekusi, pustaka, atau file yang tampaknya samar. Jika Anda bekerja dengan Linux, forensik, CTF atau debugging biner, menguasainya akan menghemat waktu Anda.
Dalam panduan ini kita akan memeras strings Dari awal hingga akhir: dari penggunaan dasar hingga kombinasi yang kuat dengan alat lain, termasuk Kasus steganografi di dunia nyata dalam teks, audio, dan gambar, serta tips untuk pengembang yang berusaha mencegah string sensitif mereka terekspos dalam biner. Anda akan menemukan contoh-contoh yang jelas dan teknik-teknik yang telah terbukti untuk membantu Anda memaksimalkannya.
Apa itu string dan mengapa mereka begitu berguna?
Perintah strings memeriksa suatu berkas dan hanya menampilkan rangkaian karakter yang dapat dicetak yang ada di dalamnya. Dalam biner, di mana noise melimpah, ini menyaring apa saja yang Anda minati.: nama, rute, pesan, tanda tangan, dan jalur eksekusi.
Untuk apa kita menggunakannya? Alasan yang paling umum sudah jelas: analisis forensik, debugging, dan sekadar rasa ingin tahu teknis . Dalam forensik dan respons insiden, ini membantu mengidentifikasi artefak (URL, pengguna, perintah, jalur instalasi). Dalam pengembangan, ini memastikan apakah sebuah string telah disematkan, dan dalam CTF, ini adalah alat serbaguna untuk referensi cepat.
Nuansa utama: secara default strings mencari string ASCII dengan panjang minimum yang dapat dikonfigurasi. Ini mencegah keluaran menjadi penuh dengan positif palsu., meskipun dapat disesuaikan dengan set karakter lain saat berkas memerlukannya.
Memulai: Penggunaan Perintah Penting
Panggilan yang paling sederhana adalah panggilan langsung. Jika Anda ingin mencantumkan semua string yang dapat dibaca dalam biner bernama ejemplo.bin:
strings ejemplo.bin
Secara default, alat ini menghasilkan urutan karakter yang dapat dicetak di atas panjang minimum tertentu. Menyesuaikan panjang ini memungkinkan Anda untuk menghilangkan gangguan yang tidak perlu dan fokus pada pesan yang relevan.
Misalnya, untuk hanya menampilkan string dengan 10 karakter atau lebih, gunakan pengubah panjang minimum: ini secara drastis mengurangi kecocokan yang tidak berguna.
strings -n 10 ejemplo.bin
Anda juga dapat memproses beberapa file sekaligus. Ini berguna saat memeriksa sekumpulan file biner (misalnya, folder berisi file yang dapat dieksekusi atau pustaka):
strings archivo1.bin archivo2.bin archivo3.bin
Opsi dan teknik lanjutan untuk menyempurnakan hasil
Optimasi pertama yang umum adalah menentukan pengkodean. Secara default, ASCII diasumsikan, tetapi jika Anda mencurigai adanya penyandian yang berbeda (8 bit, UTF-16LE/BE), parameternya -e itu adalah kunci.
Dalam implementasi GNU dari strings, bendera khas -e termasuk: s (7-bit) S (8-bit) l (16-bit little-endian), b (16-bit big-endian), L/B (varian). Contoh pencarian sekuens 8-bit:
strings -e S archivo.bin
Bila Anda ingin mengetahui letak setiap string dalam berkas, Anda menambahkan offset. Pengubah -t memungkinkan Anda memilih format gulir (desimal, oktal, heksadesimal):
strings -t x archivo.bin
Untuk biner yang besar, outputnya bisa sangat besar. Gabungkan dengan utilitas seperti head, grep, sort o uniq memberi Anda kembali kendaliMisalnya, untuk hanya menampilkan 100 string pertama:
strings archivo_grande.bin | head -n 100
Untuk memfilter berdasarkan kata kunci (misalnya, “token”): rantai dengan grep dan membatasi kebisingan:
strings -n 8 binario | grep -i token
Jika Anda perlu mengurutkan dan menghilangkan duplikat hasil dalam penelitian berskala besar, cobalah: mengurutkan dan menghapus duplikat membantu Anda melihat pola.
strings binario | sort | uniq -c | sort -nr
Dan jika Anda akan menyimpan outputnya, cara yang paling portabel adalah mengarahkannya kembali dengan shell: pengalihan dengan > Ini bersifat universal dan menghindari ketergantungan implementasi.
strings binario > cadenas.txt
Penggunaan praktis dalam analisis forensik
Dalam sistem yang terganggu, strings mempercepat pengenalan artefak. Dari eksekusi yang mencurigakan, Anda dapat mengekstrak jalur, domain, perintah, dan jejak persistensi. Referensi silang temuan ini dengan log atau IOC memperluas narasi insiden tersebut.
Di pustaka bersama, driver , atau modul, Anda akan melihat nama fungsi dan pesan kesalahan yang memberikan informasi tentang kemampuan atau komponen aktif. Pada kotak hitam seperti firmware, ini membantu mengidentifikasi merek pabrikan atau versi internal.
Sebuah tip: jika Anda bekerja dengan beberapa bagian, menambahkan bidang sumber untuk setiap string (misalnya, menambahkan awalan nama file dengan xargs atau menggunakan alat yang mencetak asal) agar dapat melakukan perubahan selanjutnya tanpa kehilangan konteks.
Steganografi dalam teks: yang tak terlihat juga berbicara
Steganografi tekstual sering kali bergantung pada karakter yang "tidak terlihat". Memeriksa ukuran sebenarnya dari teks dan membandingkannya dengan apa yang terlihat akan mengungkapkan petunjuk yang jelas; Anda dapat menampilkan karakter tersembunyi di Microsoft Office.
Teknik klasik adalah menyembunyikan bit menggunakan spasi dan tab di akhir setiap baris. Jika Anda menganggap spasi=0 dan tab=1, Anda dapat mengkodekan seluruh pesan biner tanpa mengubah tampilannya secara kasat mata.
Varian lain menggunakan karakter Unicode tak terlihat seperti Zero-Width Joiner/Non-Joiner. Karakter-karakter ini tidak terlihat secara visual tetapi menempati ruang , sehingga keberadaannya akan terungkap jika Anda menghitung karakternya.
Ada juga homoglif: bentuknya mirip huruf, tetapi memiliki kode titik yang berbeda . Dengan mengganti huruf dengan homoglif, teks yang tampak normal dapat membawa pesan paralel.
Alat seperti CyberChef memfasilitasi pemeriksaan dan teknik untuk menyembunyikan pesan dalam dokumen Word : alat ini memeriksa panjang teks, jumlah baris, dan karakter yang tidak dapat dicetak . Jika jumlahnya tidak sesuai dengan yang Anda lihat, curigai steganografi teks.
Steganografi Audio: Petunjuk Spektrum dan Metadata
Dalam audio, informasi sering disembunyikan di dalam spektrogram. Gambar atau pola muncul saat memvisualisasikan kepadatan frekuensi , tanpa disadari oleh pendengar biasa.
Beberapa trek disimpan di saluran terpisah. Mendengarkan atau menganalisis setiap saluran secara terpisah dengan Audacity atau editor serupa akan mengungkap pesan-pesan yang luput dari perhatian dalam campuran musik.
Jangan lupakan metadata (ID3, dll.). Kolom artis, album, atau komentar dapat berisi kata kunci . CyberChef membantu Anda memeriksa tag dengan cepat.
Untuk kasus "berisik" yang terdengar seperti modem lama, coba gunakan alat seperti Audiotap atau WAV-PRG. Suara berderit itu bisa jadi aliran data yang dikodekan untuk peralatan jadul atau protokol tertentu.
Untuk analisis visual audio yang detail, Sonic Visualiser dan SoX adalah pasangan yang ideal. Pembuatan spektrogram memungkinkan Anda untuk "melihat" informasi yang tidak dapat dibedakan oleh telinga.
Steganografi dalam Gambar: Kanal, LSB, dan Lainnya
Dalam gambar raster, setiap piksel biasanya memiliki empat komponen (R, G, B, A). Pemindaian saluran secara terpisah terkadang mengungkapkan teks atau simbol tersembunyi yang tidak terlihat dalam gambar komposit.
Teknik yang umum digunakan adalah memodifikasi bit paling tidak signifikan (LSB). Ini hanya sedikit mengubah warna, tetapi memungkinkan data untuk disematkan yang kemudian dapat diekstrak menggunakan kunci atau algoritma yang tepat.
Terdapat utilitas seperti Steghide yang memungkinkan Anda menyembunyikan dan mengekstrak data dari gambar (dan audio) yang dilindungi kata sandi. Stegsolve dan Stegonline menerapkan filter dan menawarkan daftar periksa khusus untuk CTF.
Metadata EXIF juga dapat berisi petunjuk tersembunyi: tanggal, lokasi, atau komentar dengan informasi yang relevan . Jangan lupa untuk meninjaunya pada tahap awal.
Untuk serangan brute-force terhadap kata sandi pada file yang cocok untuk Steghide, Stegseek sangat cepat. Jika Anda mencurigai kata sandi yang lemah, ini adalah cara cepat untuk mengkonfirmasi atau menolak hipotesis tersebut.
Stego di file “lainnya” dan tambahan: binwalk dan teman-teman
Selain gambar atau audio, trik "menempelkan" file ke akhir kontainer lain adalah hal yang umum. Binwalk mengidentifikasi tanda tangan dan mengekstrak artefak yang tertanam dengan beberapa flag yang dipilih dengan tepat.
Taktik lain melibatkan penyisipan data mentah di antara blok-blok yang dapat digunakan dalam sebuah file. Deteksi injeksi ini dapat dilakukan dengan relatif mudah menggunakan hex eye dan pengenalan pola (Base64, header, flag) .
Waspadai false positive: terutama pada PNG atau binary berukuran besar, binwalk mungkin menandai kecocokan yang sebenarnya adalah noise . Bandingkan dengan indikator lain sebelum menarik kesimpulan.
Dalam situasi ini, strings menjadi berguna lagi: mengekstrak teks yang dapat dibaca yang bertindak sebagai “utas” untuk ditarik untuk mengetahui apa yang ada di baliknya atau tempat untuk mencari tahu lebih detail.
Gabungkan string dengan ekosistem Unix lainnya
Kekuatan sesungguhnya terletak pada chaining. Misalnya, untuk memberi label setiap rantai dengan asal-usulnya saat menganalisis beberapa biner: gunakan loop shell atau find + xargs untuk mempertahankan konteks.
Jika Anda harus memprioritaskan, mengelompokkan, menghitung, dan mengurutkan hasil dengan sort y uniq -c. Melihat string mana yang paling banyak diulang akan memandu Anda ke bagian penting kode atau konfigurasi.
Untuk laporan cepat, simpan hasilnya ke dalam file dan bagikan. Pengalihan sederhana dan perintah grep selanjutnya memudahkan kerja tim dan peninjauan.
Dan ketika Anda peduli tentang offset, ingatlah bahwa dengan -t Anda dapat mengambil perpindahan dalam heksadesimal atau desimal, berguna untuk menyeberang dengan tempat pembuangan yang dibongkar atau hexdump.
Ketika Anda TIDAK ingin rantai Anda muncul: perspektif pengembangan
Banyak perusahaan secara internal mencatat nama fungsi atau rincian algoritma dan tidak ingin hal itu terlihat. Jika string tersebut dalam teks biasa dalam biner, strings akan mengkhianati mereka. Apa yang bisa dilakukan?
Salah satu idenya adalah hashing pada waktu kompilasi (template, literal UDL). Ini mengurangi paparan langsung tetapi dapat secara signifikan meningkatkan waktu kompilasi dan mempersulit portabilitas jika Anda mengandalkan kompiler lama (misalnya, VS2013 dengan dukungan C++14 yang terbatas).
Usulan lainnya adalah menyimpan data sebagai array char atau oktet dalam heksadesimal. Anda dapat menipu pencarian sepele dengan strings, tapi tetap meninggalkan jejaknya dan mempersulit pemeliharaan kode.
Penambalan pasca-kompilasi juga tersedia untuk mengenkripsi dan mendekripsi string saat runtime. Tantangannya terletak pada menjaga integritas file yang dapat dieksekusi dan stabilitasnya di semua platform target.
Saran realistis: Jika Anda tidak dapat mengandalkan server untuk mengambil string sesuai permintaan, terapkan dekripsi saat runtime dengan kunci turunan dan sedikit pengaburan (misalnya, pisahkan string, dekode di tumpukan, bebaskan memori segera). Tidak ada teknik yang sempurna, tetapi ini meningkatkan standar.
Strategi apa pun yang Anda pilih, pertimbangkan biayanya: waktu pengembangan, kompleksitas, kompatibilitas lintas platform, dan kinerja . Dalam banyak produk, keseimbangan praktis lebih berharga daripada solusi "sempurna" yang sulit dipelihara.
Bekerja dengan biner tanpa merusak apa pun: C++ dan Java
Jika Anda perlu membaca atau menulis biner untuk mengurai atau mengubahnya, hindari kesalahan dasar. Dalam C++ selalu dibuka dengan std::ios::binary, mengukur buffer dengan benar dan memeriksa hasil pembacaan. Dalam lingkungan Windows periksa bagaimana memanipulasi file dari CMD.
Kesalahan segmentasi umum terjadi karena menggunakan pointer tanpa memori yang valid, membaca lebih banyak byte daripada yang muat dalam buffer , atau menginterpretasikan struktur dengan ukuran/penyelarasan yang berbeda dari yang sebenarnya.
Jika Anda membuat serial struct dan kemudian Anda ingin memetakannya ke kelas, mempertimbangkan padding dan endianness. Aman untuk membaca std::vector<std::byte> dan secara sadar mengurai, daripada memberikan penilaian secara membabi buta.
Di Java, untuk teks, FileReader + BufferedReader mereka bekerja dengan baik; coba-dengan-sumber-daya memastikan penutupan meskipun ada pengecualian. Anda juga bisa menggunakan Files.lines() o Files.newBufferedReader() menunjukkan charset yang benar.
Untuk menulis teks, FileWriter y PrintWriter menyederhanakan format baris. Dengan NIO, Files.newBufferedWriter() memberi Anda kontrol dan opsi charset sebagai APPEND o WRITE.
Dalam biner, gunakan FileInputStream/FileOutputStream atau versi buffernya. Dibaca dalam potongan-potongan, dengan memperhatikan jumlah byte yang sebenarnya dibaca dan tulis hanya sepanjang itu untuk menghindari sampah atau pemotongan.
Kelas RandomAccessFile memungkinkan Anda melompat ke posisi tertentu. Ini sangat berguna ketika Anda mengetahui offset (misalnya, yang dicetak oleh strings -t) dan Anda ingin mengedit atau mengekstrak segmen tertentu.
Catatan kinerja: buffering meredam I/O dan mempercepat berbagai hal. BufferedInputStream/BufferedOutputStream mengurangi akses disk fisik, sesuatu yang penting dengan file besar.
Tips dan trik praktis dengan senar
Tingkatkan panjang minimum ketika biner sangat berisik. Un -n 8 o -n 12 menyaring string yang tidak informatif menjaga pesan tetap relevan.
Saat memeriksa malware atau biner yang dienkripsi, coba gunakan pengkodean 16-bit. Teksnya mungkin berupa byte nol yang berselang-seling (UTF-16LE/BE) dan dengan demikian tidak terdeteksi dalam ASCII murni.
Jika sebuah string penting, cari offsetnya dan periksa konteksnya dengan xxd o hexdump. Melihat byte di sekitar memperjelas apakah ada struktur atau pembatas berguna untuk ekstraksi yang tepat.
Dalam laporan, sertakan contoh output dengan offset dan sampel yang difilter. Akan lebih mudah bagi analis lain untuk mereplikasi dan memperluas penelitian jika Anda meninggalkan jejak tersebut.
Untuk jaringan pipa yang dapat direproduksi, perhatikan versi alatnya. Perbedaan implementasi kecil (misalnya varian -e) menjelaskan keluaran yang berbeda antar tim.
Beberapa suite memiliki fitur serupa dengan strings di Windows (misalnya, utilitas pihak ketiga yang terkenal). Jika Anda beroperasi di lingkungan campuran, periksa kompatibilitas dan sintaksis untuk menghindari sorpresa.
Steganografi bergantian antara inspeksi manual dan alat otomatis. CyberChef untuk teks/metadata, SoX atau Sonic Visualiser untuk audio, dan steghide/stegsolve untuk gambar mencakup sebagian besar skenario umum.
Bila binwalk melaporkan terlalu banyak temuan PNG atau biner berukuran besar, harap periksa. Kembali ke strings untuk mencari tanda tangan, nama, atau rute yang masuk akal sebelum menggambar buta.
Semua hal di atas menyatu menjadi satu ide sederhana: strings Ini adalah tampilan cepat dan murah pertamaJika tidak ada apa-apa di sana, Anda mungkin memerlukan teknik yang lebih mendalam, tetapi jika ada informasi, Anda sudah punya tempat untuk memulai.
Setelah melalui pilihan, kombinasi dan skenario (forensik, CTF, pengembangan dan stego), jelas bahwa pemahaman yang baik strings melipatgandakan kegunaannya. Gunakan dengan bijak, sesuaikan penyandian dan panjangnya, dan dukung di seluruh ekosistem. memungkinkan Anda mengekstrak nilai dari hampir semua biner tanpa mati saat mencobanya.
Penulis yang bersemangat tentang dunia byte dan teknologi secara umum. Saya suka berbagi ilmu melalui tulisan, dan itulah yang akan saya lakukan di blog ini, menunjukkan kepada Anda semua hal paling menarik tentang gadget, perangkat lunak, perangkat keras, tren teknologi, dan banyak lagi. Tujuan saya adalah membantu Anda menavigasi dunia digital dengan cara yang sederhana dan menghibur.
