run_me.png

Published on July 13, 2025

run_me.png

image

Pada challenge ini, kita diberikan sebuah program Python yang menyimpan data biner ke dalam sebuah gambar PNG

image

Program ini mengonversi isi file main menjadi sebuah gambar dengan cara mengemas setiap 3 byte sebagai satu warna pixel. Gambar yang dihasilkan menyimpan semua informasi dari file asli dalam bentuk visual. Teknik ini memungkinkan file biner disembunyikan atau ditransmisikan melalui file gambar.

image

Setelah kita tahu bahwa program pertama menyimpan isi file main ke dalam gambar hidden.png dengan cara mengubah setiap 3 byte menjadi satu warna pixel (RGB), maka langkah berikutnya adalah mengembalikan data tersebut ke bentuk semula. Program kedua atau program solver digunakan untuk tujuan ini. Program tersebut akan membuka gambar hidden.png, lalu membaca setiap pixel satu per satu. Nilai warna merah, hijau, dan biru dari setiap pixel dikumpulkan kembali menjadi urutan byte. Seluruh byte tersebut kemudian disatukan dan disimpan dalam file baru bernama extracted_main, yang merupakan hasil rekonstruksi dari file main sebelum dikonversi ke gambar.

Penjelasan program:

  • Membuka gambar hidden.png menggunakan library Pillow (PIL) untuk dibaca pixel-nya.
  • Mengambil ukuran gambar (lebar dan tinggi) untuk menentukan seberapa banyak pixel yang harus dibaca.
  • Melakukan iterasi terhadap setiap pixel dari kiri ke kanan, atas ke bawah.
  • Membaca nilai RGB dari setiap pixel dan menggabungkan ketiganya sebagai tiga byte data.
  • Mengumpulkan semua byte ke dalam satu bytearray, sehingga membentuk kembali data asli yang sebelumnya dikonversi.
  • Menyimpan hasil ekstraksi ke dalam file extracted_main dalam mode biner (wb), sebagai hasil rekonstruksi file asli.

Terakhir, tinggal cek isi file extracted_main untuk melihat flagnya

Flag: LK25{i_think_the_output_is_kinda_cool}
```