Tree-lined path used as an example photograph in this metadata article.
Blog /

Извиличане на метаданни от изображения и видеа за OSINT

Published
Reading time
7 min

Intoduction

Винаги съм харесвал дефиницията на думата “метаданни”. Метаданните са данни за данните. Цифровите снимки и видео файлове често съдържат такива данни, добавени при създаването или редактирането им. Тези данни могат да включват марка и модел на камерата, час и дата на заснемане, GPS координати, настройки на апарата и всякаква друга софтуерна информация. Когато става въпрос за различни OSINT дейности, точно такива данни могат да разкрият: къде и кога е направена снимката или видеото и с какво устройство, което е ключово за разследване. Важно е обаче да се има предвид, че социалните мрежи често премахват метаданните при качване - например Facebook и Twitter X.

CLI инструменти за изображения

На unix базираните операционни системи има инструменти за анализ на медийни файлове. Най-популярният е exiftool - много готин инструмент, написан на Perl, който може да извлича и манипулира метаданни от почти всички видове медийни файлове. Може да се инсталира с:

sudo apt install exiftool # за дистрибуции, използващи apt

или

brew install exiftool # за MacOS

Нека вземем снимка с метаданни, която може да намерите ето тук пример

Нека пробваме с:

exiftool снимка.jpg

Make                            : NIKON
Camera Model Name               : COOLPIX P6000
Orientation                     : Horizontal (normal)
X Resolution                    : 300
Y Resolution                    : 300
Resolution Unit                 : inches
Software                        : Nikon Transfer 1.1 W
Modify Date                     : 2008:11:01 21:15:07
Aperture                        : 4.5
Image Size                      : 640x480
Megapixels                      : 0.307
Scale Factor To 35 mm Equivalent: 4.7
Shutter Speed                   : 1/178
GPS Date/Time                   : 2008:10:23 14:28:17.24Z
GPS Latitude                    : 43 deg 28' 1.76" N
GPS Longitude                   : 11 deg 53' 7.42" E
Auto Focus                      : On
Focal Length                    : 6.0 mm (35 mm equivalent: 28.0 mm)
GPS Position                    : 43 deg 28' 1.76" N, 11 deg 53' 7.42" E
Hyperfocal Distance             : 1.24 m
Light Value                     : 12.5

Ключови тагове са “Make”, “Camera Model Name”, “GPS Date/Time” и GPS координати като Latitude и Longitude. Можем да филтрираме само таговете, които ни интересуват:

exiftool снимка.jpg -GPSPosition

GPS Position                    : 43 deg 28' 1.76" N, 11 deg 53' 7.42" E
exiftool снимка.jpg -DateTimeOriginal

Date/Time Original              : 2008:10:22 16:29:49

Exiftool поддържа масово обработване на файлове. Например в текущата директория имаме 2 jpg файла и искаме да извлечем GPS координатите от тях:

exiftool -gps:all -r -ext jpg .

======== ./снимка1.jpg
GPS Latitude Ref                : North
GPS Longitude Ref               : East
GPS Altitude Ref                : Above Sea Level
GPS Time Stamp                  : 14:28:17.24
GPS Satellites                  : 06
GPS Img Direction Ref           : Unknown ()
GPS Map Datum                   : WGS-84
GPS Date Stamp                  : 2008:10:23
======== ./снимка2.jpg
GPS Version ID                  : 2.3.0.0
    1 directories scanned
    2 image files read

или моделите на камерите, с които са направени снимките:

exiftool -model -r -ext jpg .

======== ./снимка1.jpg
Camera Model Name               : COOLPIX P6000
======== ./снимка2.jpg
Camera Model Name               : Canon PowerShot SX60 HS
    1 directories scanned
    2 image files read

Друг инструмент за извличане на метаданни от изображения е Exiv2.

exiv2 pr снимка.jpg

File name       : снимка.jpg
File size       : 159137 Bytes
MIME type       : image/jpeg
Image size      : 640 x 480
Thumbnail       : image/jpeg, 6339 Bytes
Camera make     : NIKON
Camera model    : COOLPIX P6000
Image timestamp : 2008:10:22 16:29:49
File number     : 
Exposure time   : 0.00560852 s
Aperture        : F4.5
Exposure bias   : 0 EV
Flash           : No, compulsory
Flash bias      : 
Focal length    : 6.0 mm
Subject distance: 
ISO speed       : 64
Exposure mode   : Auto
Metering mode   : Multi-segment
Macro mode      : 
Image quality   : FINE   
White balance   : AUTO        
Copyright       : 
Exif comment    : charset=Ascii 

това показва стандартен списък с метаданни.

CLI инструменти за видео

За видео файлове може да ползваме MediaInfo или ffprobe (от пакета ffmpeg). MediaInfo показва подробна информация за видеа.

sudo apt install mediainfo # за дистрибуции, използващи apt

или

brew install mediainfo # за MacOS

Нека да видим какво може да извлечем с mediainfo:

mediainfo видео.mp4

General
Complete name                            : видео.mp4
Format                                   : MPEG-4
Format profile                           : Base Media
Codec ID                                 : iso5 (iso5/iso6/mp41)
File size                                : 106 MiB
Duration                                 : 35 s 152 ms
Overall bit rate                         : 25.3 Mb/s
Frame rate                               : 59.940 FPS
Writing application                      : Lavf60.16.100

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High@L5.2
Format settings                          : CABAC / 5 Ref Frames
Format settings, CABAC                   : Yes
Format settings, Reference frames        : 5 frames
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 35 s 152 ms
Bit rate                                 : 25.3 Mb/s
Width                                    : 3 840 pixels
Height                                   : 2 160 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 59.940 (60000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Stream size                              : 106 MiB (100%)
Writing library                          : x264 core 164 r3108 31e19f9

Този output има съдържа секции като “General” и “Video” с полета като формат, битрейт, широчина, височина, кадри в секунда и други.

За по-подробна информация може да се ползва

mediainfo --fullscan видео.mp4

Ако има координати или дата на снимане, те също ще бъдат видими след използването на командата.

Друг полезен инструмент е hachoir-metadata (част от Python Hachoir пакета). Чрез него може да се извличат данни от различни формати файлове (JPEG, MP4, PDF и др.). Например:

hachoir-metadata снимка.jpg

Metadata:
- Image width: 640 pixels
- Image height: 480 pixels
- Image orientation: Horizontal (normal)
- Bits/pixel: 24
- Pixel format: YCbCr
- Creation date: 2008-11-01 21:15:07
- Creation date: 2008-10-23 14:28:17
- Latitude: 43.46715666666389
- Longitude: 11.885394999997223
- Camera aperture: 2.9
- Camera focal: 4.5
- Camera exposure: 1/178.3
- Camera model: COOLPIX P6000
- Camera manufacturer: NIKON
- Compression: JPEG (Baseline)
- Thumbnail size: 6339 bytes
- ISO speed rating: 64
- EXIF version: 0220
- Date-time original: 2008-10-22 16:29:49
- Date-time digitized: 2008-10-22 16:29:49
- Exposure bias: 0
- Focal length: 6
- Flashpix version: 0100
- Focal length in 35mm film: 28
- Producer: Nikon Transfer 1.1 W
- Comment: ASCII
- Comment: JPEG quality: 73% (approximate)
- MIME type: image/jpeg
- Endianness: Big endian

Python библиотеки

За автоматизации може да се ползват библиотеки като hachoir или Pillow.

from hachoir.parser import createParser
from hachoir.metadata import extractMetadata

parser = createParser("файл.jpg")
metadata = extractMetadata(parser)
for line in metadata.exportPlaintext():
    print(line)
from PIL import Image

img = Image.open('photo.jpg')
exif_data = img._getexif()
print(exif_data)

Реални примери от OSINT

Разполагаме с модифицирана версия на известната снимка от Windows XP - “Bliss”. Нека използваме exiftool, за да извлечем метаданните от нея:

exiftool WindowsXP_1551719014755.jpg

ExifTool Version Number         : 13.30
File Name                       : WindowsXP_1551719014755.jpg
Directory                       : .
File Size                       : 234 kB
File Modification Date/Time     : 2025:06:26 22:02:13+03:00
File Access Date/Time           : 2025:06:26 22:02:38+03:00
File Inode Change Date/Time     : 2025:06:26 22:02:36+03:00
File Permissions                : -rw-r--r--
File Type                       : JPEG
File Type Extension             : jpg
MIME Type                       : image/jpeg
XMP Toolkit                     : Image::ExifTool 11.27
GPS Latitude                    : 54 deg 17' 41.27" N
GPS Longitude                   : 2 deg 15' 1.33" W
Copyright                       : OWoodflint
Image Width                     : 1920
Image Height                    : 1080
Encoding Process                : Baseline DCT, Huffman coding
Bits Per Sample                 : 8
Color Components                : 3
Y Cb Cr Sub Sampling            : YCbCr4:2:0 (2 2)
Image Size                      : 1920x1080
Megapixels                      : 2.1
GPS Latitude Ref                : North
GPS Longitude Ref               : West
GPS Position                    : 54 deg 17' 41.27" N, 2 deg 15' 1.33" W

След бърз преглед виждаме, че снимката има данни за Copyright и GPS Position:

  • OWoodflint
  • 54°17′41.27″ N, 2°15′1.33″ W

След кратък Google search, откриваме, че снимката е направена в близост до Widdale Beck, Великобритания. Намираме също така и профили на автора - X, GitHub и личен WordPress блог. От въпросните сайтове можем да разберем какъв му е имейлът (OWoodflint@gmail.com), къде се намира сега и какво прави. С търсене в интернет за около 10 минути може да се мине предизвикателството и всички “следи” да бъдат открити.

Заключение

Метаданните са като цифрови отпечатъци - те разказват история, която авторът често не осъзнава, че оставя. Както видяхме от примера с модифицираната “Bliss” снимка, дори малко количество метаданни може да доведе до значителни открития - от GPS координати до лична информация за автора. Това демонстрира колко мощен може да бъде този подход при правилното му прилагане.

Secret garden discovered

You touched grass.

Digitally, but it still counts.
Take a breath. Stay a little.