mirror of
https://github.com/ZoneMinder/zoneminder.git
synced 2026-11-05 12:12:58 -05:00
These identify themselves as Manufacturer "NONE", Model "IPCamera" over ONVIF; the real name is in the ONVIF scope (name/L5TW), in the vendor api's /system/device-info, and in the 2C:6F:51 OUI. PTZ, presets and imaging are inherited from the ONVIF module, which the camera implements well - absolute, relative and continuous move, 256 presets, brightness through sharpness, and motion and tamper events. What ONVIF does not expose is the white supplement floodlight the deterrence feature uses. GetRelayOutputs and the PTZ auxiliary Wiper command are both accepted by the camera and both do nothing measurable. The light lives in the vendor REST api at /api/image/image-param, as dayNightMode.ledMode, switched between Warm Light and IR Light. Reaching that api needs its login handshake: sha256 over username+salt+base64(timestamp)+password, rehashed over the raw digest bytes with the challenge appended, optionally iterated, with the session cookie returned in the response body rather than a Set-Cookie header. The rounds are pure functions so the captured exchange is replayed by a test; the raw-bytes versus hex-text distinction in particular produces an equally plausible digest when wrong, so it is pinned rather than trusted. The section write echoes every field back, since a partial write makes the camera drop what it was not sent. Note the supplement light only engages while the camera is in night mode, so setting it during the day reads back correctly but produces no light. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UvTCzCbvGt8xKQRNCSA7o8