ГеоТеги в фото
Коротко про те як геолокація використовується в фотографіях, зроблених мобільними пристроями, як ті геотеги змінити чи видалити, а також про кілька інструментів, які доступні в операційних системах Unix чи Mac OS для більш детальної аналітики інформації створених фотографій.
Більш детальніше про кібербезпеку в напрямі геолокації я описував в статті Cyber Security Notes (Mar-04–2022). Зовсім трохи я згадував про геолокацію в статті про кібербезпеку голосових даних (Apr-02–2022). І трохи згадував про геолокацію в статті про те, як убезпечити свій Фейсбук профіль (Jul-28–2022).
Отож, що ж таке Геолокація?
Геолокація — визначення реального географічного розташування електронного пристрою, наприклад радіопередавача, мобільного телефону або комп’ютера, підключеного до інтернету. Словом «геолокація» можна називати як процес визначення місця розташування такого об’єкта, так і саме місце розташування, встановлене таким способом. Часто для цілей геолокації використовують системи позиціонування.
Як включити / виключити геолокацію на мобільних пристроях?
Наведу приклад для iPhone (iOS)
Settings \ Privacy & Security \ Location Services (вкл/викл)
Що таке геотегування?
Геотегува́ння (англ. geotagging), інколи позначається як геокодування — процес додавання географічних метаданих до різних інформаційних ресурсів, таких як вебсайти, RSS стрічки, або зображення, і є однією із форм геопросторових метаданих. Ці дані, зазвичай, складаються із координат (широти та довготи), висоти, магнітного схилення та назв місцевості.
Дані записуються в середині фото зроблені вашим телефоном чи іншим мобільним пристроєм. І ті дані потім можна побачити чи прочитати певними методами.
Як побачити чи фото має записані геотеги?
Якщо у вас ВИКЛЮЧЕНА геолокація в пристрої, то фотографії будуть створюватись БЕЗ геотегів, тобто це безпечний метод, якщо ви наприклад військовий, і повинні зробити фотографії, але 100% приховати фактичне місце знаходження.
Якщо ж ви пересічний користувач телефону і робите фотографію десь біля моря, десь де ви відпочиваєте, і потім будете потребувати дані для вашого Інстаграму чи інших програм, які аналізують геолокацію, то звісно вам треба ВКЛЮЧИТИ геолокацію, і вже ТОДІ робити фотографії, які в свою чергу будуть вже з геотегами.
В iPhone, коли ви проводите пальцем з низу догори, так якби ви хотіли “потягнути” фото, тоді показується інформація про фото:
- Дата створення фотографії
- Назва пристрою, яким було створено фотографію
- Технічні фотографічні дані
- Мапа геолокаційна (базована на Apple Maps)
- І можливо інші дані в залежності від пристрою
А натиснувши кнопку Adjust ви зможете змінити дату або географічне розміщення, якщо вони була неточні, або ж видалити, якщо вам не треба тих даних в середині фотографії.
На жаль, видалити дату створення фотографії неможливо в iPhone-і, але можна змінити її. І потім при потребі відмінити ту зміну (Revert).
Можна змінити на іншу геолокацію, якщо первинна була некоректна або небажана.
І можна видалити дані геолокації (геотеги), і тоді фотографія не мати геотегів в середині. І методами iOS на iPhone чи iPad-і пізніше можна буде відмінити то видалення (Revert)
Чи безпечно робити screenshot-ти на телефоні коли включена геолокація?
Так, тому що механізм створення копії екрану, навіть, якщо ви дивитесь фото в якому є геотеги, НЕ використовує камеру. А тому такий метод є БЕЗПЕЧНИМ 200%, якщо ви мусите зберегти геолокацію в середині фото як метадані, але хочете показати то ж саме фото комусь, чи закинути комусь, щоб уникнути інформації про фактичне місцезнаходження фотографованого об'єкта.
Ось приклад файлу screenshot-у зробленого iPhone-ом:
НЕМАЄ даних про геолокацію, але є дані про дату створення і власне назва файлу. Вказується розширення файлу PNG і значок що це було зроблено як screenshot. НЕМАЄ даних про назву пристрою, хоча дані про 2MP і роздільну здатність є (але ці дані можуть бути НЕТОЧНІ або по замовчуванню “хоча б якісь”). Також є розмір файлу.
Важливо НЕ СПЛУТАТИ два моменти:
- Геотегів в скріншотах НЕМАЄ, але…
- навіть до скріншота (бо це фотофайл) МОЖНА додати геолокацію ПІСЛЯ створення файлу (Add Location). І тоді геотеги будуть в середині такого скріншот-фото-файла (на базі тієї геолокації, яку ви вибрали вручну).
Чи безпечно опублікувати фото в соціальних мережах?
В більшості випадків так, адже наприклад якщо ви маєте фото з геотегами в середині і закинете таке фото на Facebook (чи як пост, чи як альбом, чи в приватні повідомлення комусь) то Facebook конвертує фото ВИДАЛЯЮЧИ дані геотегів. Подібно працює в інших системах — Twitter, Instagram, Skype, Viber, WhatsApp, Telegram, Signal.
Якщо це дійсно з конвертуванням в системах то дані дійсно пропадають, і ті користувачі, які будуть бачити ваші фото, чи закачувати собі на телефон чи комп'ютер, вже НЕ ПОБАЧАТЬ ніяких гео-даних. Ось приклади з різних систем:
Я знаю 100%, що останнє фото було зроблено iPhone X, в якому камера 12 mp 3024 x 4032 px і файл мав розмір 2.9 MB. А після конвертації в Signal, ДАНІ про то зникають, і вже мій iPhone “читає/показує” ті дані як 2 mp 1200x1600 px і розмір файла ТІЛЬКИ 427 kB. І так працює в більшості системах — ТОБТО соціальні мережі “урізають якість фотографій” ну і “по дорозі” видаляють дані про геолокацію.
Як бачимо, iOS відрізняє різні файли звідки саме файл фотографії був завантажений (чи з Гугла, чи з Вайбера)… І як бачимо, даних про геолокацію НЕМАЄ.
Звісно, фото МОГЛИ і НЕ бути з гео-даними затягнуті мною з Інтернету чи від знайомих в різних мессенджерах. Але це дуже просто перевірити, навіть на ВАШИХ ВЛАСНИХ фото — спробуйте зробити фото З ГЕО-ДАНИМИ, потім вивантажте файл до будь-якої соціальної мережі, а потім завантажте назад собі на телефон чи комп’ютер. І даних про геолокацію НЕ БУДЕ.
Чи системи спеціально створені для вивантаження фотографій зберігають геотеги?
Наведу приклад з Google Photos.
Ось моє фото з 2018-го року, і Google Photos вказує дані про геолокацію
Але, якщо я завантажую той файл собі на комп'ютер і на телефон, то
- Інформація про файл на iMac-у (Cmd+ i у програмі Finder) НЕ ВКАЗУЄ даних про геолокацію.
- Але iPhone (методам iOS) бачить ті геодані і показує так само як і на Google Photos.
І тут власне плавний перехід до більш детальнішого дослідження фото-файлів.
Бо свого часу я й сам здивувався, що інформація про файл НЕ вказує геолокацію. Але, як каже джерело і реальність, треба відкрити файл фото в програмі Preview (Apple Mac OS), а вже там Tools \ Show Location Info або клікнути на іконку (i):
І тоді відкриється вікно з 5-ма закладками, в яких шукаємо закладку GPS
Для порівняння, ось так виглядає інформація про GPS/геолокацію для фото, в якому НЕМАЄ геотегів.
Пробуючи глянути інформацію про геолокацію для таких файлів в програмі Preview покаже меню Show Location Info як НЕАКТИВНЕ. Хоча на іконку (i) можна клікнути, і тоді вікно НЕ буде мати вкладки GPS.
Інтернет сайти як інструменти отримання інформації про геолокацію
Так, дійсно, є багато різноманітних сайтів, куди ви можете закинути фотографію, і вам надасть інформацію про геолокацію, якщо вона була “вшита” в середину фото.
А якщо даних немає, тоді видає таке повідомлення:
Ніби нічого, але перше що кидається в очі, що погано працює механізм кешу. Тобто першу фото, яку ви закините, і там будуть геодані, і вам сайт покаже ті дані, то всі наступні фото будуть показуватись з попередніми даними. Вирішується ця проблема ОЧИЩЕННЯМ кешу браузера, і тоді можна знову закидати фото. Але загалом НЕ РЕКОМЕНДУЮ недосвідченим користувачам.
Про більше подібних сайтів-інструментів можна прочитати тут (мова англійська)
Далі текст написаний для більш досвідчених користувачів комп’ютерів.
Інші інструменти для отримання інформації з фотографій
Наведу приклади, які орієнтовані на користувачів, яким зрозуміло поняття Терміналу чи CLI (Command Line Interface), “в народі” “консоль” з операційною системою Mac OS або дуже подібно для інших Unix систем. Але технічно підковані люди або фотографи повинні зрозуміти базові речі.
Вбудовані команди
file — це команда, яка вбудована в Mac OS (і потенційно в Unix). Ось приклад результатів:
А) для фото з геотегами
$ file A_with_location.jpgA_with_location.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, Exif Standard: [TIFF image data, big-endian, direntries=11, manufacturer=Apple, model=iPhone 5s, orientation=upper-left, xresolution=162, yresolution=170, resolutionunit=2, software=11.2.6, datetime=2018:06:20 17:09:22, GPS-DataTIFF image data, big-endian, direntries=11, manufacturer=Apple, model=iPhone 5s, orientation=upper-left, xresolution=162, yresolution=170, resolutionunit=2, software=11.2.6, datetime=2018:06:20 17:09:22, GPS-Data], baseline, precision 8, 3264x2448, components 3
Вказує, що GPS дані є, але фактично їх не показує.
Б) для фото БЕЗ геотегів
$ file B_no_location.jpegB_no_location.jpeg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 1280x960, components 3
mdls — показує список метаданих
А) для фото з геотегами
$ mdls A_with_location.jpgkMDItemFSContentChangeDate = 2022-10-23 10:36:49 +0000
kMDItemFSCreationDate = 2022-10-23 10:36:48 +0000
kMDItemFSCreatorCode = ""
kMDItemFSFinderFlags = 0
kMDItemFSHasCustomIcon = 0
kMDItemFSInvisible = 0
kMDItemFSIsExtensionHidden = 0
kMDItemFSIsStationery = 0
kMDItemFSLabel = 0
kMDItemFSName = "A_with_location.jpg"
kMDItemFSNodeCount = 540157
kMDItemFSOwnerGroupID = 20
kMDItemFSOwnerUserID = 501
kMDItemFSSize = 540157
kMDItemFSTypeCode = ""
Б) для фото БЕЗ геотегів
Станом на Жов-23–2022 ця команда показує ТІ САМІ дані в мене на Mac OS.
ХОЧА, раніше команда показували для ФОТО з геоданими додаткові параметри:
kMDItemLatitude = 51.0********667
kMDItemLogicalSize = 1439751
kMDItemLongitude = 11.98****333
По чому можна було зрозуміти довготу і широту геолокації.
Інші вбудовані програми
- qlmanage відкриває фото в режимі DEBUG, після закриття якого, в терміналі отримуються дані. Але в мене там якісь проблеми з результатами. І взагалі не ясно чи та команда адекватна чи ні.
Команди, а точніше програми, які додатково треба встановити
mediainfo
brew install mediainfo
А) для фото з геотегами
$ mediainfo A_with_location.jpgGeneral
Complete name : A_with_location.jpg
Format : JPEG
File size : 527 KiBImage
Format : JPEG
Width : 3 264 pixels
Height : 2 448 pixels
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Compression mode : Lossy
Stream size : 527 KiB (100%)
Б) для фото БЕЗ геотегів
Так само. Ну тобто команда не вказує інформацію про геотеги.
Але що цікаво, для файлів формату HEIC, команда показує інформацію КОЖНОГО фото-файлу, який міститься в середні.
exiv2
brew install exiv2
А) для фото з геотегами
$ exiv2 A_with_location.jpg File name : A_with_location.jpg
File size : 540157 Bytes
MIME type : image/jpeg
Image size : 3264 x 2448
Thumbnail : image/jpeg, 4922 Bytes
Camera make : Apple
Camera model : iPhone 5s
Image timestamp : 2018:06:20 17:09:22
File number :
Exposure time : 1/2740 s
Aperture : F2.2
Exposure bias : 0 EV
Flash : No, auto
Flash bias :
Focal length : 4.2 mm
Subject distance:
ISO speed : 32
Exposure mode : Auto
Metering mode : Multi-segment
Macro mode :
Image quality :
White balance : Auto
Copyright :
Exif comment :
Macro mode :
Б) для фото БЕЗ геотегів
$ exiv2 B_no_location.jpeg File name : B_no_location.jpeg
File size : 271378 Bytes
MIME type : image/jpeg
Image size : 1280 x 960
B_no_location.jpeg: No Exif data found in the file
А конкретно команда identify
А) для фото з геотегами
$ identify -verbose A_with_location.jpg Image:
Filename: A_with_location.jpg
Format: JPEG (Joint Photographic Experts Group JFIF format)
Mime type: image/jpeg
Class: DirectClass
Geometry: 3264x2448+0+0
Resolution: 72x72
Print size: 45.3333x34
Units: PixelsPerInch
Colorspace: sRGB
Type: TrueColor
Base type: Undefined
Endianness: Undefined
і там дуже багато даних, але є ОКРЕМА група даних щодо GPS:
exif:GPSAltitude: 9542/909
exif:GPSAltitudeRef: .
exif:GPSDateStamp: 2018:06:20
exif:GPSDestBearing: 16531/323
exif:GPSDestBearingRef: T
exif:GPSHPositioningError: 5/1
exif:GPSImgDirection: 16531/323
exif:GPSImgDirectionRef: T
exif:GPSInfo: 1680
exif:GPSLatitude: 43/1, 6/1, 5738/100
exif:GPSLatitudeRef: N
exif:GPSLongitude: 70/1, 43/1, 5062/100
exif:GPSLongitudeRef: W
exif:GPSSpeed: 0/1
exif:GPSSpeedRef: K
exif:GPSTimeStamp: 21/1, 9/1, 2100/100
І важливими тут є exif:GPSLatitude та exif:GPSLongitude
Б) для фото БЕЗ геотегів
$ identify -verbose B_no_location.jpeg Image:
Filename: B_no_location.jpeg
Format: JPEG (Joint Photographic Experts Group JFIF format)
Mime type: image/jpeg
Class: DirectClass
Geometry: 1280x960+0+0
Units: Undefined
Colorspace: sRGB
І тоді секція з GPS даними просто відсутня.
Джерела