“Sihirli testler” dosya komutu için ne anlama geliyor?


20

fileKomuta hakkında okuyordum ve tam olarak anlamadığım bir şeyle karşılaştım:

dosya sorgulanan dosya türünü belirlemek için tasarlanmıştır .... dosya söz konusu dosya üzerinde üç test kümesi gerçekleştirerek bunu başarır :

  • dosya sistemi testleri,
  • büyü testleri,
  • dil testleri

Nelerdir sihirli testleri?

Yanıtlar:


15

Bu, bir dosya başlangıcında bunun ne tür bir dosya olduğunu gösteren "sihirli bayt" anlamına gelir.

Bir dosya ile başlıyorsa, #!o zaman bir komut dosyası olarak kabul edilir.


28

Buradaki "büyü", " sihirli sayılar " anlamına gelir : dosyada türünü tanımlayan bilinen bir yerde bulunan özel bir değer. fileKomut bu sayıların bir veritabanına sahip ve karşılık geldikleri yazdıklarınıza. Bu veritabanıyla birlikte gelen kütüphaneye libmagic adı verilir ve buna kendi programlarınızdan erişebilirsiniz.

Bunları düşündüğümüz gibi mutlaka "sayılar" değildir. Örneğin, bir PNG resim dosyası her zaman "\ x89PNG \ r \ n \ x1a \ n" ile başlar, bir Java sınıfı dört baytla (onaltılık) CA FE BA BE ile başlar ve bir HTML dosyasında bir yerde "<html" bulunur başlangıca yakın. Bu tür bir dosyada olduğu bilinen, genellikle başlangıca çok yakın olan küçük bir veri dizisidir.

İnsanlar dosya formatlarını tanımlarken, bunlardan birini kasıtlı olarak veya formatı birbirine uydurmanın bir parçası olarak dahil ederler. filedaha sonra bunları kullanabilir. Ayrıca dosyanın ne olduğunu tahmin etmek için dosyanın içeriğine bakmanın başka yolları da vardır ("dil testleri").


6
Başlangıçta, "sihirli sayılar" ın özellikle çekirdek tarafından uygun şekilde yüklemek için kullanılan yürütülebilir bir dosyanın ilk iki baytı olduğunu unutmayın. #!aslında bunun bir örneğidir, çünkü çekirdeğin kendisinin bu baytları görmesi üzerine, aşağıdaki komutu çağırması gerekir.
IMSoP
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.