Sari la conținut

Extensie de fișier

De la Wikipedia, enciclopedia liberă
Extensii de fișier audio

Extensia de fișier (numită și format de fișier) este sufixul numelui unui fișier informatic, separat de numele propriu-zis printr-un punct („.”) — de exemplu „.txt”, „.mp3” sau „.exe”. Convențional, extensia indică formatul intern sau tipul de date conținute în fișier, ori aplicația cu care acesta este destinat să fie utilizat.[1] În sistemele de operare de tip Unix și Linux, extensia numelui de fișier este, de regulă, opțională și nu are o semnificație impusă de sistem; în alte sisteme, precum Microsoft Windows, ea este importantă și poate determina modul sau chiar programul cu care sistemul de operare accesează datele din fișierul respectiv.[1] Un sistem de operare poate limita lungimea extensiei — de exemplu, vechile sisteme Microsoft MS-DOS și OS/2 permiteau extensii de maximum trei caractere.[2]

Extensia nu este însă un indicator sigur al conținutului real al unui fișier, deoarece poate fi modificată de un utilizator sau de un program fără ca datele propriu-zise să se schimbe. Din acest motiv, multe sisteme de operare, browsere web și instrumente de criminalistică digitală verifică efectiv conținutul unui fișier — prin așa-numitele „semnături” sau „numere magice” aflate la începutul acestuia — sau folosesc tipuri de media (MIME) pentru identificare, în loc să se bazeze exclusiv pe extensie.[3]

Conceptul de extensie folosită pentru a indica tipul unui fișier a apărut pentru prima dată la sistemul CTSS (Compatible Time-Sharing System), dezvoltat la Institutul de Tehnologie din Massachusetts (MIT) la începutul anilor 1960; sistemul asocia fiecărui fișier un nume propriu și o „clasă” separată, care indica tipul acestuia.[4]

Conceptul a fost preluat de sistemul CP/CMS al companiei IBM și de succesorul acestuia, VM/370, prin componenta Conversational Monitor System (CMS), care identifică fiecare fișier printr-un identificator în trei părți: nume, tip și mod.[5][6] O linie asemănătoare de dezvoltare a existat și la sistemele companiei DEC (precum TOPS-10 și TOPS-20), care au influențat, la rândul lor, sistemele de operare pentru microcalculatoare de mai târziu.[7]

Sistemele de operare timpurii pentru microcalculatoare, precum CP/M și, mai târziu, MS-DOS, au adoptat convenția „nume + extensie”. MS-DOS limita numele de bază la maximum opt caractere, urmate de un punct și de o extensie de maximum trei caractere — formatul cunoscut sub numele de „8.3”.[2]

Suport în sisteme de operare și de fișiere

[modificare | modificare sursă]

DOS și Windows pe 16 biți (FAT)

[modificare | modificare sursă]

În sistemele de fișiere FAT folosite de DOS și de versiunile pe 16 biți ale Windows, numele fișierului și extensia erau stocate ca două câmpuri separate, de lungime fixă (opt caractere, respectiv trei caractere); punctul care le desparte în afișare este doar o convenție, nu un caracter stocat efectiv pe disc.[2]

Windows modern (NTFS)

[modificare | modificare sursă]

Sistemul de fișiere NTFS, folosit de versiunile moderne de Windows, stochează numele fișierului ca un singur șir de caractere; extensia rămâne o convenție recunoscută de aplicații și de Windows Explorer, nu un câmp separat la nivelul sistemului de fișiere. Pentru compatibilitate cu versiunile mai vechi, NTFS poate genera totuși, pentru fiecare fișier, un nume scurt în format 8.3.[8]

Unix și Linux

[modificare | modificare sursă]

În sistemele Unix și Linux, extensia este tratată, în general, ca parte obișnuită a numelui fișierului, fără o semnificație impusă de nucleul sistemului de operare sau de sistemul de fișiere și fără o limită de lungime specifică; asocierea dintre o extensie și o aplicație este de obicei o convenție a mediului grafic sau a aplicației care deschide fișierul, nu a sistemului de operare în sine.[7]

Mac OS clasic

[modificare | modificare sursă]

Mac OS-ul clasic (versiunile Apple anterioare lui Mac OS X) nu folosea extensii de fișier; tipul unui fișier și aplicația care îl deschidea erau identificate printr-un „cod de tip” și un „cod de creator”, fiecare de patru caractere, stocate în metadatele fișierului (resource fork) și invizibile pentru utilizator.[9][10]

Începând cu Mac OS X, Apple a revenit la convenția de tip Unix a extensiilor de fișier, moștenită din baza Darwin/BSD a sistemului, dar a adăugat peste aceasta propriul sistem de „identificatori uniformi de tip” (Uniform Type Identifier, UTI), care asociază extensiile, tipurile MIME și alți identificatori unei singure ierarhii interne de tipuri.[11]

Tipul de conținut și comparația cu tipurile MIME

[modificare | modificare sursă]

Deoarece extensia este doar o convenție de denumire, ea nu garantează identificarea corectă a conținutului unui fișier. Din acest motiv, multe sisteme verifică conținutul real al fișierului prin „semnături” sau „numere magice” — secvențe fixe de octeți aflate la începutul fișierului — în loc să se bazeze exclusiv pe extensie.[3]

Pe web, browserele determină în principal modul de redare sau de descărcare a unei resurse pe baza tipului MIME (tip de media) transmis de server în antetul HTTP „Content-Type”, nu pe baza extensiei din adresa URL. Registrul oficial al tipurilor de media este administrat de IANA,[12] iar procedura de înregistrare a tipurilor de media este definită în RFC-ul 6838 al IETF.[13]

Programe executabile

[modificare | modificare sursă]

Unele limbaje de programare și medii de execuție impun sau presupun anumite extensii, prin convenție sau prin cerință tehnică directă. De exemplu, compilatorul limbajului Java așteaptă ca fișierele sursă să aibă extensia „.java”, iar fișierele compilate (octeți de tip bytecode) primesc extensia „.class”.[14]

În Windows, atunci când un utilizator sau un script rulează un nume de comandă fără extensie, sistemul caută executabilul corespunzător într-o ordine definită de variabila de mediu „PATHEXT”, care include implicit, printre altele, extensiile „.COM”, „.EXE”, „.BAT”, „.CMD”, „.VBS” și „.JS”.[15] Această ordine de căutare a fost exploatată istoric de așa-numiții „viruși companion” (companion viruses), care plasau un fișier rău-intenționat mai devreme în ordinea de căutare decât fișierul legitim vizat.[16][17][18]

Probleme de securitate

[modificare | modificare sursă]

Windows ascunde implicit, în File Explorer, extensiile fișierelor de tip cunoscut. Cercetători în securitate au criticat acest comportament ca fiind un risc, întrucât permite ca un fișier precum „raport.pdf.exe” să fie afișat utilizatorului doar ca „raport.pdf”.[19]

Tehnica denumită „extensie dublă” (double extension) constă în adăugarea unei extensii periculoase după una cu aspect inofensiv (de exemplu, un fișier executabil denumit „Raport.txt.exe”, afișat drept „Raport.txt” atunci când extensiile cunoscute sunt ascunse) și este folosită în programe malware și în atacuri de tip phishing pentru a induce utilizatorul în eroare. Tehnica este catalogată de cadrul MITRE ATT&CK drept sub-tehnica T1036.007 („Masquerading: Double File Extension”).[20][21][22]

Pentru a se apăra împotriva unor astfel de tehnici, specialiștii în securitate recomandă verificarea conținutului real al unui fișier (prin semnături/numere magice sau prin analiza tipului MIME) și utilizarea unor liste de aplicații permise, mai degrabă decât încrederea exclusivă în extensia numelui de fișier.[16][3]

Exemple de formate predefinite răspândite și extensiile respective:

  • .AC3 — format audio conform specificațiilor Dolby Digital
  • .AVIformat container pentru conținut audio-video
  • .BIN — fișier binar generic, folosit pentru imagini de disc, date de firmware sau alte conținuturi binare; nu este specific unui singur sistem de operare
  • .BMP — fișier grafic în formatul bitmap dezvoltat de Microsoft, acceptat și pe macOS
  • .DOC / .DOCX — documente pentru programul de prelucrare de text Microsoft Word
  • .EXE — fișier executabil binar, specific sistemelor Microsoft Windows
  • .FLAC — format audio Free Lossless Audio Codec, cu compresie fără pierderi
  • .HTM / .HTML — format HTML pentru pagini web[14]
  • .JPG / .JPEG — fișier grafic în formatul definit de Joint Photographic Experts Group (JPEG)
  • .MKV — format container multimedia (Matroska)
  • .MP3 — fișier audio comprimat cu algoritmul MPEG-1/2 Audio Layer III[23]
  • .MP4 — format container pentru conținut audio sau video
  • .NFO — fișier cu text simplu, folosit convențional pentru a descrie conținutul unui pachet software sau al unei versiuni distribuite, obicei în cadrul comunităților de partajare de programe
  • .PDF — format de document portabil (Portable Document Format), dezvoltat inițial de Adobe și standardizat ulterior ca ISO 32000, păstrând aspectul fix al paginii indiferent de programul sau dispozitivul folosit la afișare.[24]
  • .PPT / .PPTX — fișiere cu prezentări grafice pentru Microsoft PowerPoint
  • .RTF — fișier cu text formatat (Rich Text Format), de complexitate medie
  • .SWF — fișier multimedia în formatul Adobe (fost Macromedia) Flash, conținând cod binar[25]
  • .TXT — fișier cu text simplu, neformatat
  • .WAV — format audio necomprimat, dezvoltat de Microsoft și IBM
  • .XLS / .XLSX — foi de calcul tabelar pentru Microsoft Excel

Extensii ambigue

[modificare | modificare sursă]

Aceeași extensie poate desemna formate diferite și fără legătură între ele, în funcție de context — de exemplu:

  • .RPM — pachete software în formatul RPM Package Manager, dar și fișiere audio RealMedia[26]
  • .QIF — date financiare în formatul Quicken Interchange Format, fișiere font pentru DESQview sau imagini QuickTime Image Format[27]
  • .GBA — imagini de joc pentru consola Game Boy Advance, dar și scripturi pentru aplicația de descărcare Usenet GrabIt[28]

Unele formate concatenează mai multe extensii pentru a descrie o succesiune de transformări aplicate fișierului — de exemplu, „arhivă.tar.gz” indică o arhivă de tip tar, comprimată ulterior cu utilitarul gzip.

Pentru încapsularea mai multor fișiere, eventual de formate diferite, într-un singur fișier de tip „container”, vezi articolul Format container.

  1. 1 2 Microsoft Corporation (ed.). „Naming Files, Paths, and Namespaces” (în engleză). Accesat în .
  2. 1 2 3 Microsoft Corporation (ed.). [MS-FSCC]: 8.3 Filename” (în engleză). Accesat în .
  3. 1 2 3 Kessler, Gary C. (). „File Signatures Table” (în engleză).
  4. Massachusetts Institute of Technology (). „The Compatible Time-Sharing System: A Programmer's Guide” (PDF) (în engleză). Accesat în .
  5. „z/VM 7.2 CMS Primer” (PDF) (în engleză). IBM Corporation. . Accesat în .
  6. „The Origin of the VM/370 Time-Sharing System” (PDF) (în engleză). IBM Journal of Research and Development. . Accesat în .
  7. 1 2 Spinellis, Dimitri (ed.). „Unix: An Oral History” (în engleză). Accesat în .
  8. „Overview of FAT, HPFS, and NTFS File Systems” (în engleză). Microsoft Learn. Accesat în .
  9. „Mac Creator and File Type codes” (în engleză). LiveCode Help. Accesat în .
  10. Stauffer, Todd; McElhearn, Kirk (). Mastering Mac OS X (în engleză). John Wiley & Sons. pp. 95–96. ISBN 978-0-7821-5128-2.
  11. „Uniform Type Identifiers Concepts” (în engleză). Apple Developer Documentation. Accesat în .
  12. „Media Types” (în engleză). Internet Assigned Numbers Authority. Accesat în .
  13. Freed, N.; Klensin, J.; Hansen, T. (). „Media Type Specifications and Registration Procedures” (în engleză). IETF. Accesat în .
  14. 1 2 Oracle Corporation. „javac — Java programming language compiler” (în engleză). Java SE Documentation. Accesat în .
  15. Microsoft Corporation. „about_Environment_Variables” (în engleză). Microsoft Learn. Accesat în .
  16. 1 2 Grimes, Roger A. (). Malicious Mobile Code: Virus Protection for Windows (în engleză). O'Reilly Media. pp. 41–42, 71–74, 221–222, 395–396, 422. ISBN 1-56592-682-X.
  17. Skoudis, Ed; Zeltser, Lenny (). Malware: Fighting Malicious Code (în engleză). Prentice Hall. pp. 32–34, 253–254. ISBN 0-13-101405-6.
  18. Aquilina, James M.; Casey, Eoghan; Malin, Cameron H. (). Malware Forensics: Investigating and Analyzing Malicious Code (în engleză). Syngress. pp. 211, 298–299. ISBN 978-1-59749-268-3.
  19. „Hiding Windows File Extensions is a Security Risk, Enable Now” (în engleză). BleepingComputer. Accesat în .
  20. „Masquerading: Double File Extension (T1036.007)” (în engleză). MITRE ATT&CK. Accesat în .
  21. „Double File Extension (T1036.007)” (în engleză). Cybersecurity and Infrastructure Security Agency. Accesat în .
  22. Cybersecurity and Infrastructure Security Agency. „Phishing Guidance: Stopping the Attack Cycle at Phase One” (PDF) (în engleză). Accesat în .
  23. Finlayson, R. (), A More Loss-Tolerant RTP Payload Format for MP3 Audio (în engleză), doi:10.17487/rfc5219, accesat în
  24. „Funcțiile de bază ale formatului PDF”. PDFGuru. Accesat în .
  25. „Adobe Flash Player Administration Guide for Flash Player 10.1” (PDF). Adobe Systems. Arhivat din original (PDF) la . Accesat în .
  26. „.rpm File Extension” (în engleză). FileExt. Accesat în .
  27. „.qif File Extension” (în engleză). FileExt. Accesat în .
  28. „.gba File Extension” (în engleză). FileExt. Accesat în .
  • Stauffer, Todd; McElhearn, Kirk (). Mastering Mac OS X (în engleză). John Wiley & Sons. ISBN 978-0-7821-5128-2. 
  • Grimes, Roger A. (). Malicious Mobile Code: Virus Protection for Windows (în engleză). O'Reilly Media. ISBN 1-56592-682-X. 
  • Skoudis, Ed; Zeltser, Lenny (). Malware: Fighting Malicious Code (în engleză). Prentice Hall. ISBN 0-13-101405-6. 
  • Aquilina, James M.; Casey, Eoghan; Malin, Cameron H. (). Malware Forensics: Investigating and Analyzing Malicious Code (în engleză). Syngress. ISBN 978-1-59749-268-3. 

Legături externe

[modificare | modificare sursă]