MIME Tür Tespit Cihazı

Sonraki

Dosya uzantıları yanıltıcıdır; herkes malware.exe dosyasını photo.jpg olarak adlandırabilir. Bir dosyanın gerçek formatını belirlemenin güvenilir yolu, ilk birkaç baytını okumaktır; çünkü çoğu format, adından bağımsız olarak formatı tanımlayan bir imza (“sihirli sayı”) yerleştirir. Bu tespit aracı, indirilen her dosyanın imzasını okur ve standart MIME tipini ile en yaygın uzantıyı geri gönderir; böylece yüklenen dosyanın istemcinin iddia ettiği formatla uyumlu olduğunun doğrulanmasını sağlar.

MIME tespiti nasıl çalışır?

  1. 1

    Bir dosya bırakın

    Her boyutta; yalnızca ilk 4–16 KB okunur.

  2. 2

    Sihirli baytları oku

    Çoğu format bilinen bir imzayla başlar.

  3. 3

    İmza veritabanıyla karşılaştır

    Dedektör, `file(1)`/libmagic ile aynı kuralları kullanır.

  4. 4

    MIME + uzantı döndür

    RFC 6838 medya türü, kanonik uzantısı ve insan tarafından verilen etiketi gösterir.

Örnek imzalar

Format İlk baytlar (heks) MIME
JPEG FF D8 FF image/jpeg
PNG 89 50 4E 47 0D 0A 1A 0A image/png
GIF87a 47 49 46 38 37 61 image/gif
GIF89a 47 49 46 38 39 61 image/gif
WebP 52 49 46 46 ... 57 45 42 50 image/webp
PDF 25 50 44 46 (%PDF) application/pdf
ZIP / JAR / ODT / DOCX 50 4B 03 04 application/zip (veya belirli bir dosya formatı)
gzip 1F 8B 08 application/gzip
MP4 (ISO BMFF) 00 00 00 XX 66 74 79 70 video/mp4
MP3 49 44 33 veya FF FB audio/mpeg
FLAC 66 4C 61 43 audio/flac
WAV 52 49 46 46 ... 57 41 56 45 audio/wav
ELF (Linux ikili dosyası) 7F 45 4C 46 application/x-executable
Windows PE (exe) 4D 5A application/x-msdownload

Uzantıların yeterli olmamasının nedeni

  • Güvenlik: Dosya olarak yüklenen ve aslında .exe olan bir resume.pdf dosyası basit uzantı filtrelerini geçer. Bu sorunun çözümü sunucu tarafında yapılan MIME tespittidir.
  • Content-Type uyumsuzluğu: Bir tarayıcı yükleme için yanlış bir MIME gönderebilir; sihirli baytların okunması verilerin gerçek içeriğini gösterir.
  • Yenilenmiş yedekler. Uzantılar bazen kaybolabilir veya silinir; içerik analizi sayesinde her dosyanın ne olduğunu belirleyebilirsiniz.

ZIP tabanlı aile

Pek çok modern format aslında ZIP arşivleridir; herhangi bir ZIP gibi PK\x03\x04 ile başlarlar:

  • Office Open XML: .docx, .xlsx, .pptx.
  • OpenDocument: .odt, .ods, .odp.
  • EPUB: .epub
  • Android APK: .apk
  • Java JAR: .jar.

Onları ayırt etmek için dedektör, bir manifest dosyası aramak üzere ZIP dosyasının içine bakar (OOXML için [Content_Types].xml, ODF/EPUB için mimetype).

Faydalı Kombinasyonlar

  • İlk 512 bayt, çoğu format imzasını kapsar.
  • İlk 4 KB, manifestin daha ileri konumda yer aldığı ZIP tabanlı formatları kapsar.
  • İlk 16 KB, bazı çoklu medya konteynerleri gibi kenar durumları kapsar.

Mükemmel değil

  • Sade metin dosyalarında hiçbir sihirli bayt bulunmaz. Tespit sistemi bu durumda heuristik yöntemlere başvurur (dosya geçerli bir UTF-8 formatı mıdır? JSON ya da XML gibi görünüyor mu?).
  • Şifreli veya gizlenmiş dosyalar, tanımlanabilir bir imzası olmayan rastgele baytlar gibi görünabilir.
  • Format belirsizliği: audio/wav ve video/avi her ikisi de RIFF ile başlar; dedektör ikincil tanımlayıcıyı kontrol eder (dört bayt sonra WAVE veya AVI ).

Sık Sorulan Sorular

Hayır. Tespit işlemi tarayıcınızda gerçekleşir; yalnızca ilk birkaç KB’lık veri okunur ve istemci tarafındaki imza veritabanıyla karşılaştırılır. Hiçbir veri cihazınızdan dışarı çıkmaz.

Çünkü OOXML, ODF, EPUB ve JAR tümü ZIP imzasıyla başlar. Dedektör içeriye bakarak format özgü manifesti tespit eder ve daha spesifik bir MIME değerini (application/vnd.openxmlformats-...) geri gönderir.

Naif ad değiştirme yöntemini tespit eder: .exe adı .jpg’e değiştirildiğinde, bu dosya özgün baytları nedeniyle icra edilebilir olarak görünür. Uzman saldırganlar ise gerçek medya dosyalarına yükler yerleştirir veya birden fazla imzaya uygun çok dilli dosyalar kullanır; bu da basit tespit yöntemlerini geçersiz kılar.

Sade metinde sihirli baytlar bulunmaz. Tespit sistemi şu kriterlere göre değerlendirir: geçerli UTF-8 mi? Geçerli JSON mu? XML beyanı mı? CSV yapısı mı? Aksi takdirde text/plain formatına geçilir.

İmza veritabanı benzerdir (Unix libmagic kurallarından türetilmiştir). Ortak formatlarda sonuçlar aynı olmalıdır; gizli veya özel formatlarda ise farklılık görülebilir.

İlgili Araçlar

Araç diğer dillerde mevcuttur