Metadata fingerprinting¶
A photograph taken on a modern smartphone comes with a structured record attached to the image: the camera model, lens settings, the time of capture, GPS coordinates where location was recorded, and in some formats a thumbnail of the image. Office software writes a record of its own into the documents it creates: the author’s name as registered in the application, the organisation, creation and modification times, the producing software, and, depending on the format, information about revisions or earlier content.
The attack is passive and requires no exploitation. The software that creates the file writes these fields, and they stay there until some other system strips or rewrites them. Whoever receives the file can read whatever survived.
The file keeps notes¶
An extraction script opens the file, reads the embedded metadata block, and prints its contents. The logic differs slightly by file type but follows the same structure.
open file
if file is an image (JPEG, HEIC, TIFF):
read EXIF block
extract:
GPS latitude and longitude → recorded location
device make, model, software → what wrote the file
timestamp → date, time, sometimes timezone
camera settings → aperture, shutter speed, ISO
if file is a PDF or office document:
read whichever metadata the format supports
extract the fields that are present:
author and organisation
creation and modification dates
producing application
other document properties
if the format retains revision or change information:
inspect that separately
The GPS coordinates in an image record where the device believed itself to be. The coordinate can name a very small area, and the number of decimal places stored says nothing about how good the underlying fix was. The format keeps the two apart: EXIF has a separate GPSHPositioningError field for the error estimate.
Combined with the timestamp, the coordinates place the device somewhere at some moment. Placing a person there takes one more link, from the device to whoever was holding it. The make and model narrow the field of candidates, and narrow it much further once anything else is known about the person holding the device.
Four centimetres¶
greenhouse-attacks’ metadata.py builds a JPEG, stamps it with the EXIF fields a phone camera writes, and reads them back out of the file. The photograph is generated, because a real one would belong to somebody, and because the distances below can only be measured against a position known in advance.
A file of 1,583 bytes, most of it the picture, stores four fields naming the camera and the moment, and a fifth naming the place:
Field |
Value |
|---|---|
Make |
Fairphone |
Model |
FP5 |
Software |
FP5 Camera 3.1.2 |
DateTime |
2026:09:15 09:14:16 |
GPS |
52.373183, 4.888589 |
Three of those describe the device rather than the scene. None of them identifies a person alone, and together they narrow the field of candidates by the same arithmetic that runs a browser fingerprint.
EXIF stores a latitude as three rational numbers, degrees, minutes and seconds. How coarse the denominator on the seconds is decides how far the written position lands from the one the generator chose:
Seconds stored as |
Decoded |
Distance from the generator’s fixed position |
|---|---|---|
whole seconds |
52.373056, 4.888611 |
14.27 m |
tenths |
52.373194, 4.888583 |
1.33 m |
hundredths |
52.373183, 4.888589 |
0.04 m |
At hundredths of a second the file names a doorway rather than a street. That distance can be quoted here only because the generator fixed the position before writing the file. What the table measures is the error introduced by storing the coordinate at each denominator. It says nothing about how accurate a phone’s GPS fix is, and a real photograph offers no true position to measure the stored one against. Nothing in the file reports the denominator either, since EXIF hands the fraction back already reduced.
Cropping does not necessarily remove any of it. Where an editor copies the EXIF across to the saved file, cutting a face out of the frame leaves the place and the time where they were: the cropped file here still resolves to within four centimetres of the same position. Whether a given editor copies it, drops it or rewrites parts of it is a property of that editor, and the demonstration sets the choice as a parameter instead of assuming one.
Named in the properties¶
Metadata seldom names a person outright. It offers something for other information to attach to. A photograph narrows a population; a document can skip the narrowing and give the names.
The United Kingdom government published a dossier on Iraqi weapons in February 2003 as a Word file on the Downing Street website. A reader opened its revision log and retrieved the names of a Foreign Office official, a Downing Street official and two people in the prime minister’s press office, along with anonymous users at the centre where the dossier was drafted. The log remained in the published file, though it formed no part of the document anyone was meant to read.
A coordinate does the narrowing rather than the naming, and it narrows hard. Article 4(1) defines personal data as information relating to an identifiable person, and names location data among the things by reference to which somebody can be identified, directly or indirectly. A coordinate with a timestamp beside it therefore counts towards identifying somebody wherever it can be joined to other information, and the joining does not have to be possible from the coordinate alone.
Where the metadata survives, it travels with the file through any system that keeps it, and sharing, forwarding or publication will not reliably remove it. Metadata is not indestructible. The risk is that nobody checks whether it survived.
Before it is written¶
Several free tools read and strip metadata from common file types. For images, tools such as ExifTool can remove the EXIF block entirely or overwrite specific fields. For documents, most office applications offer a “remove personal information” option before saving. Either way the step belongs before the file is sent.
One way to close this particular leak is to stop the camera application recording location at all. If GPS coordinates are never written into the file, they cannot be extracted from it later.
Last reviewed: 2026-09-19.