====== DOCX format ======
===== Sažetak =====
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.
===== Uvod =====
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:
* Office Open XML Document - tekstualne datoteke
* Office Open XML Presentation - prezentacije
* Office Open XML Workbook - tablični prikaz podataka
Postoje 4 vrste ekstenzija
za tekstualne datoteke:
* .docx - dokument
* .docm - dokument s omogućenim korištenjem //macro// naredbi
* .dotx - predložak
* .dotm - predložak s omogućenim korištenjem //macro// naredbi
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.
===== Sadržaj DOCX datoteka =====
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). {{ :racfor_wiki:docx_unzip.png?300 }}//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: ****
//_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:
* Id - naziv se kreira kao: rId + redni broj relacije
* Type - vrsta relacije. Može biti hiperveza, komentar, fusnota itd.
* Target - putanja do izvora (npr. za komentar to će biti comments.xml)
* TargetMode - vrsta relacije: može biti vanjska ili unutarnja.
Primjer vanjske relacije je hiperveza prikazana u sljedećem retku.
****
Sada će u dokumentu ova hiperveza biti referencirana kao ****.
Osim //_rels// direktorija, u //word// direktoriju nalaze se i razni drugi dokumenti. Primjer vidimo na slici ispod. {{ :racfor_wiki:docx_word.png?400 }}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.
{{ :racfor_wiki:docx_core.png?600 |}}
===== Glavni dokument =====
//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 (****) 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
**** bloka. Sadržaj se izražava u tzv. //run// bloku. //Run// blokovi također mogu imati svoj format (****). 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 (****), ali mogu sadržavati i slike,
razne simbole, //tab//-ove itd.
{{ :racfor_wiki:docx_document.png?700 |}}
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 (****) 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 (****).
{{ :racfor_wiki:docx_table.png?600 |}}
===== Aplikacije za čitanje i uređivanje =====
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.
{{ :racfor_wiki:docx_ms.png?400 |}}
===== Sigurnost DOCX formata =====
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.
{{ :racfor_wiki:datoteke_i_datotecni_sustavi:docx_macro.png?400 |}}
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).
===== Zaključak =====
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.
===== Sources =====
[1] [[https://en.wikipedia.org/wiki/Office_Open_XML]]
[2] [[https://en.wikipedia.org/wiki/Microsoft_Office_2007]]
[3] [[https://support.office.com/en-us/article/Open-XML-Formats-and-file-name-extensions-5200D93C-3449-4380-8E11-31EF14555B18]]
[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]]
[7] [[http://officeopenxml.com/WPcontentOverview.php]]