Fotopasce Wachman Solar Pro nie su žiadna špička. Je to obyčajná lacná fotopasca vyrábana masovo v číne a na temu sa predáva za 60 euro. Funguje to tak, že temu fotopasce predáva aj po 100 kusoch a dáva obrovské zľavy, tým pádom jedna takáto fotopasca výjde na 25-30 euro. Firmy ich nakúpia vo veľkom, osadia vlastný firmware a vlastný názov. Táto fotopasca sa predáva pod obrovským množstvom názvov:)
- Ceyomur CY95
- Voopeak T180 (alebo aj Voopeak TC02)
- Campark T180
- NewTech TC02 * Fuvision Y11 * Solareye WiFi Solar (častý generický brand na Amazone)
- Vimel WIFI Outdoor Solar Powered Trail Camera
Kúpili ste si fotopascu Wachman Solar Pro alebo Campark T180 a zaujíma vás, čo sa skrýva vo vnútri? V tomto článku sa pozrieme pod kapotu — rozanalyzujeme firmware, odhalíme skutočný hardvér, WiFi/Bluetooth protokol a ukážeme, ako si naprogramovať vlastnú PC aplikáciu na sťahovanie fotiek.
Keď som získal firmware z Campark T180 (súbor FW96675A.bin, 6.3 MB) a otvoril ho v nástroji NTKFWinfo, prvé čo ma prekvapilo bolo, že vo firmware nie je ani slovo “Campark” ani “Wachman”. Namiesto toho som našiel interný model flag _MODEL_A119V3_ a build cestu D:/Project/NT96510/07_ecos/.
To prezrádza, že obe fotopasce pochádzajú od rovnakého čínskeho ODM výrobcu, ktorý jednu platformu predáva pod rôznymi značkami:
Čínsky ODM výrobca
│
├── rovnaký hardvér
├── rovnaký firmware (FW96675A.bin)
├── rovnaká mobilná appka
│
├──► "Campark T180"
├──► "Wachman Solar Pro"
├──► "DSOON"
└──► desiatky ďalších značiek...
Líšia sa len logom na tele, krabicou a cenou — pričom Wachman býva spravidla drahší.
Čo je vo vnútri: Hardvér odhalený firmwarom
Analýzou stringov v binárnom firmware som identifikoval kompletný hardvérový stack:
| Komponent | Detail |
|---|---|
| Procesor | Novatek NT96675 |
| Obrazový senzor | Sony IMX335M (5MP natívne, interpolované na 46MP) |
| WiFi modul | Realtek RTL8189ES (SDIO, 2.4 GHz 802.11 b/g/n) |
| Bluetooth | Integrovaný BLE 5.0 |
| Operačný systém | eCos RTOS (nie Linux!) |
| RAM | 128 MB DDR |
| Úložisko fotiek | SD karta, súborový systém FAT32, štruktúra A:\DCIM\ |
Zaujímavé je, že fotopasca nebeží na Linuxe ako väčšina moderných IoT zariadení, ale na eCos — real-time operačnom systéme. To vysvetľuje rýchle zapnutie a nízku spotrebu energie.
Analýza firmware krok za krokom
Extrakcia partícií
Firmware som rozbalil pomocou nástroja NTKFWinfo:
python NTKFWinfo.py -i FW96675A.bin
Výstup ukázal 3 partície:
| # | Typ | Veľkosť | Obsah |
|---|---|---|---|
| 1 | MODELEXT | 2.9 KB | Info o čipe, build dátum 20220520 |
| 2 | Komprimovaný (TTComp) | 6.0 MB | Hlavný UITRON/eCos firmware |
| 3 | Data | 263 KB | Resources, boot config |
Extrakcia:
python NTKFWinfo.py -i FW96675A.bin -x all -o fw_extracted
Hľadanie zaujímavých stringov
Keďže strings nie je na Windows štandardne dostupný, použil som Python:
import re
with open('FW96675A.bin-partitionID2', 'rb') as f:
data = f.read()
strings = re.findall(rb'[\x20-\x7e]{5,}', data)
for s in strings:
decoded = s.decode('ascii', errors='replace')
if any(kw in decoded.lower() for kw in ['wifi', 'bluetooth', '192.168', 'ssid', 'password']):
print(decoded)
A tu začalo byť naozaj zaujímavo.
WiFi: Ako fotopasca komunikuje
Fotopasca ako Access Point
Fotopasca sa nepripája k vašej domácej WiFi. Funguje to presne naopak — fotopasca si vytvorí vlastnú WiFi sieť a vy sa k nej pripojíte.
Vo firmware som našiel tieto sieťové konfigurácie natvrdo:
192.168.0.1 / 192.168.0.2
192.168.1.1 / 192.168.1.2
192.168.2.1 / 192.168.2.2
192.168.2.101
A taktiež:
12345678 ← default WiFi heslo (natvrdo vo firmware!)
RTKAP_ ← SSID prefix (Realtek Access Point)
defaultSSID ← fallback názov siete
SSID:%s, Passphrase:%s ← formátovací string pre zobrazenie
DHCP server beží priamo na fotopasci a prideľuje IP adresu vášmu telefónu/počítaču.
WiFi príkazy nájdené vo firmware
WiFiCmd_OnExeModeChange ← prepínanie módov fotopasce
WiFiCmd_OnExeSetPassphrase ← zmena hesla WiFi
WiFiCmd_OnExeFormat ← formátovanie SD karty
SetupExe_OnWifiStart ← štart WiFi AP
SetupExe_OnWifiStop ← zastavenie WiFi
HTTP API endpointy
Fotopasca používa Novatek SDK modul HFS (HTTP File Server). Na základe reverse engineeringu rovnakých Novatek fotopascí (DSOON, Campark) sú k dispozícii tieto HTTP endpointy:
| Endpoint | Funkcia |
|---|---|
GET /SetMode?Storage | Prepnutie do režimu úložiska |
GET /SetMode?Setup | Prepnutie do režimu nastavení |
GET /SetMode?PhotoCapture | Živý náhľad |
GET /Storage?GetDirFileInfo | Informácie o priečinkoch |
GET /Storage?GetFilePage={page}&type=Photo | Zoznam fotiek (stránkovane) |
GET /Storage?GetFileThumb={fid} | Náhľad fotky |
GET /Storage?Download={fid} | Stiahnutie plného súboru |
GET /Storage?Delete={fid} | Zmazanie súboru |
GET /Misc?PowerOff | Vypnutie WiFi |
Video stream je dostupný na porte 8221.
Bluetooth: Prebudenie fotopasce
Fotopasca väčšinu času spí kvôli šetreniu batérie. WiFi sa zapne až po BLE príkaze:
BLE protokol
| Parameter | Hodnota |
|---|---|
| Service UUID | 0000ff00-0000-1000-8000-00805f9b34fb |
| Characteristic UUID | 0000ff01-0000-1000-8000-00805f9b34fb |
| Príkaz na zapnutie WiFi | BT_KEY_ON (hex: 42545f4b65795f4f6e) |
| Príkaz na vypnutie | BT_KEY_OFF |
Vo firmware som to potvrdil nálezom:
Set_bluetooth_cmd_poweron
Set_bluetooth_cmd_poweroff
BT_Event_Handel
Postup je jednoduchý:
- Cez BLE sa pripojíte k fotopasci
- Zapíšete
BT_KEY_ONna charakteristiku0xff01 - Fotopasca klikne (reštart), spustí WiFi AP
- Pripojíte sa k WiFi a komunikujete cez HTTP
MCU komunikácia: PIR senzor a power management
Zaujímavý nález bol aj komunikačný protokol medzi hlavným procesorom a MCU (mikrokontrolérom), ktorý riadi PIR senzor a napájanie:
CMD_COM_PIRMOD1_EN ← zapnutie PIR módu 1
CMD_COM_PIRMOD1_DS ← vypnutie PIR módu 1
CMD_COM_PIRENCFG ← konfigurácia PIR
CMD_COM_PIRRESCFG ← PIR response konfigurácia
CMD_COM_SECTION1_EN ← časový úsek 1 (napr. noc)
CMD_COM_SECTION2_EN ← časový úsek 2 (napr. deň)
CMD_COM_TIMELAPS_EN ← time-lapse mód
CMD_COM_SETRTC ← nastavenie hodín
CMD_COM_GETRTC ← čítanie hodín
CMD_COM_PWRSRCCTL ← riadenie napájania (solár/batéria)
CMD_COM_RFCTRL ← zapnutie/vypnutie RF (WiFi/BT)
CMD_COM_DSPONRDY ← DSP zapnutý a pripravený
CMD_COM_SETOFFREQ ← požiadavka na vypnutie
Toto otvára možnosti pre pokročilé ovládanie fotopasce — napríklad vzdialené zapnutie/vypnutie PIR detekcie alebo zmenu time-lapse intervalu.
Vlastná PC aplikácia v Pythone
Na základe všetkých zistení som napísal PC aplikáciu na sťahovanie fotiek. Skladá sa z troch modulov:
1. BLE klient (bleak)
from bleak import BleakClient, BleakScanner
SERVICE_UUID = "0000ff00-0000-1000-8000-00805f9b34fb"
CHARACTERISTIC_UUID = "0000ff01-0000-1000-8000-00805f9b34fb"
async def wake_wifi(device):
async with BleakClient(device.address) as client:
await client.write_gatt_char(CHARACTERISTIC_UUID, b"BT_KEY_ON")
# Fotopasca sa reštartuje a spustí WiFi AP
2. HTTP API klient (requests)
import requests
class CameraAPI:
def __init__(self, ip="192.168.1.1"):
self.base_url = f"http://{ip}"
def get_file_list(self, page=1):
resp = requests.get(f"{self.base_url}/Storage?GetFilePage={page}&type=Photo")
return resp.json()
def download_file(self, fid, save_path):
resp = requests.get(f"{self.base_url}/Storage?Download={fid}", stream=True)
with open(save_path, 'wb') as f:
for chunk in resp.iter_content(8192):
f.write(chunk)
3. GUI aplikácia (tkinter)
Aplikácia s grafickým rozhraním umožňuje:
- BLE skenovanie a prebudenie fotopasce
- Pripojenie na fotopascu cez WiFi
- Prehliadanie fotiek s náhľadmi
- Hromadné sťahovanie vybraných alebo všetkých súborov
Potrebné knižnice
pip install bleak requests Pillow
Bezpečnostné postrehy
Pri analýze firmware som si všimol niekoľko vecí, ktoré stoja za zmienku:
- Heslo natvrdo vo firmware —
12345678je default a mnoho používateľov ho nikdy nezmení - Žiadne šifrovanie — HTTP komunikácia prebieha v čistom texte
- Žiadna autentifikácia — ktokoľvek pripojený k WiFi fotopasce má plný prístup k fotkám
- BLE bez párovania — príkaz
BT_KEY_ONmôže poslať ktokoľvek v dosahu - Mobilná appka loguje heslo v plaintexte — WiFi heslo sa objavuje priamo v logoch appky
V praxi to nie je veľký problém, pretože dosah WiFi je len 15–30 metrov a fotopasce bývajú v odľahlých oblastiach. Ale je dobré o tom vedieť.
Analýza logov mobilnej appky: Wachman nie je Wachman
Ďalší prekvapivý nález prišiel z analýzy logov oficiálnej mobilnej aplikácie. Porovnal som logy z dvoch rôznych fotopascí Wachman Solar Pro:
Fotopasca #1 (staršia)
[SYSV]iPhone13,3/18.4/1.1.0 25040100
[BLEC]已经获取到蓝牙版本:v1.2 2022072900
[FFEB]Wachman-00e2c4cf0398/12345678/(null)/1
[HTTP]675/RD7000_V01/REGULAR_0402_001/Nov 15 2023, 15:26:35/SJCAM
Fotopasca #2 (novšia)
[SYSV]iPhone18,2/26.2.1/1.1.3 25081200
[BLEC]已经获取到蓝牙版本:v27 250322#565#1
[FFEB]Wachman-88492d998c1a/12345678/0248/1
[HTTP]565/RD7010PRO_01/20190620/Nov 18 2025, 18:43:41/HUNTCAM
Čo prezrádzajú FW info stringy
Formát je: čip/model/variant/dátum_kompilácie/ODM_výrobca
| Parameter | Fotopasca #1 | Fotopasca #2 |
|---|---|---|
| Čip | Novatek NT96675 | Novatek NT96565 |
| Interný model | RD7000_V01 | RD7010PRO_01 |
| Build variant | REGULAR_0402_001 | 20190620 |
| Dátum kompilácie | Nov 15 2023 | Nov 18 2025 |
| ODM výrobca | SJCAM | HUNTCAM |
| BLE firmware | v1.2 (2022) | v27 (2025) |
| WiFi heslo | 12345678 | 12345678 |
Kľúčové zistenia
- Fotopasca sa predáva od minimálne dvoch rôznych ODM výrobcov (SJCAM a HUNTCAM)
- Rôzny hardvér za rovnakú cenu — zákazník dostane buď NT96675 alebo NT96565 podľa toho, kedy objedná
- RD7010PRO je novšia generácia — vyššie číslo modelu, PRO prípona, výrazne novší BLE firmware (v27 vs v1.2)
- MAC adresa v SSID — formát
Wachman-{MAC}umožňuje identifikovať každú fotopascu unikátne - Appka je univerzálna — rovnaký BLE/HTTP protokol funguje s oboma čipmi
- Heslo
12345678v plaintexte — appka ho loguje otvorene v riadku[FFEB], čo je ďalšia bezpečnostná slabina
Čínski ODM výrobcovia
│
├── SJCAM (NT96675, model RD7000)
│ ├──► "Wachman Solar Pro" (staršie kusy)
│ ├──► "Campark T180"
│ └──► ďalšie značky...
│
└── HUNTCAM (NT96565, model RD7010PRO)
├──► "Wachman Solar Pro" (novšie kusy)
└──► ďalšie značky...
Takže pod jednou značkou “Wachman” sa skrývajú dva úplne rôzne hardvéry od dvoch rôznych výrobcov. Klasický white-label biznis dotlačený do extrému.
Záver
Wachman Solar Pro nie je jeden produkt — je to obchodná značka nalepená na fotopasce od rôznych ODM výrobcov. Pod kapotou môže bežať Novatek NT96675 (SJCAM) alebo NT96565 (HUNTCAM), s eCos RTOS a rovnakým komunikačným protokolom. Komunikácia prebieha cez jednoduchý BLE handshake a HTTP API bez akéhokoľvek zabezpečenia, čo umožňuje pomerne jednoducho vytvoriť vlastný softvér na správu fotiek.
Ak máte rovnakú alebo podobnú fotopascu a chcete si overiť, či API funguje rovnako, stačí:
- Nainštalovať si PCAPDroid na Android
- Pripojiť sa k WiFi fotopasce
- Otvoriť oficiálnu appku a zachytiť HTTP komunikáciu
- Analyzovať PCAP súbor vo Wiresharku
Použité nástroje a zdroje
- NTKFWinfo — Novatek firmware analyzer
- Hacking a Bluetooth/WiFi enabled Trailcam — Hackaday projekt
- WiFi BLE Trailcam Investigation — detailná analýza protokolu
- bleak — Python BLE knižnica
- Wireshark — sieťový analyzátor