ush.it - a beautiful place

EXIF Phun

May 30, 2006 at 3:00 pm - Filed under Hacks, Language IT - 1130 words, reading time ~3 minutes - Permalink - Comments

WARNING: MASSIVE PR0N USE

Non so se avete letto il recente post di Tonu Samuel riguardo EXIF nelle jpeg, si e' costruito un crawler e adesso sta facendo statistiche.

Praticamente le fotocamere si salvano un'anteprima e alcuni tag assieme all'immagine canonica. Piu' o meno sapevo che le immagini si portavano dietro dei metadati ma non mi ero mai addentrato nell'argomento.

Ho fatto una paginetta di esempi introduttivi:
http://ascii.ush.it/hack-exif/tester.php
http://www_ush_it/team/ascii/hack-exif/tester.php.htm (demo statica)

I dumb user e i dumb vendor vincono sempre : ) Vero?

Sull'onda dell'entusiasmo mi sono fatto pure io il mio spiderino ma piu' che orientato al trovare thumb EXIF in giro per il web desideroso di cercarle su un target preciso (es: una lista di url).

Direi che possiamo affermare che la ragazza di rally_089.jpg impegnata in un dovizio pompino abbia utilizzato una OLYMPUS DIGITAL CAMERA modello u40D,S500,uD500 : )

Come se questo non bastasse ci sono anche schifezze tipo UndefinedTag:0x0000 e MakerNote (potrebbe essere una fingerprint o
un id).

http://ascii.ush.it/hack-exif/test_tags.php?file=examples/S4300084.jpg

In questa ad esempio sembra esserci una terza jpeg dentro a MakerNote:

Inizia e finisce cosi':

00000000h: FF D8 FF DB 20 84 20 02 01 01 02 01 01 02 02 02 ;
00006a00h: C9 6E 36 B3 3F FF D9                            ;

Una JPEG presa a caso:

00000000h: FF D8 FF E0 00 10 4A 46 49 46 00 01 01 01 00 B4 ;
0000dfb0h: 13 37 88 61 82 BE 9F FF D9                      ;
MakerNote    : 00000000h: Ã?¿Ã?Ë?Ã?¿Ã?â?º Ã?â?? .........
JPEG normale : 00000000h: Ã?¿Ã?Ë?Ã?¿Ã? ..JFIF.....Ã?´
MakerNote    : 00006a00h: ��n6�³?�¿��
JPEG normale : 0000dfb0h: .7Ã?Ë?aÃ?â??Ã?¾Ã?ŸÃ?¿Ã?â?¢

E' una jpeg senza ombra di dubbio : )

Update: http://www_ush_it/team/ascii/hack-exif/testtagsih0.jpg (estratta da CRV§ADER//KY)

Chicca targata adobe:

000016fdh: http://ns.adobe.
0000170dh: com/xap/1.0/.<?x
0000171dh: packet begin='ï»
0000172dh: ¿' id='W5M0MpCeh
0000173dh: iHzreSzNTczkc9d'
0000174dh: ?>.<?adobe-xap-f
0000175dh: ilters esc="CR"?
0000176dh: >.<x:xapmeta xml
0000177dh: ns:x='adobe:ns:m
0000178dh: eta/' x:xaptk='X
0000179dh: MP toolkit 2.8.2
000017adh: -33, framework 1
000017bdh: .5'>.<rdf:RDF xm
000017cdh: lns:rdf='http://
000017ddh: www.w3.org/1999/
000017edh: 02/22-rdf-syntax
000017fdh: -ns#' xmlns:iX='
0000180dh: http://ns.adobe.
0000181dh: com/iX/1.0/'>..
0000182dh: <rdf:Description
0000183dh: about='uuid:844
0000184dh: 43efe-c56d-11d9-
0000185dh: 923b-ac634e64a2a 0000186dh: 3'. xmlns:xapMM 0000187dh: ='http://ns.adob 0000188dh: e.com/xap/1.0/mm 0000189dh: /'>. <xapMM:Doc 000018adh: umentID>adobe:do 000018bdh: cid:photoshop:84 000018cdh: 443efc-c56d-11d9 000018ddh: -923b-ac634e64a2 000018edh: a3</xapMM:Docume 000018fdh: ntID>. </rdf:Des 0000190dh: cription>..</rdf 0000191dh: :RDF>.</x:xapmet 0000192dh: a>. [..cut..] 000026adh: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ; 000026bdh: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ; 000026cdh: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ; [..cut..] 0000292dh: .<?xpacket end 0000293dh: ='w'?>

XML in una JPEG, id univoci di documento (docid) e utenza (uuid). Non male.

<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
<?adobe-xap-filters esc="CR"?>
<x:xapmeta xmlns:x='adobe:ns:meta/' x:xaptk='XMP toolkit 2.8.2-33,
 framework 1.5'>
 <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
  xmlns:iX='http://ns.adobe.com/iX/1.0/'>
  <rdf:Description about='uuid:84443efe-c56d-11d9-923b-ac634e64a2a3'
   xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/'>
  <xapMM:DocumentID>adobe:docid:photoshop:
   84443efc-c56d-11d9-923b-ac634e64a2a3</xapMM:DocumentID>
  </rdf:Description>
 </rdf:RDF>
</x:xapmeta>

Morale della favola queste immaginine non si portano dietro solamente una marea di tag intrusivi per la privacy (ad esempio il modello di fotocamera e la data di scatto **) e la benedetta thumbnail ma abusano anche dei tag EXIF per portarsi dietro informazioni offuscate o meno.

The SIGMA or FOVEON MakerNote tag data block in an EXIF block is formatted as a sub-IFD with more tags in it, which is a common but not standardized way to store extra information items in EXIF. (*1)

In parte in giapponese ma comprensibili: http://homepage3.nifty.com/kamisaka/makernote/

** EXIF come strumento di prova? LOL, precisione svizzera!

[FileDateTime] => 1148663496
[DateTime] => 2005:09:23 13:37:31
[DateTimeOriginal] => 2005:09:23 13:37:31
[DateTimeDigitized] => 2005:09:23 13:37:31

Scanner source: http://ush.it/team/ascii/hack-exif/exif_scanner.phps

Crawler source (scarta le immagini non interessanti invece di tenere tutto, salva i tags e la thumbnails, manca la parte di rimpicciolimento e di confronto con IsImagesEqual): http://ush.it/team/ascii/hack-exif/exif_crawler.phps

Output 1: http://ush.it/team/ascii/hack-exif/exif_scanner.php.htm
Output 2: http://ush.it/team/ascii/hack-exif/exif_crawler.php.htm

Tools di corredo:
http://ush.it/team/ascii/hack-exif/exif_thumb.phps
http://ush.it/team/ascii/hack-exif/test.phps
http://ush.it/team/ascii/hack-exif/test_tags.phps
http://ush.it/team/ascii/hack-exif/tester.phps

La patch per http://www.mnogosearch.org/: http://no.spam.ee/~tonu/exif/mnogo.diff

Altro:
http://it.php.net/manual/en/ref.exif.php
http://www.x3f.info/technotes/FileDocs/MakerNoteDoc.html *1
http://www.exiv2.org/makernote.html
http://www.exif.org/specifications.html

THP USH Wisec DigitalBullets