kurang berarti
Description
help me to find the hidden message in this photo
Author: H4NN
Diberikan chall.jpg
dan enc.py
.
Berikut adalah enc.py
yang sudah saya annotate.
def insert_plaintext_into_image(input_file, output_file, plaintext, offset):
# read file
with open(input_file, 'rb') as file:
file_bytes = bytearray(file.read())
# change plaintext to binary
plaintext_binary = ''.join(format(ord(char), '08b') for char in plaintext)
plaintext_index = 0
plaintext_length = len(plaintext_binary)
# start from an offset
for i in range(offset, len(file_bytes)):
if plaintext_index < plaintext_length:
original_byte = file_bytes[i]
plaintext_bit = int(plaintext_binary[plaintext_index])
# update the file byte with these
new_byte = (original_byte & 0xFE) | plaintext_bit
file_bytes[i] = new_byte
plaintext_index += 1
else:
break
with open(output_file, 'wb') as file:
file.write(file_bytes)
print(f"{output_file}")
input_file = ''
output_file = 'chall.jpg'
plaintext = "flag"
offset = 0x00000D00
insert_plaintext_into_image(input_file, output_file, plaintext, offset)
Pada chall.jpg
, telah ditaruh plaintext berupa binary string ke dalam data bytes dari gambar. Saya mencoba melakukan eksplorasi untuk memahami cara penaruhan plaintext tersebut.
Di sini, & 0xFE
akan membulatkan suatu bilangan ke bilangan genap sebelumnya. Setelah itu, melakukan | 1
pada hasilnya sama seperti menambahkan nilai hasilnya dengan 1 (atau 0 jika | 0
). Intinya, dapat ditarik kesimpulan bahwa jika suatu byte gambar ganjil, maka bit binary dari plaintext nya adalah ‘1’, sedangkan jika byte-nya genap maka ‘0’.
Karena panjang flag tidak diketahui, saya asumsikan saja panjang binary stringnya terdiri dari 800 bit.
with open("chall.jpg", 'rb') as file:
file_bytes = bytearray(file.read())
offset = 0x00000D00
result_bin = ""
print("skjhagd")
# start from an offset
for i in range(offset, len(file_bytes)):
if i == 800:
break
if (file_bytes[i] % 2) == 0:
result_bin += '0'
else:
result_bin += '1'
print(result_bin)
Hasil binarynya kita tinggal decode saja menggunakan Cyberchef
.
Flag: TechnoFair11{patenkalikaubang}
Last updated