lunedì 27 aprile 2020

MotionPi e telecamere da poco


Mi hanno regalato due telecamere wifi Victure modello IP420.
Le volevo integrare nella mia installazione di MotionEye, immaginavo di avere qualche problema.
Qualche, non così tanti, però!


Per prima cosa, queste telecamere non mi piacciono.
Devi scaricare la loro app, che si appoggia ad un server cinese. Se permetti, al massimo ti appoggi al mio server.
La qualità costruttiva è quella delle telecamere home, leggerina e plasticosa, ma sulla carta dovrebbero riprodurre un flusso video di qualità. Vedremo...


Primo passo, abilitare ONVIF.


Non che MotionEye/MotionPi supportino questo protocollo, ma è l'unica scappatoia per poter assegnare un indirizzo IP alla telecamera e, con un po di fortuna, poter metter mano al flusso video.

Per chi non lo sapesse, ONVIF è un "modo" di comunicare con gli apparati di videosorveglianza e deve il suo nome all' Open Network Video Interface Forum che lo ha promosso. Lo scopo è quello di avere un solo protocollo usato da tutti i brand di videosorveglianza, in modo che tutto sia interoperabile.
Una bella e veloce spiegazione la trovate sul blog di Diego Rispoli.

Dicevamo, impostare ONVIF è cosa buona e giusta, che oltreutto si fa dall'app, dove uno può anche settare l'indirizzo IP della telecamera.
Viene anche riportato che la login è admin e la password è 123456.

La fiera dell'ovvio :-)

Ora, come diavolo faccio a far digerire una (hem, due) telecamere ONVIF a MotionEye che non supporta ONVIF?

Una delle mie fonti è stato il forum di iSpy che mi ha salvato quando ho messo mano alle mie telecamere ma ho avuto poca fortuna...

Allora ho deciso di usare un tool free che si chiama ONVIF Device Manager
Dopo averlo installato ha trovato la cam al volo, ho fatto login con le credenziali e via che ci siamo!



Il produttore è IPC365, quindi pare ovvio che Victure sia solo una ditta che fa rebranding o si fa personalizzare un prodotto, non certo lo sviluppa da zero. 
A dirle tutte, cercando a chi è assegnato il MAC Address spunta fuori che è di proprietà della Shenzhen Bilian Electronic Co.ltd

Se vuoi approfondire il discorso dei MAC address o se non sai cosa sia, ho scritto tempo fa un articolo: MAC Address ed OUI

Noto anche che il modello è diverso da quello con il quale viene commercializzato, le vendono con il nome/modello IP420 mentre qui sono riportate come delle 81XXF.

Viene riportato poi l'IP, il MAC, la versione ONVIF e l'URI.
L'URI di per se sarebbe bastevole per poter gestire il tutto con ONVIF, ma qui il gioco è leggermente diverso.

Se vuoi dei dettagli sull'URI, trovi tutto nell'ONVIF Streaming Specification



Passando nella sezione "Time" possiamo settare la corretta zona oppure scegliere se andare "bussare" alla porta di un time server. Ovviamente, io prediligo questa opzione!
Peccato che qualunque scelta si faccia non cambia assolutamente nulla... Molto bene...

Nella scheda Maintenance non c'è nulla di che, se non la possibilità di fare un soft (oppure un hard) reset, vedere la versione del firmware ed eventualmente aggiornarla oppure fare un reboot.




Qui si inizia a giocare con le cose che servono!
Inidizzo IP statico o dinamico, subnet, gateway (che di default è errato, ma vebbè), hostname, tutto quello che si vuole!
Però è solo una mera illusione, non si possono cambiare i parametri, ogni modifica che si fa porta ad un errore. Molto bene...

Tutte le altre voci sono piuttosto inutili per i nostri scopi, andiamo oltre.

Le cose utili per agganciare queste telecamere Victure modello IP420 sono nel riquadro in basso, vediamo!


Lo stream video ONVIF

Nello specifico le coordinate sono queste :

rtsp://192.168.1.86:554/realmonitor?channel=0&stream=0.sdp

Almeno, per l'indirizzo ip 192.168.1.86 .
Altra cosa interessante è la sezione "Video Streaming" dove si possono settare :
  • codec e risoluzione
  • intervallo di encoding
  • qualità
  • framerate
  • eventuali limiti di bitrate
  • lunghezza GOV personalizzata


Se non avete idea di cosa sia il GOV, fa parte della codifica H264, una bella ed approfondita spiegazione la trovate sul sito della Salient Systems.

Dopo aver giocato un pochino con il tutto, ho ripreso in mano lo scopo di questo articolo, ovvero aggiungere le telecamere Victure modello IP420 a MotionEye (che in questo caso è MotionPi) :



Solo che, ovviamente, nulla viene rilevato.
Ho provato prima di tutto così :
rtsp://192.168.1.86:554/realmonitor

Poi così :
rtsp://192.168.1.86:554/stream=0.sdp

E per ultimo così:
rtsp://192.168.1.86:554/

Nulla da fare.
Al che mi sono dedicato all'encoding della password, memore del discorso di iSpy fatto anni fa richiedeva la password codificata in base64.
La password di default abbiamo detto che è 123456 , che codificata in base64 diventa MTIzNDU2 . Purtroppo ottengo sempre il messaggio "Unable to open video device".

Ok, rivediamo il tutto che qualcosa non mi torna.
L'encoding è H264 ma la porta è la 554. Questa porta dovrebbe essere dedicata all'mpeg4 mentre l'H264 dovrebbe rispondere alla porta 8557.

Facciamo due esperimenti con VLC, a questo punto è la cosa più veloce...
Un semplice Media-Apri flusso di rete ed ho inserito questo :
rtsp://192.168.1.86:554/

Login admin, password 123456 e lo stream è bello e servito :



Ma porco cane...
Ok, riproviamo mettendo :

rtsp://192.168.1.86:554/
login admin
password 123456
tipo di comunicazione UDP

Vittoria!




Ora, magari sono scemo io, ma ho sempre saputo che RTSP veniva trasportato come flusso TCP. Una rapida occhiata alla Wiki di Wireshark me lo conferma. Anzi, ecco cosa scrivono in merito :

RTSP can also use UDP as its transport protocol (is this ever done?)

Si, effettivamente qualcuno lo ha fatto...


Altre porte aperte?

Solo che non sono ancora contento, voglio vedere quali sono le porte aperte di questa telecamera e vedere se offre qualche altro servizio utile.
Ho quindi aperto il mio adorato Advanced Port Scanner ed ho dato un'occhiatina in giro...

Non risulta esposto nessun servizio, ma sappiamo di per certo che la porta 554 è aperta. Ok, proviamo un altro software, magari Fing :




Bene, oltre alla già nota 554 è aperta anche la 8080, quella dell'URI ONVIF. 
Ovviamente provando a collegarsi con un browser viene restituito un errore, ma se si si usa un dispositivo ONVIF (tipo un NVR) questa è la porta che fa per voi!



Un minimo di sicurezza

Gli ultimi due passaggi sono ugualmente importanti...
Il primo è fare una bella regola di firewall sul mio ruter Mikrotik

/ip firewall filter
add chain=forward src-mac-address=7C:A7:B0:9E:B6:A5 action=drop
add chain=forward src-mac-address=7C:A7:B0:9E:A9:1A action=drop

In questo modo, tutte le richieste di andare verso l'esterno della LAN che provengono dai due indirizzi MAC delle telecamere, sono negate.

Secondo step, levare l'app dal cellulare!
Meno male che uso un vecchio cellulare, solo con connettività wifi ed un account Google fatto apposta...



Beh, dopo un pochino di test ci sono arrivato, ora le telecamere Victure modello IP420 sono integrate con MotionEye/MotionPi :-)

Però, accidenti, mica poco come sbattimento!




Link usati nel testo :


Telecamere : Victure modello IP420
Onvif - Wikipedia
ONVIF Streaming Specification
Codifica H264 - Salient Systems
Codifica base64
Wiki di Wireshark su RTSP

Miei articoli citati :

Ncc200 e iSpy: il setup spiegato
Passare a Mikrotik? Si!
MAC Address ed OUI


Software utilizzato :


Advanced Port Scanner
Fing Network Tool
ONVIF Device Manager

5 commenti:

  1. Ho individuato il flusso rtsp ma purtroppo non riesco a visualizzare lo stream... continua ad apparire no signal. La telecamera in questione é una piccola arenti, compatibile con onvif... cosa posso fare?

    RispondiElimina
  2. Ciao Emanuele, ti lascio qui sotto una checklist di cosa farei io, spero ti possa tornare utile!
    Hai provato a vedere se con ONVIF Decive Manager (citato nell'articolo) le trovi?
    Lo stream RTSP lo vedi da ONVIF Device Manager?
    Se apri lo stream RTSP su VLC vedi qualcosa?
    Hai provato sia con TCP che con UDP?
    Hai fatto una scansione con Fing per vedere che porte sono aperte?
    Spero che una di queste cose ti possa mettere nella giusta direzione per risolvere il problema!

    RispondiElimina

Sei davvero sicuro di voler sprecare tempo prezioso per scrivere qualcosa? Non è che preferisci andare su Google?

Cerca nel blog

I post più letti di sempre