Wydarzenia z pierwszych dni stycznia 2021 r. – mówię tu o wtargnięciu do Kapitolu – pokazały wiele rzeczy. Zwłaszcza jeśli chodzi o obecny stan USA i potęgę informatycznych korporacji.

Ale to większa sprawa, więc wpis o niej jeszcze trochę poczeka. Na razie pokażę wam jedynie krótką historyjkę z morałem, która może nas nauczyć czegoś o prywatności.

Spoiler: Wszystkie zdjęcia, które wrzucacie do internetu, mogą zawierać Wasze dokładne współrzędne geograficzne.

Co stało się zwolennikom Trumpa

Historia jeszcze świeża, więc pewnie wiele osób ją kojarzy. Ale dla formalności krótkie tło wydarzeń:

  1. W 2018 roku powstaje Parler, portal społecznościowy reklamujący się jako ostoja wolności słowa.
  2. Parler stopniowo zyskuje popularność wśród amerykańskiej prawicy. Szczególnie w związku z cenzurowaniem wypowiedzi republikańskiego prezydenta, Donalda Trumpa, przez większe organizacje.
  3. Trump przegrywa wybory, nowym prezydentem ma zostać demokrata Joe Biden.
  4. 6 stycznia 2021 r. w Waszyngtonie grupa protestujących zwolenników Donalda Trumpa wchodzi siłą do budynku Kapitolu.
  5. W stronę Parlera padają oskarżenia. Przeciwnicy zarzucają mu, że był jednym z miejsc, w których buntownicy koordynowali swoje działania. Google i Apple blokują możliwość pobierania aplikacji Parlera.
  6. Badacze szybko zlatują się pobierać dane, zanim strona upadnie. W tym dowody obciążające ekipę z Kapitolu. Jak się okazuje, strona Parlera była słabo zabezpieczona i można było automatycznie pobrać całą treść.
  7. Amazon przestaje zapewniać Parlerowi hosting. Strona znika.

Parler zaliczył fakapa nie tylko w kwestii zabezpieczeń. Jak się okazało, nie usuwał ze zdjęć użytkowników informacji o lokalizacji.

Komplet wypowiedzi i multimediów z kilku lat działania serwisu. Z dokładnie oznaczonym czasem i miejscem, w którym powstały. Żyła złota! Wielu dziennikarzy, badaczy, analityków i hobbystów rzuciło się na te cenne dane.

Efektem ich działań było namierzenie niektórych osób, dokładna rekonstrukcja wydarzeń na Kapitolu i wizualizacje dające do myślenia.

Mnie natomiast, bardziej niż same wydarzenia, zaciekawiła sprawa danych o lokalizacji zawartych w zdjęciach. Jeśli duża strona społecznościowa ich nie usuwała, to czy możliwe, że inne też tego nie robią? I że nieświadomie, wysyłając innym zdjęcia, często zdradzamy swoje położenie?

Dane EXIF w praktyce

Na potrzeby tego wpisu włączyłem w telefonie geotagowanie. I zrobiłem takie jedno niewyraźne zdjęcie:

Zdjęcie wykonane w nocy, z punktu kilka metrów nad ruchliwą dwupasmową jezdnią. Widać kilka jadących po niej pojazdów. Po prawej stronie na budynku jest neonowy napis 'Agata'. W tle wysoki budynek o nieregularnym kształcie.

Co to za miasto? Co to za korpowieża w tle wyglądająca, jakby ktoś grał w Jengę? Niektórzy może rozpoznają.

Domyślna aplikacja, Galeria, daje mi możliwość przeglądania na mapie miejsc, w których dodałem znaczniki. W tym wypadku pokazuje:

Screenshot prostej mapy pokazujący czerwony znacznik lokalizacji na jezdni. Blisko niego, po lewej stronie, oznaczenie kładki nad drogą. Podpisana nazwa ulicy: Sokolska.

Czyli miejsce wykonania zdjęcia to Katowice. Kładka na ul. Sokolskiej, niedaleko Spodka i Oka Miasta.
Owszem, nieco mnie przesunęło i wychodzi na to, że zamiast na kładce stałem sobie na środku ruchliwej drogi. Ale to tylko kilkanaście metrów różnicy.

Ciekawostka

Z kronikarskiego obowiązku: zrobiłem też inne zdjęcie, w trochę dzikszych rejonach. Tam pokazało znacznik ponad kilometr od prawdziwego położenia. Ale może nie czekałem wystarczająco długo po włączeniu i nie złapało dokładnej lokalizacji? W każdym razie lepiej nie liczyć na niedokładność urządzenia.
Pewien artykuł na stronie rządowej podaje, że dokładność smartfonowych GPS-ów, pod gołym niebem i bez dodatkowego wspomagania, może wynosić do ok. 4,9 m. I na takie coś lepiej się nastawiać.

Ktoś mógłby pomyśleć, że te znaczniki to taki bajer telefonu. Że kiedy mamy włączoną lokalizację, to podczas robienia zdjęcia dodaje do osobnej, prywatnej bazy informację o tym, gdzie je zrobiliśmy.

Ale tak nie jest. Telefon dodaje te informacje bezpośrednio do pliku ze zdjęciem.

Takie informacje uzupełniające to właśnie metadane EXIF. Mają pewne zastosowanie, kiedy na przykład chcemy ułatwić sobie tagowanie kolekcji zdjęć albo podzielić się ustawieniami aparatu w momencie robienia zdjęcia. Ale dla wielu osób to czarna magia, która może zostać użyta przeciwko nim.

Zresztą spójrzmy sami. Biorę to swoje zdjęcie, otwieram je w zwykłym Eksploratorze Windowsa, klikam prawym przyciskiem, wybieram Właściwości z dołu, a potem zakładkę Szczegóły. Pokazują się metadane zawarte w pliku, w tym również informacje o lokalizacji:

Okno Windowsa pokazujące listę informacji o zdjęciu, pogrupowanych pod nagłówkami. Dorysowana czerwona ramka otacza nagłówek 'GPS' oraz wartości 'długość' i  'szerokość' znajdujące się pod nim.

To współrzędne w tzw. formacie DMS (stopnie, minuty i sekundy długości/szerokości geograficznej).

Domyślne okno Windowsa, z tego co widzę, nie daje możliwości ich skopiowania. Gdyby ktoś chciał, mógłby na tym etapie znaleźć osobny program do odczytywania metadanych.

Ale mogę też otworzyć sobie Google Maps i wklepać liczby „z palca” w pasek wyszukiwarki. Najpierw szerokość, potem długość, oddzielone przecinkiem. Po pierwszej liczbie daję znak stopnia (°), po drugiej pojedynczy apostrof, kropkę jako oddzielenie części dziesiętnej:

50°15'54.7805, 19°1'10.0309

Gdybym nigdzie nie mógł znaleźć znaku stopnia, to mógłbym otworzyć jakiś internetowy konwerter, na przykład ten od amerykańskiej agencji FCC, wpisać liczby dla szerokości geograficznej w polach dla latitude i te dla wysokości w polach dla longitude. A na koniec wkleić w Mapy wyliczone wartości: 50.265217, 19.019453.

Fragment strony internetowej, pokazujący białe pola na pomarańczowym tle. Wpisane są w nie liczby, elementy długości i szerokości geograficznej. W dwóch białych polach poniżej wyświetlają się wartości przeliczone na zapis dziesiętny.

Po wyszukaniu w Mapsach znacznik pokazuje się dokładnie tam, gdzie umieszczała go aplikacja do zdjęć na moim telefonie. Jako punkt orientacyjny oznaczyłem również pawilon „Agata”, którego neon widać na zdjęciu.

Zrzut ekranu z Google Maps. Czerwony znacznik lokalizacji wyświetla się na jezdni obok kładki, tak jak poprzednio na telefonie. Nad prostokątem (budynkiem) na południowy wschód od znacznika widać napis 'Agata'. Jest on otoczony czerwonym prostokątem.

Wniosek: każda osoba, która dostałaby oryginał mojego zdjęcia, mogłaby się dowiedzieć po danych EXIF, w jakim dokładnie miejscu je zrobiłem.

…No ale przecież tyle razy wrzucało się zdjęcia na Fejsa, Zdjęcia Google’a, Insta, inne aplikacje? A jakoś nie słychać o wyciekach i zagrożeniach? To tylko dlatego, że te platformy same usuwają metadane z plików. Gdyby tego nie robiły, to każdy mógłby je odczytać.

Żeby to sprawdzić, najpierw otwarłem zdjęcie w GIMP-ie, zmniejszyłem jego rozmiar i jakość, zapisałem pod inną nazwą. Następnie wysłałem je do samego siebie przez Gmaila, w załączniku. Dane o lokalizacji nadal w nim były.

Czyli metadane można łatwo odczytać i niełatwo znikają. A jakie zagrożenia się z tym wiążą? Wymyśliłem dość życiowy przykład.

Scenariusz z życia

Dwie osoby studiują na jednym kierunku. Jedna z nich to zwykła losowa, nieświadoma osoba. A druga to jakiś stalker (albo stalkerka! Nikogo nie dyskryminuję :wink:). Stalker(-ka) chce się dowiedzieć, gdzie mieszka ofiara. Ale wprost nie zapyta, żeby nie budzić podejrzeń i nie zostawiać śladów.

Czeka zatem do okolic sesji, żeby mieć pretekst. Oczywiście może też łapać dowolny inny dzień, jeśli ofiara się wygadała, że będzie wtedy w domu.

Potem pisze przez Messengera:

Stalker(-ka): Hej, podeślesz mi jakieś notatki z zeszłego tygodnia?
Ofiara: Hej, pewnie :) Nie mam tylko z wykładu z X, bo mnie nie było.

S: Dzięki! ^_^
S: (Po chwili) A możesz mi przesłać na maila? Jeśli to nie kłopot :p Chcę sobie wydrukować, a FB zmniejsza.

S: Na some_stalker@randomail.com
O: (Wysyła maila) Poszło, masz? :)
S: Jest, dzięki!!
S: Stawiam Ci piwo następnym razem :)

W ten sposób stalker(-ka) zdobywa zdjęcia z kompletem metadanych, wykonane w domu przyszłej ofiary. Nie budząc jej podejrzeń.

Sprawdza zdjęcie… i sukces! Znaczniki lokalizacji były włączone. Nawet jeśli stalker(-ka) nie umie programować, może przepisać koordynaty i wpisać je w mapy, tak jak zademonstrowałem.

Znacznik pojawia się na działce obok domu jednorodzinnego pod miastem, w którym studiują. Bingo! Kolejna część planu to osobiste odwiedziny :smiling_imp: Resztę zostawiam waszej wyobraźni.

Brzmi realnie? To mogłoby przydarzyć się nam wszystkim. I nawet byśmy nie wiedzieli, skąd ktoś wziął o nas informacje. Moglibyśmy myśleć, że ktoś znajomy się wygadał.

Kiedy przesyłamy zdjęcia na jakąś stronę, to nigdy nie wiemy, czy usunie z nich metadane. A nawet jeśli zwykle usuwa, to czy mamy jakąś gwarancję? Jakiś praktykant może coś popsuć w systemie i przez chwilę będzie działało inaczej.

Nawet komunikator stawiający na prywatność, Signal, nie usuwał kiedyś metadanych! Co stało się zresztą przedmiotem żywej dyskusji (o numerze, o ironio, 1984).

Ta dyskusja zawiera zresztą komentarze, które uczą nas ciekawych rzeczy:

  1. Nawet jeśli dbasz o prywatność, twoja lokalizacja może się wydać przez cudzego selfiaka. Nawet jeśli jesteś Johnem WickiemMcAfee, znaną postacią w świecie cyberbezpieczeństwa.

    the threat exists in many situations, including passing along an image received from someone else. (For example, John McAfee’s location while in hiding was revealed precisely this way.)

  2. Znasz się na technologii? Zawsze może być ten jeden raz, kiedy opuścisz gardę:

    I’m also reminded of the story of Higinio O. Ochoa III, a hacker that got caught because he used software to remove the EXIF data from an image he wanted to upload, but then accidentally uploaded the original. Even when you know about EXIF, you could still screw up.

Tyle dowodów chyba wystarczy – metadane mogą być pułapką. Jeśli nie chcemy upublicznić miejsca, w którym robiliśmy zdjęcia, to najlepiej własnoręcznie wyłączyć znaczniki lokalizacji i usunąć te istniejące. „You’ve got to be your own hero…”, jak mawiają infantylne memy. Już pokażę, jak można to zrobić.

Jak wyłączać i usuwać dane o lokalizacji

Wyłączanie geotagowania

Na początek wyłączmy dodawanie znaczników lokalizacji. Pokażę na przykładzie swojego smartfona (Huawei, Android 10). W innych urządzeniach może to wyglądać nieco inaczej. Nawet tradycyjne aparaty cyfrowe mogą dodawać znaczniki!

Prawie zawsze gdzieś w opcjach będzie „pstryczek” mówiący coś o lokalizacji. To jego najłatwiej wyłączyć, żeby nas nie tagowało. W przypadku mojego telefonu miałem coś takiego w menu aplikacji Aparat (pod ikoną koła zębatego):

Menu z ustawieniami aplikacji Aparat na telefonie. Dorysowany czerwony kwadrat otacza opcję znaczników lokalizacji, którą można włączać lub wyłączać suwakiem.

Tyle na poziomie aplikacji. Ale z nimi różnie bywa, dla pewności warto też użyć pstryczków systemowych.

Nowsze Androidy pozwalają ustawić szczegółowe pozwolenia aplikacjom. Wszedłem w Ustawienia z głównego ekranu, potem PrywatnośćMenedżer uprawnień. Tam miałem zakładkę Lokalizacja z ikoną znacznika. Po wejściu w nią mogłem poblokować aplikacjom, w tym Aparatowi, dostęp do danych GPS-a:

Ekran Menedżera Uprawnień systemu Android. Widać na nim nagłówek 'Lokalizacja', ikonę aplikacji 'Aparat' oraz trzy opcje: włączenie, włączenie tylko podczas korzystania albo wyłączenie.

A jeśli chcemy ostatecznie dobić GPS-a, to można też wyłączyć lokalizację dla całego telefonu. W moim przypadku po powrocie do głównego ekranu dało się paroma ruchami „ściągnąć” menu z góry, jak żaluzję. Tam był przełącznik:

Menu główne Anroida, z ikonami odpowiadającymi różnym funkcjom. Dorysowany czerwony prostokąt otacza ikonę znacznika GPS, podpisaną 'Lokalizacja' i mającą szary kolor (co oznacza, że opcja jest wyłączona).

…I zrobione. O ile nasz system nie jest nieposłuszny lub nie ma jakiejś poważnej luki, to od teraz zdjęcia nie będą zawierały informacji od GPS-a.

Usuwanie metadanych

Dla każdego systemu wygląda to nieco inaczej.

Windowsa już pokazałem – w tym wypadku otwieracie okno z informacjami o zdjęciu (prawy przycisk na pliku, Właściwości, zakładka Szczegóły). Potem klikacie na dole opcję Usuń właściwości oraz informacje osobiste. I już, metadane znikną!

Dla Androida znalazłem porady, które jednak się nie sprawdziły.
Według nich można otworzyć zdjęcia w domyślnej Galerii, przytrzymać palcem na jednym z nich, żeby pokazały się opcje. W dolnym prawym rogu mamy Więcej, a potem Szczegóły. Tylko że powinna tu być opcja edycji, a u mnie się nie pojawiła.
Rozwiązaniem może być apka. Na Reddicie, w wątkach poświęconych prywatności, mignął mi czasem Scrambled Exif.

W kwestii urządzeń od Apple’a nie jestem w temacie, ale ten wpis wydaje się solidnym poradnikiem. Reddit poleca również apkę Exif Viewer na iOS.

Z Linuxami to pewnie zależy. Mój Mint nie daje domyślnej możliwości usuwania metadanych, więc robiłbym to skryptami (w praktyce nic nie muszę, bo geolokalizacja wyłączona).

Podsumowanie

Jeśli poprzednio nie wiedzieliście o metadanych, to mam nadzieję, że porcja faktów z tego wpisu wypełniła tę lukę. Nawet jeśli nie planujemy marszu na Kapitol ani wysyłania notatek stalkerom, zawsze to jakaś wiedza na przyszłość.

Może przez słuchanie o takich rzeczach tracimy nieco beztroski… ale zyskujemy możliwość brania swoich spraw i danych we własne ręce. Nie ma co żyć beztrosko, kiedy można świadomie!

Aha, i mówiłem na początku, że będzie historyjka z morałem? No to morał:

Tnij EXIF do zera – nie będzie dla stalkera.

Z najprzystępniejszych informacji to tyle, dzięki za lekturę! :smile:

A jeśli nie boicie się skryptów, to mam dla Was dwa. Możecie dzięki nim przeglądać i usuwać dane EXIF w wielu zdjęciach naraz, w ciągu paru sekund i na każdym systemie, na jakim działa Python (czyli praktycznie na wszystkich poza mobilnymi (chociaż na Androidzie też się da z odrobiną gimnastyki)).

W takim wypadku czytajcie dalej!

Bonus: skrypty do sprawdzania i usuwania metadanych

Zanim użyjecie skryptów, trzeba zdobyć Pythona i jeden moduł pomocniczy. Omawiam tu proces dla Windowsa, ale zasady działania dla pozostałych systemów są takie same:

  • Pobierzcie Pythona z oficjalnej strony.

    Proces jest bezbolesny, na stronie powinno samo Wam podpowiedzieć najnowszą wersję.
    Podczas instalacji pamiętajcie o kilku rzeczach:

    • Kiedy zapyta o instalowanie dodatkowych rzeczy, to zaznaczcie pip;
    • W tym samym oknie najlepiej zaznaczcie tcl/tk i IDLE;
    • Zaznaczcie dodaj Pythona do zmiennych środowiskowych (czy coś w tym stylu).
  • Otwórzcie PowerShella. Żeby to zrobić, możecie wejść do menu Start w lewym dolnym rogu, zacząć pisać pow…, a w podpowiedziach wyskoczy PowerShell.

  • Wpiszcie w PowerShella pip install pillow.

    pillow to inaczej PIL – biblioteka do przetwarzania obrazków. Python nie ma czegoś takiego w pakiecie, więc trzeba pobrać z zewnątrz. Żeby to zrobić, musicie mieć połączenie z internetem.
    Boicie się instalować nieznane rzeczy z sieci? Bardzo słusznie! :+1: Warto najpierw sprawdzić oficjalną stronę tej biblioteki na PyPI, a z niej przejść na stronę z kodem źródłowym.
    I tak bez odrobiny zaufania się nie obejdzie, ale prawie 8200 gwiazdek (pozytywnych ocen) jest jakąś rekomendacją.
    Całe okno po zainstalowaniu PIL-a powinno wyglądać tak:

Obrazek pokazujący okno programu Powershell. W jednej z linijek wpisana komenda 'pip install pillow', pod spodem wypełniony pasek ładowania i informacja, że pobrano 1,9 MB i zainstalowano bibliotekę PIL.

  • Oprócz tego przyda Wam się jakiś obrazek z metadanymi. Możecie na przykład użyć tego mojego z Katowic.

  • Warto też stworzyć osobny folder na testowane obrazki.
    Jeszcze lepiej by było użyć osobnego komputera / maszyny wirtualnej, jak przy każdym nieznanym kodzie… No ale wiem jak jest.

Teraz macie już wszystko co potrzebne, można odpalać skrypciory :sunglasses:

Sprawdzanie metadanych

Tak jak pokazywałem, czasem system domyślnie pozwala nam zajrzeć w metadane. Ale skryptem można to zrobić szybciej, przyjemniej i w taki sam sposób na różnych komputerach.

get_exif.py (pobierz)

Wrzućcie go do tego samego folderu co obrazki, które chcecie sprawdzić. Następnie otwórzcie go w IDLE i odpalcie, np. naciskając F5 (wszystko opisałem w podstawowym samouczku, link wyżej).

Aby skrypt działał, trzeba zainstalować moduł dodatkowy pillow (opisałem to dokładniej w drugim podlinkowanym samouczku).

Jeśli wszystko dobrze poszło, po odpaleniu skryptu w tym samym folderze powstanie plik metadane_exif.txt.

W tym pliku wyróżnionymi nagłówkami będą nazwy obrazków, w których znaleziono metadane. Pod każdym nagłówkiem będzie ich dokładna lista. A także, w przypadku znalezienia danych z GPS-a, położenie przeliczone na jednostki dziesiętne:

LOKALIZACJA:
50.265216827222226, 19.01945304861111

Wystarczy taką linijkę z liczbami zaznaczyć, skopiować i wkleić na stronkach z mapami :wink: Dowiecie się, ile zdradzają o Was zdjęcia – zanim wpadną w niepowołane ręce.

Usuwanie metadanych

Zanim pokażę skrypt – odrobina historii.

Umiem tylko w Pythona, więc wyszukałem python how to remove exif. Wyskoczyły mi wyniki.
I pierwszy od góry był tradycyjnie wątek z forum StackOverflow. Jedna z odpowiedzi sugerowała użycie takiego kodu:

from PIL import Image
image = Image.open('path/to/image')
image.save('new/path/' + file_name)

Trzy linijki. I to nawet nie osobna, wyspecjalizowana komenda, tylko najzwyklejsze załadowanie i ponowne zapisanie obrazka (a metadane gubi po drodze).

Może autorzy PIL-a to geniusze? A może trochę leniuchy, których programy olewają grę wstępną z metadanymi i od razu lecą do bitów obrazka?

W każdym razie fakt pozostaje faktem: trzy linijki wystarczyły, żeby usunąć dane i żeby do całej sprawy nie doszło. Takie coś mogło ocalić przed problemami użytkowników Parlera. I pewnie wiele innych osób, może budzących większą sympatię.

OK. Chwila refleksji była, teraz skrypt.

remove_exif.py (pobierz)
Instrukcja:

Tak jak poprzednio, wystarczy go upuścić w tym samym folderze co zdjęcia, najlepiej pobieżnie przejrzeć i odpalić.
Do działania potrzebuje modułu dodatkowego pillow (opis instalacji wyżej).

Skrypt nie nadpisuje zdjęć (żeby przypadkiem czegoś nie usunąć), tylko tworzy ich kopie. W podfolderze o nazwie Bez_metadanych.

Stąd uwaga: gdybyście chcieli odpalić go w folderze, w którym znajduje się dużo ciężkich zdjęć, to sprawdźcie wcześniej ilość miejsca na dysku.

Tak „wykastrowane” zdjęcia z podfolderu można z czystym sumieniem wrzucać w sieć.

Ciekawostka

A może jednak nie do końca?
Metadane to nie wszystko, namierzyć da się również po elementach widocznych na zdjęciu. Pewien japoński stalker ustalił miejsce pobytu idolki na podstawie obrazu stacji kolejowej odbitego w jej oczach.

I tym akcentem kończę dzisiejsze przemyślenia o metadanych i stalkerach. Do zobaczenia przy kolejnych okazjach! :smile: