Bestandstypedetector — de bytes bepalen het, niet de naam
Bestandstypedetector
De extensie van een bestand is slechts een label — virus.exe hernoemen naar photo.jpg verandert niets aan wat erin zit. Deze pagina leest de eerste bytes van elk geüpload bestand en vergelijkt ze met 60+ echte magic-handtekeningen: afbeeldingen, documenten, archieven, audio/video, lettertypen, uitvoerbare bestanden, databases en sleutels. U krijgt het gedetecteerde type, het MIME-type, de extensies die dat type gewoonlijk gebruikt, een waarschuwing wanneer de extensie tegenspreekt wat er in zit, en waar het formaat die meedraagt (afbeeldingsafmetingen, PDF-versie, MP4-merk). Alles wordt lokaal in uw browser geïnspecteerd.
Bestanden kiezen
Zet bestanden hier neer, of klik om ze te kiezen Één bestand of veel. Alleen de eerste 512 bytes van elk worden gelezen; de bestanden verlaten deze computer nooit.
Geen bestanden geselecteerd.
Resultaten
De detectietabel verschijnt hier nadat u bestanden kiest en op Detecteren drukt.
Wat “overeenkomst” betekent:consistent — de extensie komt overeen met het gedetecteerde formaat; afwijking — de inhoud is een ander formaat dan de extensie beweert (een hernoemd bestand, of erger); “geen handtekening” — de eerste bytes komen met geen enkele bekende handtekening overeen, wat normaal is voor gewone tekst, CSV en de meeste gegevensformaten die gewoon geen koptekst hebben. Privacy: bestanden worden gelezen met de eigen FileReader van de browser; er wordt niets geüpload.
Wat is een bestandshandtekening?
Vrijwel elk binair formaat begint met een vaste bytereeks — het magic number — daar geplaatst zodat een programma zijn eigen bestanden kan herkennen zonder de naam te vertrouwen. Een PNG begint altijd met de acht bytes 89 50 4E 47 0D 0A 1A 0A (“\x89PNG\r\n\x1a\n”), een PDF met de ASCII-tekst %PDF, een ZIP met PK\x03\x04 (de initialen van Phil Katz, die het formaat ontwierp). Besturingssystemen negeren deze bytes meestal en kijken in plaats daarvan naar de extensie — precies daarom “opent” een hernoemd bestand nergens goed, en snuiven beveiligingstools de inhoud op.
Beroemde eerste bytes
Bytes
Indeling
Opmerking
89 50 4E 47 0D 0A 1A 0A
PNG-afbeelding
de \r\n beschermt tegen beschadiging van regeleinden
FF D8 FF
JPEG-afbeelding
elk JPEG-frame begint met een SOI-markering
25 50 44 46 2D
PDF-document
“%PDF-1.7” — de versie volgt
50 4B 03 04
ZIP-archief
docx/xlsx/odt/epub zijn ZIP's met een extensie
D0 CF 11 E0
Verouderd Office
doc/xls/ppt/msi — het OLE2-samengestelde bestand
4D 5A
Windows-EXE
“MZ”, naar Microsofts Mark Zbikowski
7F 45 4C 46
Linux-ELF
\x7fELF — programma's en gedeelde bibliotheken
1A 45 DF A3
Matroska/WebM
EBML-containerstart
75 73 74 61 72op offset 257
TAR-archief
de handtekening zit diep verborgen in de kop
Hoe de detector beslist
De eerste 512 bytes van elk bestand worden vergeleken met een tabel van handtekeningen in volgorde van specificiteit: containermerken (RIFF…WAVE versus RIFF…AVI versus RIFF…WEBP, ISO-merkboxen op offset 8) worden gecontroleerd vóór hun generieke containers, en op ZIP gebaseerde formaten (EPUB, ODF, OOXML) vóór gewone ZIP. Waar een formaat zelfbeschrijvende metadata draagt, graaft de pagina één niveau dieper: PNG-/GIF-/BMP-/JPEG-/WebP-afmetingen worden uit hun koppen gelezen, de PDF-versie uit byte 5, het MP4-merk en de Java-classversie uit hun standaardoffsets. Bestanden die nergens op passen krijgen een tekstheuristiek (BOM, <?xml, <html, shebang, verhouding afdrukbare tekens) voordat ze onbekend worden genoemd.
Veelgemaakte fouten
“Er staat ZIP maar het bestand is .docx” — dat klopt: een .docx is een ZIP-archief waarvan het eerste item [Content_Types].xml is; de detector herkent dat geval en meldt specifiek Office Open XML. “Er staat geen handtekening maar het bestand opent prima” — CSV, de meeste broncode en talloze wetenschappelijke formaten hebben helemaal geen magic bytes; “geen handtekening” is geen beschuldiging. “Kan het mij vertellen of het bestand veilig is?” — nee. Inhoudssniffing zegt wat een bestand is, niet wat het doet; een EXE is een EXE, of het nu een installer of malware is.
Veelgestelde vragen
Waarom alleen 512 bytes? — elke ondersteunde handtekening staat binnen de eerste 512 bytes (de diepste is ustar van TAR op offset 257); meer lezen zou grote batches voor niets vertragen. Detecteert het de duur van video? — nee, alleen de container en het merk; de duur vereist het parsen van de volledige index, wat het werk van een speler is. Meerdere bestanden tegelijk? — ja, sleep een hele selectie; elke rij wordt afzonderlijk gedetecteerd. Verwante pagina: voor de andere kant — extensie naar MIME-type — gebruikt u de MIME-type-opzoeker; om dezelfde bestanden te hashen gebruikt u Batch-bestandshash.