DOCX format jedan je od OOXML formata. Kao i svi OOXML formati baziran je na XML datotekama. One služe odvajanju različitih logičkih cjelina datoteke. S obzirom da je DOCX zapravo komprimirana, do XML datoteka se dolazi otvaranjem preimenovane datoteke (potrebno je promijeniti ekstenziju u .zip). Glavni dokument document.xml sadrži tekst i reference na razne slike, hiperveze, fusnote i sl. Izvori referenci su pohranjeni u relacijskim datotekama (.rels). Osim sadržaja, u XML datotekama spremljeni su i metapodaci o dokumentu (autor, vrijeme kreiranja itd.) Iako DOCX format po definiciji nema u sebi nikakve macro naredbe, ipak je podložan nekim napadima koji koriste njegove relacijske datoteke i mogućnost lagane manipulacije istima.
Postoje razni alati koji mogu čitati i uređivati DOCX datoteke. Glavni među njima je Microsoft Word. Osim njega tu su i LibreOffice, SoftMaker Office 2010 te mnogi drugi. Naravno, ostali često imaju samo ograničene mogućnosti.
OOXML ili Office Open XML je skupina formata kreirana od strane Microsoft-a. Služe prikazu podataka: tabličnog, u obliku grafova, prezentacija i raznih dokumenata. Uvedeni su u Microsoft Office 2007 kao zadani formati za Word, Excel te PowerPoint programe. Novi formati uvedeni su sa svrhom da povećaju sigurnost, smanje memorijsko zauzeće dokumenata, omoguće lakši oporavak podataka te da olakšaju dijeljenje podataka među programima. Svi ovi formati su zapravo komprimirane XML datoteke, a u njih spadaju:
Postoje 4 vrste ekstenzija za tekstualne datoteke:
DOCX format je jedan od OOXML formata. Izdan je 7. prosinca 2007. godine. Trenutno se koristi četvrto izdanje formata (iz 2016.-te). Format je korišten za uređivanje tekstualnih datoteka. Kao i ostali OOXML formati, DOCX se sastoji od komprimiranih XML datoteka. Ključni djelovi svake DOCX datoteke su document.xml datoteka u kojoj je spremljen sadržaj datoteke, relacijske datoteke koje povezuju sadržaj sa izvorom, sami izvori te XML datoteke s meta podacima.
S obzirom da je docx datoteka zapravo skup komprimiranih xml datoteka, za otvoriti te datoteke prvo se treba izvršiti unzip operacija. Prvi korak je preimenovati ekstenziju datoteke iz .docx u .zip. Sada se datoteka može raspakirati. Raspakirana datoteka sastoji se od nekoliko djelova (prikazanih na slici ispod). Content Types je xml datoteka nalazi se u samom korijenu paketa. Datoteka sadrži putanje do ostalih datoteka koje zajedno sačinjavaju smislenu cjelinu. Na primjer, sljedeći zapis je putanja do glavne xml datoteke u kojoj je sadržan tekst datoteke: <Override PartName=“/word/document.xml” ContentType=“application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml”/>
_rels je mapa koja sadrži .rels dokument. Općenito su dokumenti koji završavaju .rels ekstenzijom dokumenti koji opisuju relacije između sadržaja i izvora. Osim u korijenskom, postoje _rels mape i u drugim podmapama. Tako u word/_rels poddirektoriju postoji relacijska datoteka u kojoj se zapisuju relacije s glavnim tekstom. Kako je on spremljen u document.xml datoteci, xml datoteka s relacijama naziva se document.xml.rels. Relacije se sastoje od nekoliko dijelova:
Primjer vanjske relacije je hiperveza prikazana u sljedećem retku.
<Relationship Id=“rId2” Type=“http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink” Target=“http://officeopenxml.com/anatomyofOOXML.php” TargetMode=“External”/>
Sada će u dokumentu ova hiperveza biti referencirana kao <w:hyperlink r:id=“rId2”>.
Osim _rels direktorija, u word direktoriju nalaze se i razni drugi dokumenti. Primjer vidimo na slici ispod. U direktoriju media nalaze se sve slike prikazane u .docx dokumentu. Neke datoteke nisu nužne. Ukoliko nema nikakvih komentara, datoteka comments.xml neće ni postojati.
Direktorij docProps sadrži meta podatke o dokumentu. U core.xml datoteci nalaze se podaci o autoru, o vremenu kreiranja, vremenu zadnje modifikacije itd. Primjer core.xml-a vidi se na slici ispod.
Document.xml je dokument u kojem se gradi sav prikaz podataka. Sadrži tekst i reference na druge sastavnice dokumenta. Dvije su glavne građevne jedinice ovog dokumenta: paragrafi i tablice. Paragraf (<w:p>) je osnovna građevna jedinica ovog dokumenta. Svaki paragraf sastoji se od 2 djela: formata i sadržaja. Format može biti izražen direktno (npr. centriranje linije) ili indirektno (referencirajući neki stil). Izražava se unutar <w:pPr> bloka. Sadržaj se izražava u tzv. run bloku. Run blokovi također mogu imati svoj format (<w:rPr>). Na primjer, ako u nekom paragrafu jednu riječ želimo ukositi (italic), taj paragraf imat će nekoliko run blokova od kojih je jedan zadužen za ukošenu riječ.Run blokovi najčešće sadrže tekst (<w:t>), ali mogu sadržavati i slike, razne simbole, tab-ove itd.
Na slici poviše prikazan je izgled document.xml datoteke kojoj je sav tekst:
“Ovo je tekst
Ovo je boldani tekst”.
Vidimo da je u slučaju u kojem se za novu riječ koristi dodatan format potrebno rascjepkati početni tekst u nove blokove.
Tablice (<w:tbl>) su također građevne jedinice dokumenta. Sastoje se od redaka i stupaca. Retci ne trebaju imati jednak broj stupaca. Početni dio tablice je onaj sa svojstvima (<w:tblPr>).
Microsoft Word program je originalni program kojim se otvara i uređuje DOCX format (od Office 2007 pa na dalje to je zadani format). SoftMaker Office 2010 te LibreOffice su alati uz pomoć kojih se može čitati i uređivati datoteka DOCX formata. Google Docs je online alat za čitanje i uređivanje datoteka raznih OOXML formata. Ukoliko je potrebno samo čitati datoteku, postoje i aplikacije poput Microsoftovog Word Viewer-a u kojem se uz pomoć Microsoft Office Compatibility Pack-a mogu čitati razni formati. Navedeni paket koristi se i kod starijih verzija Microsoft Word-a za rad sa DOCX formatom. Osim navedenih, za rad sa DOCX datotekama koriste se i OpenOffice.org, KOffice, Caligra Suite, NeoOffice, TextEdit, iWork, Kingdoft Office itd.
Microsoft Office dokumenti mogu sadržavati kod napisan u Visual Basic for Applications (VBA) programskom jeziku. Ovako napisane naredbe zovu se macro naredbe. Iako su korisne, mogu biti izvor problema ukoliko se zlonamjerno koriste. Jedan od najpoznatijih primjera zlouporabe macro naredbi je virus Melissa iz 1999.-te godine. Otvaranjem u Word-u 97 ili 2000, macro naredba bi se izvršila te poslala zaraženu kopiju datoteke na mailove prvih 50 korisnika iz adresara. Od tada pa do danas napravljene su razne zaštite od takvih napada. Microsoft Office 2007 uveo je, radi lakše detekcije macro naredbi, promjenu u ekstenziji u slučaju da ih datoteka koristi. Zato su tekstualne datoteke .docx sa macro naredbama preimenovane u .docm.
Unatoč velikim naporima uloženim u detekciju macro-a, i dalje postoje načini na koje se može zloupotrebiti DOCX datoteke. Primjer toga je izvršavanje macro naredbi injektiranih iz stranog DOTM dokumenta. Ovakav napad radi se mijenjajući Target opciju za relaciju u .rels datoteci. U jednom od primjera umjesto lokalnog predloška, postavi se adresa zlonamjerni predloška s web-a koji zatim izvrši svoje naredbe. Napad zvan The Turducken Attack također iskorištava mogućnost manipuliranja XML datotekama za relacije. Prednost ovakvih napada je što razne organizacije vjeruju DOCX datotekama i propuštaju ih u svoje sustave (za razliku od DOC ili DOCM).
DOCX format je široko korišten format za kreiranje, čitanje i uređivanje tekstualnih datoteka. Zbog toga je bitno da ima određene kvalitete kao što su sigurnost, jednostavnost za korištenje, brzina pristupa, razvijeni alati za korištenje itd. Zbog onemogućenja macro naredbi porasla je razina sigurnosti datoteka. Iako se vjerojatno nikada neće u potpunosti ukloniti mogućnost zlouporabe formata, ovaj je format relativno siguran za korištenje. XML datoteke su donijele bolju organizaciju te se datoteke brže i jednostavnije mijenjaju. Postoje brojne mogućnosti za rad s ovim formatom, a i uvelike je podržan (postoji mnogo alata za rad). Zbog svega toga smatram da je u današnje vrijeme ovo jedan vrlo dobar tekstualni format kojeg se isplati koristiti.
[1] https://en.wikipedia.org/wiki/Office_Open_XML
[2] https://en.wikipedia.org/wiki/Microsoft_Office_2007
[4] https://www.howtogeek.com/171993/macros-explained-why-microsoft-office-files-can-be-dangerous/
[5] https://threatpost.com/word-based-malware-attack-doesnt-use-macros/129969/
[6] http://blog.redxorblue.com/2018/07/executing-macros-from-docx-with-remote.html