Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
1
JPEG format (.jpg, .jpeg)
Izabela Gucunski
Seminarski rad u okviru predmeta „Računalna forenzika“ 2016/2017
Sveučilište u Zagrebu
Fakultet elektrotehnike i računarstva
2
1. Osnovno o JPEG-u
1.1 JPG vs JPEG
JPG i JPEG su formati slike koje je izumio tim Joint Photographic Experts Group. Ova dva pojma imaju isto značenje.
Razlog za različite datotečne nastavke datira iz ranih verzija sustava Windows. Izvorna ekstenzija datoteke za Joint Photographic Expert Group bila je ".jpeg"; Međutim, u sustavu Windows sve datoteke su nužno imale ekstenziju dužine tri slova. Dakle, ekstenzija datoteke je skraćena u ".jpg". Međutim, Macintosh nije bio ograničeni nastavcima sa tri slova. tako da su Mac korisnici koristili ".jpeg". Na kraju, s nadogradnjom Windowsa također se počelo prihvaćati ".jpeg". Međutim, mnogi korisnici već su se koristili s ".jpg", pa su i ekstenzije datoteke sa tri slova i ekstenzije sa četiri slova prihvaćene kao korektne.
1.2 Općenito
JPEG ISO standard je najčešće korištena metoda za sažimanje za digitalne fotografije.uz gubitak.
Format zapisa sa ekstenzijom .jpg je danas najkorišteniji format zapisa digitalne fotografije, a označava JPEG zapis – metodu zapisa sa gubitkom u kompersiji koji iskorištava mane ljudskog oka. 1983. godine ISO (International Organization for Standardization) je započela istraživanje na temu kako zapisati digitalnu fotografiju sa velikom rezolucijom. 1986. godine osnovana je JPEG grupa (Joint Photographic Experts Group) od strane CCITT (International Telegraph and Telephone Consultative Commitee) i ISO-a s ciljem definiranja standarda za kodiranje crno – bijelih i kolor fotografija. JPEG zatim objavljuje „Information Technology – Digital Compression and Coding of Contuostone Still Images – Requirments and guidelines“ poznat još pod nazivom JPEG specifikacija za kodiranje i dekodiranje komprimirane fotografije (ISO 10918-1).
1992. godine Eric Hamilton objavljuje format pod nazivom JFIF (JPEG File Interchange Format) koji omogućuje zapis meta podataka izvan samih informacija o slici. To je omogućilo JPEG zapisu da bude prepoznat među svim računalnim preglednicima fotografija.
Algoritmi za kompresiju JPEG zapisa nude povoljan omjer kvalitete i veličine fotografije. Zbog upotrebe JPEG zapisa i mogućnosti najučinkovitije kompresije sa gubitkom danas svaki digitalni fotoaparat ima mogućnost JPEG zapisa.
Standard JPEG podržava 8 ili 12 bitnu dubinu boja po RGB kanalu. Osam bitna dubina boje je postala prihvaćenija u praksi te se primjenjuje u digitalnom fotoaparatu i u računalnim programima za obradu fotografija. Za svaki kanal boje (R, G, B) u 8 bitnom sustavu, intenzitet svjetla se može izraziti sa 256 konačnih vrijednosti (0-255) za svaki piksel. Efikasnost kompresije JPEG zapisa temelji se na DCT (Discrete Cosine Transform). DCT algoritam ne stvara gubitak u kvaliteti fotografije, jer umjesto kompresije pretvara prostornu domenu u frekvencijsku domenu, a tek onda započinje proces kodiranja.
JPEG se odnosi samo na klasu kompresije, a ne na specifični datotečni format. Kako bi se proizvela datoteka s ugrađenim JPEG tokovima, brojni datočni standardi formata su ili prilagođeni ili kreiran za tu namjenu. Neki od njih su JPEG / JFIF, JPEG / spiff (Still Picture Interchange File Format), JPEG / CIFF, JPEG / Exif ((Exchangeable image file format).
3
Među njima su najčešće vrste su JPEG / Exif i JPEG / JFIF.
JPEG / Exif je najčešći format slike koji se koristi kod digitalnih fotoaparata i ostalih uređaja za fotografiranje
JPEG / JFIF je najčešći format za spremanje i prenošenje fotografskih slika na World Wide Webu.
2. Struktura metapodatke u JPEG-u
JPEG datoteka sadrži nekoliko segmenata; svaki segment sadrži različite vrste podataka, omeđenih s dva bajta koda, a zovu se markeri. Markeri su heksadecimalni; oni počinju sa 0xff I završavaju s kodom (1 bajt) koji ukazuje na vrstu markera.
Neki markeri se sastoji od samo ta dva bajta; drugi imaju još dva bajta koji označavaju duljinu specifičnih korisnih podataka markera. Duljina uključuje dva bajta za duljinu, ali ne i dva bajta za marker.
Kratko ime
Broj batova
Payload Ime i komentar
SOI 0xFF, 0xD8
Nema Početak slike
SOF0 0xFF, 0xC0
Veličina varijable
Početak okvira (Baseline DCT). Pokazuje da je to osnovni DCT-based JPEG, a određuje širinu, visinu, broj komponenata, i komponente poduzorkovanja
SOF2 0xFF, 0xC2
Veličina varijable
Početak okvira (Progressive DCT). Pokazuje da je to progresivna DCT-based JPEG, a određuje širinu, visinu, broj komponenata, i komponentae poduzorkovanja.
DHT 0xFF, 0xC4
Veličina varijable
Definira Huffmanovu tablicu
DQT 0xFF, 0xDB
Veličina varijable
Definirajte Kvantizacijsku Tablica (s)
DRI 0xFF, 0xDD
2 bajta Definirajte Restart Interval. Određuje interval između RSTn markera, u macrobloku. Ovaj marker slijede dva bajta koji ukazuju na fiksnu veličinu tako da se može tretirati kao bilo koji drugi segment promjenjiva veličina.
SOS 0xFF, 0xDA
Veličina varijable
Početak skeniranja. Počinje top-to-bottom skeniranje slike. U osnovnim DCT JPEG slika, tu je općenito jedan scan. Progresivni DCT JPEG slike obično sadrže više skenova. Ovaj marker određuje koji komad podataka će sadržavati,a potom slijedi entropijski kodirani podatci.
RSTn 0xFF, 0xDn n(n=0..7)
Nema Restart. Umetnut je svakih R makroblokova, gdje R predstavlja ponovni intervala pokrenut od DRI markera. Nema koristiti ako nema marker DRI. Niža 3 bita marker-kod ciklusa u vrijednosti od 0 do 7.
APPn 0xFF, 0xEn
Veličina varijable
Application-specific Na primjer, Exif JPEG datoteka koristi marker App1 za pohranu metapodataka, izloženu u strukturi usko se temelji na TIFF.
4
COM 0xFF, 0xFE
Veličina varijable
Komentar
EOI 0xFF, 0xD9
Nema Kraj slike
Sl.1. Zajednički JPEG markeri. Iz Wikipedije, https://en.wikipedia.org/wiki/JPEG
Metapodaci u JPEG datoteci se pohranjuju u APPN (0xff, 0xEn) segment, a komentar je pohranjen u COM segmentu(0xff, 0xFE). Neki vendori(dobavljači) mogu koristiti istu vrstu markera APPN da bi uključili svoje podatke, tako da ti markeri često počinju s imenom dobavljača (npr "Exif" ili "Adobe") ili sa nekim drugim identifikacijskim nizom
Exiv2 omogućuje brz i jednostavan pristup za čitanje pisanje u EXIF, IPTC i XMP. Dakle, ovaj podatak se fokusira samo na poziciji EXIF, IPTC i XMP podataka u JPEG formatu.
Common Metadata Blocks and Likely Sources
From Cameras
From Applications
From Either
MakerNotes PrintIM
ICC Profile IPTC Photoshop XMP
File EXIF JFIF APP14
2.1 Exif
Exif JPEG datoteka koristi App1 segment za pohranu podataka (i umnožava APP2 segmente za FlashPix podatake). Exif APP1 segment pohranjuje veliku količinu informacija o fotografskim parametarima za digitalne fotoaparate i danas je to preferirani način za pohranu sličica. Također može sadržavati dodatni odjeljak s GPS podatcima. Sve pojedinosti o Exif dostupne su na [http://www.exif.org/Exif2-2.PDF].
U teoriji, Exif APP1 se snima odmah nakon SOI markera (marker ne ukazuje na početak datoteke). Međutim, to dovodi do nekompatibilnosti između Exif i JFIF standarda jer obojica naveli da je njihov određeni segment aplikacije (APP0 za JFIF, APP1 za Exif) mora biti prvi u slikovnoj datoteci. U praksi, većina JPEG datoteke sadrže JFIF marker segment (APP0) koja prethodi Exif App1. To omogućuje starijim verzijama čitača da pravilno rukuju JFIF segmentom formata, a novijim verzijama čitača da dekodiraju sljedeće Exif segmente, što je manje strog način u kojem traže da se pojavljuju prvi. Na taj način za većinu dekodera neće utjecati na dekodiranje slike, ali slabo dizajnirani JFIF ili Exif parseri možda neće prepoznati datoteku ispravno.
EXIF
Make Hewlett-Packard
5
Camera Model Name HP PhotoSmart 618 (V1.10)
Orientation Horizontal (normal)
X Resolution 72
Y Resolution 72
Resolution Unit inches
Y Cb Cr Positioning Centered
Exposure Time 1/60
F Number 2.7
ISO 100
Exif Version 0210
Date/Time Original 2007:05:28 12:56:08
Components Configuration Y, Cb, Cr, -
Compressed Bits Per Pixel 1.6
Shutter Speed Value 1/64
Aperture Value 2.8
Exposure Compensation 0
Max Aperture Value 4.0
Subject Distance 0.72 m
Metering Mode Multi-segment
Light Source Unknown
Flash Fired
Focal Length 7.7 mm
Flashpix Version 0100
6
Color Space sRGB
Exif Image Width 800
Exif Image Height 600
Image Width 96
Image Height 72
Bits Per Sample 8 8 8
Compression Uncompressed
Photometric Interpretation RGB
Strip Offsets 1750
Samples Per Pixel 3
Rows Per Strip 72
Strip Byte Counts 20736
Planar Configuration Chunky
Exif APP1 segment sastoji se od App1 markera (0xFFE1), Exif identifikator niza ("Exif \ 0 \ 0"), i same informacije atributa. Identifikator niza "Exif \ 0 \ 0" se koristi da se izbjegne sukob s drugim aplikacijama koje koriste App1 (npr XMP).
7
Sl.2. Osnovna struktura JPEG datoteke. Od Exif.org, http://www.exif.org/Exif2-2.PDF
Exif ne koristi APPN segmente osim APP1, APP2 i COM segmentima. Međutim, neki nepoznati APPN još uvijek mogu postojati u strukturi datoteka i Exif čitači trebali bi biti dizajnirani za preskakanje preko njih.
2.2 XMP
U tipično uređenoj JPEG datoteci, XMP (Extensible Metadata Platform) informacije su u pravilu uključene uz Exif i IPTC (Information Interchange Model data). XMP koristi App1 segment kako bi se pohranili metapodatci; format za pohranu je RDF (Resource Description Framework) koji se implementira kao primjena XML-a.
XMP APP1 segment sastoji se od App1 markera (0xFFE1), XMP identifikatora niza ( "http://ns.adobe.com/xap/1.0/\x00~~HEAD=pobj"), i Unicode XMP paketa (kodiranje je obično UTF-8, ali to također može biti UTF-16 ili UTF-32). Paket se ne može podijeliti u više segmenata, tako da je maksimalna veličina od oko 64KB (2 ^ 16-1 bajtova).
Struktura sadržaja paketa može se naći na http://www.w3.org/TR/REC-rdf-syntax/.
Referentni dokument za XMP 3.2 može se preuzeti s Adobe Systems Incorporated http://xml.coverpages.org/xmp.html~~HEAD=pobj
Kad je Adobe prvi uveo XMP, on je namijenio da potpuno sadržii XMP blok u jednom segmentu JPEG-a. Dakle, XMP / XML ne može biti dulji od 65K bajtova. U 2010. godini, standard je nadograđen da sadrži mehanizam koji bi se mogao koristiti na više segmenata. Aplikacija exiv2 (.exe) u verziji 0,25 podržava opciju -pX za izvlačenje RAW XMP / xml paketa iz slike. Opcija -pX podržava oba single-segmenta (65k) i standardne multi-segmente. Međutim libexiv2
8
općenito ne podržava standard multi-segment. Sljedeća verzija nakon v0.25 potpunosti podržava multi-segment XMP.
2.3 IPTC
Adobe Photoshop koristi APP13 segment za pohranjivanje ne-grafičkih informacija, kao što su slojevi, putanje (path), IPTC podatci i još mnogo toga. Sadržaj APP13 segmenta čine App1 markeri (0xFFE1), identifikator niz (obično "Photoshop 3.0 \ 000", ali i "Adobe_Photoshop2.5: ', za one koji koriste starije verzije), te niz blokova podataka - resurs. Općenito, blok resurs sadrži samo nekoliko bajtova, ali je važno da IPTC blok može biti vrlo velik. IPTC blok ne može stati u jedan APP13 segment, tako da se mora podijeliti u više APP13 segmenta.
Referentni dokument za Photoshop formatu dostupan je na http://www.adobe.com/devnet-apps/photoshop/fileformatashtml/
2.4 ICC
ICC profil je pohranjen u jednom ili više APP2 komadu. Iako su mnogi ICC profili mali, oni također mogu biti više nego jedan cijeli komad. Komadi su ograničene na 65535 bajta sa dva bajta dužine po komadu. Da bi adresirali sve, podaci ICC APP2 imaju 16 bajtno zaglavlje kako slijedi:
bytes data
0..11 ICC_PROFILE\0
12 icc chunk-count
13 icc total chunks
Maksimalna veličina ICC profilom je ograničena na 256 * (63535 - 16) = 16,261,888 bajtova, što je prilično velika profil.
Prva četiri bajta na ICC profilom su duljina datoteke i kodirani su u BigEndianu.
3. Exiv2 JPEG algoritmi čitanje/pisanja metapodataka
Ovo poglavlje kratko uvodi o algoritmu koji se koristi u Exiv2. Za više detalja, molimo preuzmite izvorni kod Exiv2 i pregledajte kod u src / jpgimage.cpp datoteci.
3.1 Algoritam čitanja metapodataka
Iz gornjeg ispitivanja, vidimo da je čitanje algoritma vrlo jednostavno. Mi samo trebamo proći kroz markere, pronaći i pročitati sadržaj Exif App1, XMP App1, IPTC APP13 segmentime. Svi ti segmenti trebaju se locirati prije SOS segmentu (kojeg odmah slijedi entropijski kodirani podaci), a često su smješteni odmah nakon segmenta SOI (nije zajamčeno). Dakle, nije potrebno pročitati cijelu JPEG datoteku kako bi provjerili postoji li metapodaci ili ne; proces se može zaustaviti kad god je marker SOS pronađen
9
Slika 3. Dijagram toka čitanja Metapodataka
Standardne JPEG datoteke bi trebale imati najviše jedan Exif App1 segment i jedan XMP App1 segment. Dakle, ako postoji više od jednog Exif APP1 segment ili jedan XMP APP1 segment, exiv2 u tom slučaju čita samo prvi segment. JPEG datoteke može imati više komentara, ali za sada exiv2 samo čita prvi (najviše od JPEG datoteke imaju ionako tek edan).
3.2 Algoritam pisanja metapodataka
Opća ideja za pisanje algoritma je pronaći Exif App1, XMP App1, IPTC APP13 segmente, izvadite ih iz JPEG datoteke i zamijeniti ih s novim metapodacima. Kako bi se ovo pojednostavilo, slažu se sljedeća pravila (to je standard u većini JPEG-a).
10
Redoslijed segmenata Exif, XMP, IPTC u izlaznoj datoteci je sljedeći (bez obzira na njihove pozicije u ulaznoj datoteci):
SOI | (APP0) | (Exif App1) | (XMP App1) | (IPTC App13) | ... | EOI
Segment COM se nalazi neposredno prije SOFn u izlaznoj datoteci (bez obzira na njegovu poziciju u ulaznoj datoteci).
Slika 4. Dijagram toka od writeMetadata
11
Primjer 1:
Sljedeći je primjer pokazati promjene u strukturi JPEG nakon writeMetadata. U ovom primjeru, nakon dodavanja Exif.Photo.UserComment, doda se ne samo Exif APP1 segment, nego se također IPTC APP13 pomiče udesno odmah nakon Exif App1
$ ./exiv2 -pa test.jpg
Iptc.Application2.RecordVersion Short 1 2
Iptc.Application2.Keywords String 4 2010
Iptc.Application2.Keywords String 10 California
Iptc.Application2.Keywords String 9 Christmas
Iptc.Application2.Keywords String 9 canderson
Iptc.Application2.Keywords String 6 nature
Iptc.Application2.Keywords String 6 winter
Iptc.Application2.Copyright String 12 (C)CANDERSON
$ ./exifprint test.jpg -struc
STRUTURE OF FILE:
marker | size | signature
0xd8
0xe0 16 JFIFHH
0xe2 3160 ICC_PROFILE
HLinomntrRGB
0xed 18462 Photoshop 3.08BIM
0xe1 34447 XMP://ns.adobe.com/xmp/extension/
0xdb 67
0xdb 67
0xc0 17
0xc4 31
0xc4 70
0xc4 29
0xc4 68
12
0xda 12
0xd9
-----------------
$ ./exiv2 -M"add Exif.Photo.UserComment Hello" test.jpg
$ ./exifprint test.jpg -struc
STRUTURE OF FILE:
marker | size | signature
0xd8
0xe0 16 JFIFHH
0xe1 66 ExifIIi
0xed 18462 Photoshop 3.08BIM
0xe2 3160 ICC_PROFILE
HLinomntrRGB
0xe1 34447 XMP://ns.adobe.com/xmp/extension/
0xdb 67
0xdb 67
0xc0 17
0xc4 31
0xc4 70
0xc4 29
0xc4 68
0xda 12
0xd9
-----------------
Exif.Image.ExifTag 0x8769 Long 1 26
Exif.Photo.UserComment 0x9286 Undefined 13 Hello
Primjer 2:
Ovaj primjer pokazuje izlaz pomoću exiv2 (.exe) za v0.25 koji ima opciju -pS ispisati strukturu slike. Možete jasno vidjeti poziciju APP1 Exif blok, blok APP1 XMP i APP13 PhotoShop bloka koje koristi podatke IPTC. exiv2 (.exe) također ima opciju -pX za izdvajanje sirovog XMP za
13
vanjsku obradu. I EXIF i IPTC podatakovni blokovi su pohranjeni pomoću specifikacije TIFF kontejnra. Primjer u TIFF dokumentu pokazuje kako izvući i ispisati strukturu podataka Exif napisane u TIFF formatu. http://dev.exiv2.org/projects/exiv2/wiki/The_Metadata_in_TIFF_files
$ exiv2 -pa ~/test.jpg
Exif.Image.Make Ascii 18 NIKON CORPORATION
....
Exif.Thumbnail.YCbCrPositioning Short 1 Centered
Iptc.Envelope.ModelVersion Short 1 4
Iptc.Envelope.CharacterSet String 3 %G
Iptc.Application2.RecordVersion Short 1 4
Iptc.Application2.Caption String 27 Mrs Johnson's Austin Office
Xmp.xmp.Rating XmpText 1 0
Xmp.xmp.ModifyDate XmpText 25 2015-02-13T20:46:51-06:00
Xmp.dc.description LangAlt 1 lang="x-default" Mrs Johnson's Austin Office
$ exiv2 -pS ~/test.jpg
STRUCTURE OF JPEG FILE: /Users/rmills/test.jpg
address | marker | length | data
2 | 0xd8 SOI
4 | 0xe1 APP1 | 14862 | Exif..II*.....................
14868 | 0xe1 APP1 | 699 | http://ns.adobe.com/xap/1.0/.<
15569 | 0xe2 APP2 | 4094 | MPF.II*...............0100....
19665 | 0xed APP13 | 110 | Photoshop 3.0.8BIM.......6....
19777 | 0xdb DQT | 132
19911 | 0xc0 SOF0 | 17
19930 | 0xc4 DHT | 418
20350 | 0xda SOS | 12
837 rmills@rmillsmbp:~/gnu/exiv2/trunk/website $ exiv2 -pX ~/test.jpg | xmllint -pretty 1 -
<?xml version="1.0"?>
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
14
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.1.2">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" rdf:about="" xmp:Rating="0" xmp:ModifyDate="2015-02-13T20:46:51-06:00">
<dc:description>
<rdf:Alt>
<rdf:li xml:lang="x-default">Mrs Johnson's Austin Office</rdf:li>
</rdf:Alt>
</dc:description>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?>
$
Zaključak:
JPG i JPEG su formati slike koje je izumio tim Joint Photographic Experts Group. Ova dva pojma imaju isto značenje. JPEG ISO standard je najčešće korištena metoda za sažimanje za digitalne fotografije.uz gubitke.
JPEG metapodataci mogu biti moćno sredstvo koje se može koristiti kako bi se organizirale i označile slike s korisnim opisnim materijalom. Važno je shvatiti da je vrlo malo metapodataka kodirano u slike po snimanju uređajem kao što su digitalne kamere. Ovaj podatak je često irelevantan, ali može dovesti do izlaganja nečije privatnosti, tako da je važno razumjeti prirodu Exif podataka koji su prisutni u slikama. Također je korisno imati na umu da, iako metapodatak možemo dodati u slikovnu datoteku, ovaj metapodatak putuje u zapisu, te može otkriti informacije o datoteci koju vlasnik nikada nije namijenio otkriti. Također je korisno imati na umu da Exif format može sadržavati sličicu koja ne mora nužno biti primjećena softverom za izmjenu, te to poslije može stvoriti problem. Unatoč tim potencijalnim zamkama, metapodatci slike su koristan alat koji omogućuju korisnicima veću fleksibilnost u smislu prijenosnosti i opisnih podatka koji se lako mogu ugraditi u slikovne datoteke, očuvajući podatke bitne za slikovnu datoteku.
15
Literatura:
◦ http://eprints.grf.unizg.hr/1590/ ◦ https://www.youtube.com/watch?v=M9_jz9-q13g ◦ https://www.youtube.com/watch?v=-ZWnHPlpzLA ◦ http://dev.exiv2.org/projects/exiv2/wiki/The_Metadata_in_JPEG_files ◦ http://www.differencebetween.info/difference-between-jpg-and-jpeg ◦ http://findicons.com/files/icons/1637/file_icons_vs_2/256/jpg.png ◦ http://fotoforensics.com/tutorial-meta.php ◦ http://www.madirish.net/192