尋找PYTHON可以連接IPCAM的方法 – Coding學習筆記 20221228

又是一個流水帳式的學習筆記,本次嘗試用Python連線IPCAM,讀取IPCAM的實時畫面

使用的IPCAM是2018年介紹過的VSTARCAM.

需找是否有公開串流

據我所知可以連線NVR錄影的IPCAM都要有ONVIF協議,我未知到VSTARCAM這款是否有,

ONVIF協議是包括設定大部分的IPCAM設定,就像一個IPCAM的萬能遙控器協議

我使用Onvif Device Manager這個軟件,確實找到了Vstarcam

在尋找帳號和密碼花了些時間,發現VSTARCAM的登入用戶帳號是admin (不可更改,風險漏洞),默認密碼888888在首次手機APP登錄後會提醒更改

輸入帳號密碼後,Onvif Device Manager 就登錄到IPCAM的後臺,可以看到絕大部分的設定,包括實時串流:

在視頻下方有rstp的串流網址,就果斷copy起來:

拿到VLC驗證,確實可以播放,聲音也沒有問題。

 

20230105更新:

手機上有Onvier這個App,比起Onvif Device Manager更加便捷:

 

Python OpenCV串接

網上一搜Python IPCAM有很多結果,我也是拿來主義,將rstp link更換成上面copy好的,以爲馬上就能用,但是怎麼弄也報錯

(-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

 

在STACKOVERFLOW上看了很多帖子,什麼ffmpeg環境,threading,cv2.resize,全部試過了,還是發現沒有解決沒有size的問題

決定再找找是否URL有問題

透過Onvif Device Manager找到IPCAM的http端口,估計是登錄到網頁界面,

果然沒錯,登入後看到實時影像,右鍵在新窗口打開圖像,發現了一個新的串流url,是http

竟然把賬戶密碼明文用http模式傳輸,一抓包就赤裸裸了

http://192.168.1.95:24394/videostream.cgi?user=admin&pwd=xxxxxx

但是這個URL放到python,就能完美串接,獲得實時圖像

但是這個URL又有一個問題,就是VSTARCAM的HTTP端口是每次開機都隨機的,如果要獲得他的HTTP端口,可能要利用ONVIF先去抓取他,再UPDATE URL才能實現每次自動化捉取。

 

Further Study

  • 安全性風險:Onvif的Replay Attack? Onvif和rtsp的Brutal Force Attack? VSTARCAM手機APP和伺服器有否設計漏洞?
  • Python + OpenCV的運算壓力、加載AI的可行性?
  • 存取SD卡的方法、雲端上傳的方法?

 

 

歡迎你的留言討論:

你可以一針見血

by Upsangel
Logo