Массовый поиск геотэгов на сайтах и в локальном хранилище
https://t.me/Hack_Tools1#Обучение
На этапе разведки, а также при криминалистическом исследовании, метаданные – это очень хороший источник информации. При этом нужно понимать и оценивать риск фальсификации данных, поскольку эта информация может быть легко подменена.
Что прямо сейчас можно почитать про исследование метаинформации:
- Как просмотреть или отредактировать метаданные pdf или изображениях из командной строки Linux
- Как удалить метаданные файла на Linux
- Insiderer (мощная программа по извлечению всей возможной метаинформации)
- mat (набор инструментов анализа/удаления метаданных)
- Геолокация фотографий по GPS меткам в метаданных (онлайн сервис)
Здесь же я хочу поговорить про геотэги. Фактически, геотэги – это метаинформация, полученная от GPS датчика о географических координатах, где сделана фотография. Вы можете использовать уже названные программы для просмотра геотэгов, также обязательно стоит упомянуть jhead и exiv2 [на моих тестовых фотографиях эта программа не показывает геотэги]. Особенно полезна exiv2 для модификации метаинформации.
Причём я хочу поделиться наработками не просто по исследованию геотэгов, а по:
- массовому поиску GPS информации в фотографиях на локальном диске;
- поиске GPS информации в фотографиях на сайтах.
Начнём с установки программ, которые нам понадобятся.
В BlackArch:
sudo pacman -S httrack jhead bc
В Kali Linux:
sudo apt-get install httrack jhead bc
Посмотреть метаинформацию, в том числе и о GPS, легко, в дополнение к методам, описанных в статьях, на которые даны ссылки выше, это можно сделать, например, так:
jhead файл
Нас интересуют здесь:
GPS Latitude : N 48d 8m 37s GPS Longitude: E 17d 6m 31s
Визуализировать информацию о большом количестве фотографий можно, например, добавив их координаты на карту. Отсюда у нас возникают две новые задачи:
- конвертировать запись координат (из вида дни – минуты – секунды) в более понятный для карты вид;
- сформировать список, удобный для автоматизированного импорта в карту.
Теперь я покажу как это сделать с любым количеством фотографий. А потом мы будем искать геотэги в фотографиях на сайтах.
Создайте файл latandlon.sh и скопируйте в него:
#!/bin/bash t1=$( jhead "$1" | grep -E 'GPS Latitude' | sed 's/GPS Latitude : //' ); if [ "$t1" ]; then d1=$( echo $t1 | cut -d ' ' -f 2 | sed 's/d//' ) m1=$( echo $t1 | cut -d ' ' -f 3 | sed 's/m//' ) s1=$( echo $t1 | cut -d ' ' -f 4 | sed 's/s//' ) lat=$( echo "$d1 + $m1/60 + $s1/3600" | bc -l ) if [ $( echo $t1 | cut -d ' ' -f 1 | sed 's/d//' ) == 'S' ]; then lat=-$lat fi t2=$( jhead "$1" | grep -E 'GPS Longitude' | sed 's/GPS Longitude: //' ); d2=$( echo $t2 | cut -d ' ' -f 2 | sed 's/d//' ) m2=$( echo $t2 | cut -d ' ' -f 3 | sed 's/m//' ) s2=$( echo $t2 | cut -d ' ' -f 4 | sed 's/s//' ) lon=$( echo "$d2 + $m2/60 + $s2/3600" | bc -l ) if [ $( echo $t2 | cut -d ' ' -f 1 | sed 's/d//' ) == 'W' ]; then lon=-$lon fi t10=$( echo $1 | sed 's/\///g' ) echo "['$t10', $lat, $lon]," else echo "$1:nothing" fi
Эта программа делает довольно простые вещи:
- очищает геоданные от другой информации;
- конвертирует координаты;
- выводит информацию в удобном для импорта в карту виде.
Запускать так:
bash ./latandlon.sh "файл_изображения"
Пример работы программы:
Для автоматизации процесса давайте будем использовать команду find. Например, в моём случае:
find imgs/ -type f -and \( -name '*.jpg' -or -name '*.JPG' \) -exec bash ./latandlon.sh "{}" ';'
Результат:
Вместо imgs/ укажите ваш каталог с фотографиями.
Давайте отфильтруем данные, которые всё равно не содержат геоинформацию:
find imgs/ -type f -and \( -name '*.jpg' -or -name '*.JPG' \) -exec bash ./latandlon.sh "{}" ';' | grep -E -v ':nothing'
Результат работы:
Чтобы сохранить данные в файл делаем так:
find imgs/ -type f -and \( -name '*.jpg' -or -name '*.JPG' \) -exec bash ./latandlon.sh "{}" ';' | grep -E -v ':nothing' > gps.txt
Теперь создадим ещё один файл, назовём его genaratemap.sh и скопируем туда:
#!/bin/bash cat << _EOF_ <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <title>HackWare.ru: Geotagging</title> <script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script> </head> <body> <div id="map" style="width: 1900px; height: 1100px;"></div> <script type="text/javascript"> var locations = [ $( cat "$1" ) ]; var map = new google.maps.Map(document.getElementById('map'), { zoom: 3, center: new google.maps.LatLng(0, 0), mapTypeId: google.maps.MapTypeId.ROADMAP }); var infowindow = new google.maps.InfoWindow(); var marker, i; for (i = 0; i < locations.length; i++) { marker = new google.maps.Marker({ position: new google.maps.LatLng(locations[i][1], locations[i][2]), map: map }); google.maps.event.addListener(marker, 'click', (function (marker, i) { return function () { infowindow.setContent(locations[i][0]); infowindow.open(map, marker); } })(marker, i)); } </script> </body> </html> _EOF_
Запускать так (где вместо gps.txt ваш сгенерированный с помощью предыдущей команды файл):
bash genaratemap.sh gps.txt > map.htm
Теперь открываем файл map.htm любым браузером:
Поиск геотэгов в фотографиях на сайтах
Теперь, когда мы умеем искать геотэги в любом количестве файлов в каталогах любой вложенности и при этом наглядно представлять полученные данные, думаю, алгоритм поиска GPS информации на фотографиях сайтов понятен, поскольку он очень прост:
- мы делаем зеркало сайта на локальном диске;
- ищем геотэги в каталоге с зеркалом сайта как это описано чуть выше.
Программ для создания зеркал много, я буду использовать утилиту командной строки HTTrack Website Copier. Подробную справку о ней вы можете найти здесь.
В моём случае команда выглядит так:
httrack miloserdov.org -O "/home/mial/websites/Miloserdov" -%v *.jpg
Здесь:
- miloserdov.org – адрес сайт, фотографии с которого меня интересуют;
- -O "/home/mial/websites/Miloserdov" – каталог с файлами сайта
- *.jpg – означает принимать все файлы формата jpg.
Теперь ищем фотографии с GPS метками и генерируем карту:
find websites/Miloserdov/ -type f -and \( -name '*.jpg' -or -name '*.JPG' \) -exec bash ./latandlon.sh "{}" ';' | grep -E -v ':nothing' > gps.txt bash genaratemap.sh gps.txt > gps.htm
Открываем полученную карту браузером.
Заключение
Мы научились массово искать и добавлять на карту информацию о том, где сделана фотография. Мы можем это делать как на локальных хранилищах, так и на веб-сайтах.
Нужно знать, что почти все программы, которые изменяют/пересохраняют изображения, отбрасывают геотэги. Это же касается и веб-приложений (фотографии после обработки на WordPress, из популярных социальных сетей).
Смежные вопросы, которые не рассматривались:
- поиск геотэгов в изображениях отличных от .jpg;
- добавление на карту не только меток с именами файлов, но и самих фотографий;
- сбор и анализ другой метаинформации (время съёмки, камера и т.д.), которые могут значительно дополнить полученные данные.