3 points par GN⁺ 2023-07-03 | 1 commentaires | Partager sur WhatsApp
  • Journal des opérations et collection d’outils pour transformer la D-Link DCS-8000LH en caméra IP gérée localement, sans l’enregistrer dans l’application mydlink ni dans le service cloud
  • Le firmware d’origine 2.01.03 est lié à l’application mydlink et au service cloud, et ne fournit pas d’API HTTP locale compatible NIPCA ni de streaming vidéo HTTP, HTTPS ou RTSP
  • Les principales fonctionnalités obtenues sont la configuration du réseau et du mot de passe administrateur via Bluetooth LE, le streaming direct MPEG-TS en HTTP/HTTPS, le streaming direct RTSP, ainsi qu’une configuration d’API NIPCA prenant en charge des réglages comme la LED et le nightmode
  • Le script dcs8000lh-configure.py inclus utilise le PIN Code figurant sur l’étiquette de la caméra et l’adresse MAC Bluetooth pour effectuer la recherche WiFi, configurer le WiFi, afficher les informations réseau, dumper les informations système, exécuter des commandes sur la caméra, activer telnetd, lighttpd et RTSP, et autoriser les firmwares non signés
  • La modification complète nécessite de modifier un des systèmes de fichiers à l’intérieur de la caméra, avec un risque de la rendre inutilisable en cas d’erreur
  • Les versions testées et ciblées pour le développement sont les firmwares v2.01.03 et v2.02.02, et la procédure finale complète n’a été testée que sur v2.02.02
  • L’environnement requis est un PC Linux avec contrôleur Bluetooth, Python 3, bluepy, un WiFi WPA2-PSK avec son mot de passe, mksquashfs de squashfs-tools, ainsi qu’un serveur tftp pour les sauvegardes ou un serveur web acceptant les uploads de fichiers
  • Après modification, le streaming HTTP/HTTPS est accessible via https://IPCaméra/video/mpegts.cgi ou https://IPCaméra/video/flv.cgi, avec une authentification utilisant l’utilisateur admin et le mot de passe PIN Code de la caméra
  • Si seul RTSP est nécessaire, il est possible d’activer un accès RTSP permanent sur le firmware D-Link d’origine, sans modifier le firmware, via l’option Bluetooth --rtsp
  • La partition userdata est utilisée par les outils cloud mydlink, et l’exemple de mise à jour du firmware ne remplace que cette partition, en conservant tels quels le kernel et le rootfs de l’OS de la caméra D-Link
  • Une sauvegarde est nécessaire avant toute modification ; la partition pib contient des données propres à cette caméra, comme le numéro de modèle, la révision matérielle, l’adresse MAC, les bits de fonctionnalités, la clé privée, le PIN Code et le mot de passe
  • Le serveur web local ne fournit pas d’interface graphique web, mais une API directe de gestion de la caméra nécessitant une authentification ; l’API NIPCA permet de contrôler la plupart des réglages de la caméra depuis des outils en ligne de commande comme curl

1 commentaires

 
GN⁺ 2023-07-03
Commentaires Hacker News
  • On peut faire une configuration similaire avec presque n’importe quelle caméra IP ou même une caméra USB, avec une latence plus faible et à la meilleure qualité prise en charge par la caméra
    Si ça intéresse du monde, je peux faire un rapide récapitulatif de ce type de configuration, ou en faire un dépôt avec les fichiers de configuration nécessaires

    • J’aimerais faire la même chose avec des prises connectées
      Je n’arrive pas à trouver de prise connectée grand public qui ne doive pas se connecter au cloud pour être contrôlée de n’importe où. Je ne veux pas les contrôler de n’importe où, je veux juste les contrôler sur mon propre LAN
      Édit : du moins, je n’en ai pas trouvé sur amazon.in
      https://www.amazon.in/s?k=smart+plugs
    • J’aimerais demander conseil
      On m’a offert une caméra IP chinoise sans marque, introuvable même en recherche, et je l’utilise comme caméra de sécurité extérieure. La caméra enregistre en continu sur carte SD, et je n’utilise pas l’option cloud payante. Je peux voir le flux en direct à distance via l’app KP WIFICAM
      Je peux aussi consulter ou télécharger depuis le menu les enregistrements des derniers jours stockés sur la carte SD, mais ils sont découpés en segments de 10 minutes, donc même pour récupérer une seule journée il faut télécharger manuellement près de 100 fichiers
      Comment automatiser ou simplifier le téléchargement de ces clips depuis la carte SD vers mon laptop ? Comment l’app mobile récupère-t-elle la liste des enregistrements et télécharge-t-elle les fichiers ?
      J’ai lancé Agent-DVR et il a trouvé le flux de la caméra au format ONVIF. J’imagine donc que l’app mobile utilise aussi ce protocole, comme ici https://stackoverflow.com/questions/29159422/get-data-from-l..., mais existe-t-il un outil utilisable sous Linux pour ça, sans devoir passer plusieurs jours à installer un environnement de développement et écrire moi-même du code ?
    • Dire « presque toutes les caméras IP », ça me semble quand même très variable selon le fabricant ou le matériel
    • On pourrait sans doute vendre une application de gestion permettant d’administrer plusieurs caméras depuis un PC avec accès distant via une app mobile
      Mon épouse utilise déjà 4 applis différentes, une par caméra, et chacune a des problèmes absurdes, les cartes SD sont bien trop petites, et les frais de stockage cloud, mal signalés avant l’achat, sont délirants
      On pourrait en racheter, mais en prenant des produits bon marché on risque simplement de refaire pour la 4e fois la même erreur
      Même si le logiciel coûtait 6 fois plus cher que les caméras, ça vaudrait largement le coup
      J’aimerais aussi un service où quelqu’un dans un pays à bas salaires surveille un mur d’écrans de caméras et passe de l’une à l’autre. C’est exactement le service que les sociétés de sécurité occidentales facturent des milliers de dollars par mois, ce qui relève presque du racket
  • C’est extrêmement frustrant qu’il n’existe aucun produit grand public pour un appareil aussi important qu’une caméra IP qui puisse s’utiliser en local sans le cloud du fabricant
    Je sais qu’on peut bricoler quelque chose avec un Raspberry Pi, mais je veux aussi les fonctions pratiques des produits grand public, comme le contrôle moteur et de bonnes alertes de détection de mouvement
    Pour un produit qui offre tout ça sans devoir tout développer soi-même, je paierais volontiers 2 à 3 fois le prix des produits grand public actuels

    • Il existe pas mal de caméras PoE qu’on peut utiliser et contrôler en local, sans cloud
      De mon côté, j’utilise Synology Surveillance Station sur un NAS local et je contrôle des caméras ReoLink. Elles peuvent pivoter et disposent de détection de mouvement
      Il existe aussi des usages plus avancés avec des caméras IP locales. Hier, j’ai acheté le NVR « deep learning » de Synology, qui prend en charge sur des caméras Domar locales la détection de personnes, la reconnaissance faciale, la reconnaissance de plaques d’immatriculation, en plus des fonctions standard de zoom, pan et tilt
    • Il y a vraiment beaucoup d’options. Si tu trouves une caméra prenant en charge ONVIF, elle supportera un protocole au moins partiellement standardisé pour la découverte et le contrôle
      Toutes mes caméras sont des modèles bon marché d’Aliexpress, je ne les ai jamais laissées se connecter à Internet et je n’ai installé aucune app douteuse du fabricant. Je mets seulement l’équipement qui fait tourner Blue Iris sur le même VLAN pour gérer tout ce qui concerne les caméras
      Ça prend en charge le PTZ, une détection de mouvement très fine, les alertes et même les déclencheurs d’exécution d’apps externes, donc on peut l’intégrer comme on veut
      Au total, le coût est d’environ 30 dollars par caméra PoE IP basique, et Blue Iris coûte environ 80 dollars
    • Les produits Apple HomeKit semblent pour la plupart pouvoir être utilisés de cette manière
    • Fil connexe d’il y a quelques jours : https://news.ycombinator.com/item?id=36447024
    • Il existe beaucoup de solutions génériques IP KVM/DVR uniquement locales ou avec cloud optionnel
      C’est juste qu’elles ne sont pas vraiment mises en avant dans les canaux de vente grand public
  • Je recommande ça à ceux qui n’aiment pas le cloud ou qui veulent, pour de bonnes raisons, une architecture à deux niveaux
    Je l’utilise depuis 2 ans avec plusieurs Wyze Cam V2, et à part une sensibilité en basse lumière moins bonne que la V3, c’est une configuration plutôt solide et rapide, sans problème particulier
    https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks

    • Les Wyze V2 avec Dafang-hacks étaient autrefois très stables, mais elles ne sont plus fabriquées, et rien ne prouve clairement que ça fonctionne bien sur la V3
      Je cherche depuis un moment une caméra bon marché à 20~30 dollars pouvant servir de configuration fiable comme Dafang-hacks, mais je n’ai toujours pas trouvé d’alternative satisfaisante
    • Qu’utilises-tu pour l’enregistrement ?
      J’ai envisagé de remplacer les caméras cloud, mais j’ai quand même besoin d’enregistrement, d’alertes et de stockage hors site
      Quelle est aujourd’hui la meilleure configuration pour ce genre de montage ? Faire tourner Zoneminder chez soi et utiliser Syncthing pour le stockage hors site sur un VPS ?
  • Ce tutoriel est incroyablement complet
    Le temps que Bjorn a dû consacrer à développer cette méthode et à la documenter avec autant de soin est impressionnant

  • Je comprends que ce soit sympa et dans l’esprit hacker, mais vu la gravité du cas d’usage, je ne peux que me demander : « pourquoi ? »
    Pourquoi vouloir compter sur le piratage du firmware d’une caméra D-Link médiocre comme unique moyen d’empêcher un cambrioleur de voler des objets ? Pour quelques centaines de dollars, on peut acheter de vraies caméras IP chez Amcrest, Dahua ou TP-Link, les brancher en PoE et avoir au moins une chance d’identifier qui a volé quoi
    Si l’on ne place pas des caméras de haute qualité aux bons endroits, on finit juste avec une photo floue d’un vol en cours. C’est mon expérience

    • À moins que les caméras Nest aient appris le ninjutsu, elles n’empêcheront pas un cambrioleur de voler quoi que ce soit
      Les caméras servent à surveiller un espace et, dans le meilleur des cas, à enregistrer quelqu’un en train de faire quelque chose de répréhensible avec assez de détails pour que cela puisse être utilisé au tribunal. Si la qualité est suffisante et que l’incident a bien été enregistré, il n’y a pas de grande différence fonctionnelle entre une D-Link piratée et une caméra Nest
    • Vous connaissez de bons modèles de caméras Amcrest qui fonctionnent bien avec Zoneminder ou Frigate ?
  • D-Link est aussi en train de mettre fin au service de plusieurs caméras, ce qui signifie couper les services cloud, rendre les caméras inutilisables et pousser à acheter du nouveau matériel
    J’essaie de pirater une DCS-5030L. J’ai déjà dumpé le firmware de l’EPROM SPI et j’ai désassemblé u-boot avec Ghidra pour tenter de patcher le secure boot

  • Sur la photo, l’ID est partiellement noirci, mais le code-barres en dessous ne l’est pas
    Je ne sais pas si ces valeurs sont juste une forme encodée, mais il faut en tenir compte

    • On dirait bien que c’est une version encodée, mais même en faisant une capture d’écran et en la partageant avec Binary Eye, je n’ai pas réussi à la scanner
      [1] https://github.com/markusfisch/BinaryEye
    • Je ne veux pas paraître impoli, mais tu as regardé l’image ? Ces codes QR sont clairement floutés par un overlay circulaire qui fait qu’ils ne ressemblent plus à des QR codes
  • Pour un accès purement local via le réseau, je prends des caméras réseau compatibles ONVIF et je les connecte à Netcam Studio
    https://www.netcamstudio.com/
    Ensuite, on bloque l’accès réseau sortant à l’IP de la caméra pour l’empêcher de contacter les serveurs du fabricant

    • Netcam Studio ne prend pas Linux en charge et, plus important encore, c’est du code source fermé, donc il faudrait aussi bloquer les accès sortants de ce programme
  • J’utilise simplement une caméra USB classique et ustreamer pour diffuser du MJPEG en HTTP
    Ça marche étonnamment bien, mais il faut tout implémenter soi-même pour le traitement et le stockage. Au final, on n’obtient qu’une URL de capture d’écran et une URL de flux

  • J’aime bien cette idée
    Toutes mes caméras IP envoient les fichiers par FTP vers mon serveur, qui les téléverse immédiatement sur Google Drive. Ça fonctionne parfaitement et ce n’est pas cher, mais ça reste des caméras chinoises connectées à Internet
    Existe-t-il une liste de caméras convertibles de cette manière ?

    • J’ai écrit moi-même un démon proxy FTP→GDrive pour un scanner
      À l’origine, je voulais du USB→GDrive, mais j’ai découvert que le scanner Brother ne permettait pas de remplacer les paramètres de numérisation depuis l’écran en USB, alors qu’il le permet en FTP
      Qu’est-ce que tu utilises pour ce transfert ?
    • J’ai une idée, mais il y a un peu de travail
      Créer un réseau séparé dédié aux caméras, par exemple avec un routeur Wi‑Fi distinct
      Trouver l’IP du serveur auquel la caméra envoie la vidéo
      Connecter un PC ou un Raspberry Pi au port WAN de ce routeur Wi‑Fi dédié aux caméras
      Assigner à ce PC ou Raspberry Pi toutes les IP des serveurs de caméra trouvées précédemment
      Ainsi, on devrait pouvoir recevoir tout le trafic allant de la caméra vers le serveur, puis en faire ce qu’on veut
    • Les caméras Xiaomi et la plupart des produits en marque blanche fonctionnent généralement
      J’utilise un firmware custom sideloadé sur une caméra Yi comme caméra Wi‑Fi fiable. Le VLAN correspondant n’a absolument aucun accès à Internet
    • Tu pourrais détailler un peu plus la configuration ?
      J’essaie de faire quelque chose comme ça depuis un bon moment. Tout ce que je trouve n’a pas de support FTP/SFTP et cherche plutôt à envoyer des photos par LTE vers une adresse e-mail
      L’objectif est simplement une caméra météo. Il suffit d’envoyer une image par minute. Quelque chose d’aussi simple qu’une vieille webcam des années 2000
      Avec un rPi3 et une caméra Logitech, je me suis heurté à des problèmes que je n’ai pas su résoudre, et j’en suis arrivé à la frustration puis presque à abandonner