MSB
"This image passes LSB statistical analysis, but we can't help but think there must be something to the visual artifacts present in this image..."
MSB¤
Đề bài¤
Bước 1: Xác định định dạng thông tin file¤
Mô tả
Ảnh vượt qua các bài kiểm tra thống kê LSB thông thường nhưng xuất hiện các "dấu vết thị giác" (visual artifacts) lạ.
Phân tích ban đầu
Sử dụng các công cụ cơ bản để kiểm tra cấu trúc file:
- file: Xác nhận là định dạng PNG chuẩn.
- binwalk: Không phát hiện dữ liệu ẩn hoặc file đính kèm ở cuối (no trailing data).
- exiftool: Metadata sạch, không có thông tin nhạy cảm.
- pngcheck -v: Các khối IDAT hoàn toàn bình thường.
Bước 2: Dùng các công cụ¤
Dùng stegsolve¤
Dùng zsteg¤
Bước 3: Hướng tiếp cận khác¤
Note
Gợi ý về "visual artifacts" và việc LSB bị loại bỏ cho thấy kỹ thuật giấu tin nằm ở các bit có trọng số cao hơn. Cụ thể là MSB (Most Significant Bit - Bit 7). Khi thay đổi bit này, màu sắc của ảnh sẽ bị biến đổi nhẹ tạo ra các dải nhiễu mà mắt thường có thể lờ mờ nhận ra. Chúng ta xây dựng một script Python để trích xuất bit thứ 7 (MSB) từ mỗi kênh màu (R, G, B) của từng pixel, sau đó ghép lại thành chuỗi nhị phân và chuyển đổi sang định dạng ASCII.
Script tự động:
from PIL import Image
def extract_msb_bits(image_path):
img = Image.open(image_path)
pixels = list(img.getdata())
bitstream = ""
for pixel in pixels:
if isinstance(pixel, tuple):
for channel in pixel[:3]:
msb = (channel & 0b10000000) >> 7
bitstream += str(msb)
else:
msb = (pixel & 0b10000000) >> 7
bitstream += str(msb)
return bitstream
def bits_to_ascii(bitstream):
chars = []
for i in range(0, len(bitstream), 8):
byte = bitstream[i:i+8]
if len(byte) < 8:
continue
ascii_char = chr(int(byte, 2))
chars.append(ascii_char)
return ''.join(chars)
if __name__ == "__main__":
image_path = "Ninja-and-Prince-Genji-Ukiyoe-Utagawa-Kunisada.flag.png"
bitstream = extract_msb_bits(image_path)
hidden_text = bits_to_ascii(bitstream)
print(hidden_text)








