Lokale IP-Kamera abrufen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von PlatinSecurity.

    Lokale IP-Kamera abrufen

    Hallo zusammen,

    ich habe an meinem Haus einige Kameras hängen, die ich mit einer Software namens ContaCam abrufe.
    Nun habe ich mir die Frage gestellt, ob man so ein Programm selber machen kann.
    Gesagt getan... An sich würde es funktionieren was ich da gezaubert hab, allerdings bekomme ich immer ein Fehler bei

    VB.NET-Quellcode

    1. Dim res As HttpWebResponse = req.GetResponse

    und der lautet
    System.Net.WebException: "Der Remoteserver hat einen Fehler zurückgegeben: (401) Nicht autorisiert."

    Nun hatte ich es mal mit
    "http://username:pw@ip/snapshot.cgi?nocache=" & imgNr

    versucht und das ergibt ebenfalls kein erfolg.

    Daraufhin habe ich es noch einmal mit einem "NetworkCredential("username", "pw")"
    versucht. Auch kein erfolg. Hat da jemand ne Idee wie ich auf die Snapshots der Kamera zugreifen kann?

    Die "imgNr" für den "nocache" wird mit einem Timer immer um +1 erhöht.

    EDIT: Das der nocache um +1 erhöht wird per Timer, habe ich entfernt und dafür den BackgroundWorker genutzt.
    So verhinder ich natürlich das Ruckeln im Programm. Nur ist immer noch das Problem das Auth.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „PlatinSecurity“ ()

    @PlatinSecurity Wie verbindest Du Dich denn mit der Kamera? IP, Port und ggf. Passwort?
    Was sagt das Handbuch dazu?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wenn ich über den Browser die IP eines meiner Kameras eingebe, dann öffnet sich eine Web Oberfläche wo ich
    Benutzername und Passwort angeben muss. Daraufhin zeigt er mir die Einstellungen der Kamera und auch die Ansicht.

    Über ContaCam verbinde ich mit den Informationen:
    - IP = Jeweils die IP der Kamera
    - Port = 80 (RTSP: 554, 10554, 8554, 8080, 88, 80 | HTTP: 80, 88)
    - Hersteller & Protokoll = Generisch (HTTP motion jpeg)
    - Anmeldedaten = Benutzer & Passwort
    - Als RTSP-Transport versuchen zuerst TCP dann UDP (ist ausgewählt)

    Und dort geht's ohne Probleme.

    PlatinSecurity schrieb:

    dann öffnet sich eine Web Oberfläche wo ich
    Benutzername und Passwort angeben muss.
    Dann musst du vermutlich einen Http POST Request absetzen zum Einloggen.
    Nimm ein Http Trace Tool und schau dir an, was der Browser schickt.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Hey,

    also ich hab mal Tracen lassen und dabei kommt folgendes rum:
    1.)
    GET [http://]user:pw@ip_cam1/check_user.cgi
    Accept: text/plain, */*; q=0.01
    DNT: 1
    X-Requested-With: XMLHttpRequest
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36

    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Content-Type: text/javascript
    Content-Length: 73
    Server: mcdhttpd/1.2
    Connection: keep-alive

    2.)
    Einige GET's mit style und js Dateien etc.

    3.)
    GET [http://]user:pw@ip_cam1/get_status.cgi
    Accept: text/plain, */*; q=0.01
    DNT: 1
    X-Requested-With: XMLHttpRequest
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36

    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Content-Type: text/javascript
    Content-Length: 407
    Server: mcdhttpd/1.2
    Connection: keep-alive

    4.)
    Eine js und ein gif werden mit GET abgefragt

    5.)
    Die ersten Kamera snapshots werden mit "nocache=xxxxxxxx" geladen mit GET

    6.)
    Noch einmal das wie bei Punkt 3

    7.)
    Nur noch snapshots der Kamera als Aktualisierung

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „PlatinSecurity“ ()

    PlatinSecurity schrieb:

    Wenn ich über den Browser die IP eines meiner Kameras eingebe, dann öffnet sich eine Web Oberfläche wo ich
    Benutzername und Passwort angeben muss

    Das hast du aber nicht im Trace.

    PlatinSecurity schrieb:

    GET [http://]user:pw@ip_cam1/check_user.cgi

    Hier rufst du die Webseite mit username und password auf,
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Ne. Wenn ich nur die IP eingebe kommen einige JS Dateien und das wars.
    Dann melde ich mich auf der Oberfläche an und dann entsteht das
    ​GET [http://]user:pw@ip_cam1/check_user.cgi
    Hatte das selbe Problem mal, versuchs mal über den CredentailCache
    (Übersetzen in VB dürfte ja kein Problem sein, meins ist nur etwas naja eingerostet ;))

    C#-Quellcode

    1. var myCredentialCache = new CredentialCache ();
    2. myCredentialCache.Add (uri, "Basic", credentail);
    3. request.PreAuthenticate = true;
    4. request.Credentials = myCredentialCache;


    docs.microsoft.com/de-de/dotne…che?view=netframework-4.8

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ManuelSoftware“ ()

    Kannst du diesen Vorgang mal tracen?

    Jup:

    und
    Ist die Anmeldemaske tatsächlich auf der Webseite oder ist das ein Windows-Popup?

    Siehe Bilder.

    EDIT: Die IP 24 & 31 sind Identische Oberflächen bei der 24 bin ich gerade nur dabei das PW zurück zu setzen.
    Daher auch hier nach dem Login die 31 ;) :'D

    petaod schrieb:


    Ich könnte einen Besen fressen, wenn da nicht ein POST-Request über die Leitung geht.

    Wie hättest du dein Besen ?
    Mit Senf oder Ketchup ? xD
    Ohne mist... Ich hab jetzt HttpWatch genutzt... Alles nur GET... Bilder, Styles, Scripts und das Absenden lief anscheinend auch per GET

    Ich geb es einfach auf... irgendwie hatte ich mir das einfacher vorgestellt.
    War sogar schon soweit und hab nach VLCPlayerPlugin gesucht. Das lässt sich aber irgendwie nicht einbinden.
    Naja. ^^

    petaod schrieb:

    Ist die kryptische URL konstant oder verbirgt sich darin eine SessionId?
    Falls ja, ab welchem Moment taucht sie auf?


    Also ich kann die leider nicht Entschlüsseln.
    Die Taucht je nach Veränderung der Seite auf und das ist dann, wenn neue Bilder der Kamera geladen werden.
    Und das ist ja jede Sekunde. Bei der Login URL war nichts weiter zu sehen.
    Das einzige was bekannt war, war das Typische:
    ​[http://]user:pw@ip_cam1/