คลัง
stego

ExifTool

ExifTool เป็นเครื่องมือมาตรฐานสำหรับอ่าน/เขียน metadata ของไฟล์เกือบทุกชนิด (รูป, วิดีโอ, เสียง, เอกสาร, PDF) เป็นหนึ่งใน tool แรกที่ต้องรันในทุกโจทย์ stego/forensics บทนี้ลงลึกคำสั่งทุกแบบ การดึงข้อมูลซ่อน และเทคนิคที่ใช้บ่อยใน CTF

BeginnerIntermediate#exiftool#stego#metadata#exif#thumbnail#ctf

1. ทำไม exiftool สำคัญ

ExifTool รองรับ metadata หลายร้อย format และอ่าน tag ได้ละเอียดที่สุด — รวมถึง tag ที่ซ่อน/ไม่มาตรฐานที่ tool อื่นไม่เห็น เป็น เครื่องมือแรกในทุกโจทย์ stego เพราะหลายครั้ง flag ซ่อนใน metadata ตรงๆ และเสียเวลาแค่วินาทีเดียว

2. คำสั่งอ่าน metadata

อ่านทุกแบบLinux
exiftool file.jpg                  # ทุกฟิลด์ (อ่านง่าย)
exiftool -a -u -g1 file.jpg        # -a: duplicate, -u: unknown, -g1: จัดกลุ่ม
exiftool -s file.jpg               # ชื่อ tag จริง (ไว้ใช้ดึงเฉพาะฟิลด์)
exiftool -All file.jpg             # ทุก tag

# ค้น flag
exiftool file.jpg | grep -iE 'flag|ctf|key|secret'

# หลายไฟล์ / ทั้งโฟลเดอร์
exiftool -r -ext jpg . | grep -iE 'flag'
-a -u -g1 คือคำสั่งทองคำ — เปิดเผย tag ที่ซ่อน/ซ้ำ/ไม่รู้จักที่ปกติไม่แสดง

3. ดึงข้อมูล binary / ฟิลด์เฉพาะ

ดึง thumbnail และ binary fieldLinux
# ดึงค่า raw ของฟิลด์เดียว (-b = binary)
exiftool -b -Comment file.jpg
exiftool -b -UserComment file.jpg

# ดึง thumbnail ที่ฝังใน EXIF (เทคนิคคลาสสิก!)
exiftool -b -ThumbnailImage file.jpg > thumb.jpg
# ถ้าภาพถูก crop ปิด flag แต่ thumbnail เดิมยังเห็น

# ดึง preview image (บางไฟล์มี preview ใหญ่กว่า thumbnail)
exiftool -b -PreviewImage file.jpg > preview.jpg
exiftool -b -JpgFromRaw file.jpg > full.jpg
ThumbnailImage/PreviewImage มักต่างจากภาพหลัก — flag อาจอยู่ในเวอร์ชันเดิมที่ไม่ถูกแก้

4. เทคนิคใน CTF

  • flag ใน Comment/UserComment/Artist/Copyright: ฟิลด์ที่เขียน text อิสระ — เช็คก่อน
  • Thumbnail ต่างจากภาพหลัก: ดึงออกมาดูเสมอ (ภาพเดิมก่อนแก้)
  • GPS: exiftool -gps* file.jpg → พิกัด → Google Maps
  • custom tag: -u เปิดเผย tag ที่ตั้งชื่อเอง
  • วันที่ผิดปกติ: -time:all ดู timestamp (forensics/timeline)
  • เทียบหลายไฟล์: ถ้ามีหลายรูป diff metadata หาตัวที่ต่าง
คำสั่งเฉพาะทางที่มีประโยชน์Linux
exiftool -gps:all file.jpg         # เฉพาะ GPS
exiftool -time:all file.jpg        # เฉพาะ timestamp
exiftool -Comment -UserComment -Artist -Copyright file.jpg  # ฟิลด์ text
# เทียบ metadata สองไฟล์
diff <(exiftool a.jpg) <(exiftool b.jpg)

5. Quick Reference

  • tool แรกในทุกโจทย์ stego — รันก่อนเสมอ
  • exiftool -a -u -g1 file (เปิดเผย tag ซ่อน)
  • grep -iE 'flag|ctf|key'
  • thumbnail: exiftool -b -ThumbnailImage > thumb.jpg
  • ฟิลด์เดียว: exiftool -b -Comment file
  • GPS: -gps:all; timestamp: -time:all; diff สองไฟล์

🧭 จับมือทำทีละขั้น (มีแค่ Kali) + ถ้าติดไปไหนต่อ

สมมติเพิ่งเจอโจทย์ stego ได้ไฟล์มาไฟล์เดียว มีแค่ Kali เปล่าๆ — exiftool ควรเป็นคำสั่งแรกที่พิมพ์เสมอ เพราะเช็คไวมากและ flag ซ่อนใน metadata บ่อยมาก ทำตามนี้ทีละขั้น

  1. 1พิมพ์ file image.jpg — ยืนยันชนิดไฟล์จริงก่อน
  2. 2พิมพ์ exiftool image.jpg — ดูฟิลด์ทั้งหมด สแกนหาคำว่า flag/ctf ด้วยตา
  3. 3พิมพ์ exiftool -a -u -g1 image.jpg — เปิดเผย tag ที่ซ้ำ/ไม่รู้จัก ที่โหมดปกติไม่แสดง
  4. 4พิมพ์ exiftool image.jpg | grep -iE 'flag|ctf|key|secret' — กรองหาคำที่น่าสงสัยเร็วๆ
  5. 5ถ้าเป็นรูป ลองดึง thumbnail: exiftool -b -ThumbnailImage image.jpg > thumb.jpg แล้วเปิดดู (บางทีภาพหลักถูก crop ปิด flag แต่ thumbnail เดิมยังเห็น)
  6. 6เช็ค GPS: exiftool -gps:all image.jpg — ถ้ามีพิกัด ลองเปิด Google Maps ดูว่าเป็นเบาะแสหรือไม่
  7. 7ถ้ายังไม่เจอ ลอง strings image.jpg | grep -iE 'flag' คู่กัน เผื่อ flag ไม่อยู่ใน tag มาตรฐานที่ exiftool รู้จัก
  8. 8ถ้ายังไม่เจอ ไป binwalk image.jpg เช็คไฟล์ฝัง/ต่อท้าย
  9. 9ถ้ายังไม่เจออีก ให้เปลี่ยน channel ไปตามชนิดไฟล์จริง (LSB สำหรับ PNG/BMP, passphrase-based สำหรับ JPG/WAV)
รัน exiftool แล้วไปทางไหนต่อ
exiftool -a -u -g1 file
ดูทุก tag รวมที่ซ่อน/ซ้ำ
เจอ flag/ข้อความน่าสงสัยใน metadata ไหม?
✅ เจอตรงๆ→ จบ ได้ flag
❌ ไม่เจอ→ ลองดึง thumbnail/preview ก่อน
exiftool -b -ThumbnailImage/-PreviewImage
ภาพเดิมอาจต่างจากภาพหลัก
thumbnail มี flag ที่ต่างจากภาพหลักไหม?
✅ เจอ→ จบ ได้ flag จาก thumbnail
❌ ไม่เจอ/เหมือนเดิม→ ไปเช็คไฟล์ฝัง/ต่อท้าย
เจอไฟล์ฝังไหม?
✅ เจอ→ extract แล้วหา flag ต่อ
❌ ไม่เจอ→ metadata ตันแล้ว เปลี่ยนไปเทคนิค stego จริงตามชนิดไฟล์
PNG/BMP → zsteg/LSB, JPG → steghide/outguess, WAV → spectrogram
ขั้นตอน/งานเครื่องมือใน Kaliติดตั้งเพิ่ม (ถ้าไม่มี)เครื่องมือออนไลน์
ดูชนิดไฟล์จริงfile-aperisolve.com
อ่าน metadata ทั้งหมดexiftoolsudo apt install libimage-exiftool-perlexifdata.com, metadata2go.com
ดึง thumbnail/previewexiftool -b--
ดูพิกัด GPSexiftool -gps:all-Google Maps, dcode.fr/gps
ค้นข้อความในไฟล์ดิบstrings-CyberChef (Extract Strings)
เช็คไฟล์ฝัง/ต่อท้ายbinwalksudo apt install binwalkaperisolve.com
เทียบ metadata สองไฟล์diff <(exiftool a) <(exiftool b)--
🚑 ถ้าตันสนิท ลองท่าถัดไป: metadata (หัวข้อรวมทุกชนิด metadata ไม่ใช่แค่ EXIF), binwalk ถ้ายังไม่เช็คไฟล์ฝัง/ต่อท้าย, zsteg ถ้าเป็น PNG/BMP, steghide/outguess ถ้าเป็น JPG และสงสัยมี passphrase — metadata สะอาดไม่ได้แปลว่าไม่มี flag แค่ไม่ได้ซ่อนตรงนั้น

โน้ตของฉัน

ยังไม่มีโน้ตสำหรับหัวข้อนี้