La caméra Imou enregistre en continu sur la carte microSD insérée dans l'appareil. C'est très pratique jusqu'à ce que vous ayez besoin de récupérer plusieurs semaines de vidéo : l'application ne permet d'enregistrer que des segments un par un, en appuyant une fois à chaque fois, et le téléchargement passe par le serveur de la marque, ce qui ralentit considérablement la vitesse de transfert. Quant au retrait de la carte mémoire, la caméra est souvent placée à un endroit difficile d’accès.
Cet article explique comment utiliser Imou LAN Exporter, un outil en ligne de commande qui se connecte directement à la caméra sur le réseau local, télécharge en masse les enregistrements, puis les regroupe en un fichier .mp4 classique. Pas besoin d’ouvrir l’application, pas besoin de retirer la carte mémoire, pas besoin de passer par Internet.
Pourquoi le fonctionnement du réseau LAN est-il différent ?
Les caméras Imou (ainsi que Dahua, car Imou est la branche grand public de Dahua) ouvrent par défaut un protocole propriétaire sur le port 8086, similaire au RTSP. C'est précisément l'application du fabricant qui utilise cette connexion lorsque le téléphone et la caméra se trouvent sur le même réseau. Ce canal transmet les enregistrements plus rapidement que le temps réel, et aucun intermédiaire ne vient limiter le débit.

Inconvénient : les données vidéo et audio de ce flux sont cryptées à l'aide d'une clé dérivée du numéro de série de l'appareil. L'outil de restauration utilise précisément cette clé dérivée ; il vous demande donc de lui fournir le numéro de série — la seule information qui ne peut être lue à distance.
Préparation
- Python 3.8 ou version ultérieure
- Bibliothèque
cryptography ffmpegdisponible surPATH- Un ordinateur situé sur le même réseau LAN que la caméra (ou disposant d'une connexion vers celui-ci, par exemple via un VPN)
- Numéro de série et mot de passe de chaque caméra
git clone https://github.com/Crust92/Imou-LAN-Exporter.git
cd Imou-LAN-Exporter
pip install cryptography
# ffmpeg, tuỳ hệ điều hành:
sudo dnf install ffmpeg # Fedora
sudo apt install ffmpeg # Debian / Ubuntu
brew install ffmpeg # macOS
winget install Gyan.FFmpeg # WindowsOù trouver le numéro de série ?
Le numéro de série se présente sous la forme 25144ADPSF26C76, imprimé sur l'autocollant situé sur le boîtier de l'appareil, sur l'emballage et dans le code QR permettant d'ajouter l'appareil à l'application. Si vous avez déjà téléchargé une vidéo via l'application Imou, le numéro de série figure dans le nom du fichier, entre deux traits de soulignement : <thời gian>_<SÊ-RI>_….mp4.
Étape 1 — Recherche des caméras sur le réseau
python3 imou_lan_exporter.py scan
# hoặc chỉ định dải mạng nếu máy có nhiều card mạng:
python3 imou_lan_exporter.py scan --subnet 192.168.1.0/24Outil permettant de scanner tous les ports du 8086 et d'afficher les machines qui répondent, accompagnées de la chaîne realm que la caméra utilise pour lancer la demande d'authentification :
Scanning 192.168.1.0/24 ...
192.168.1.5 realm=Login to 819D10EB5D1C0F8A
192.168.1.6 realm=Login to 98188148059E78C6
192.168.1.7 realm=Login to 6FE33416D8D69FF5Remarque concernant la chaîne de caractères realm n'est pas le numéro de série — il s'agit d'un autre code d'identification. C'est précisément pour cette raison que vous devez toujours saisir vous-même le numéro de série.
Étape 2 — Premier démarrage, répondez à quelques questions
Lors de la première exécution, le programme d'installation se lancera. Il analysera automatiquement le réseau, déterminera les éléments nécessaires, puis les enregistrera ~/.imou_lan_exporter.json pour les utilisations suivantes.
python3 imou_lan_exporter.py run 2026-06-01 2026-08-24============================================================
Imou LAN Exporter — setup wizard
============================================================
Scanning 192.168.1.0/24 for cameras on port 8086 ...
Found 3 camera(s):
192.168.1.5 (realm: Login to 819D10EB5D1C0F8A)
192.168.1.6 (realm: Login to 98188148059E78C6)
192.168.1.7 (realm: Login to 6FE33416D8D69FF5)
--- Credentials ---
These CANNOT be read over the network, so you must provide them.
Username [admin]:
Do all cameras share the same password? [Y/n]: y
Password: ********
--- Camera serials ---
Camera 192.168.1.5:
serial: 25144ADPSF7C4B7
verifying key ... OK ✓À noter verifying key à noter : cet outil télécharge un court extrait de vidéo, le décode, puis vérifie si le résultat commence par une trame H.264 valide. Vous savez ainsi immédiatement si la série et le mot de passe sont corrects, au lieu de passer un mois à télécharger pour finalement vous rendre compte que tous les fichiers sont corrompus. Trois possibilités :
OK ✓— mot de passe correct.WRONG serial/password ✗— les données ont été récupérées, mais elles sont erronées, c’est-à-dire que le numéro de série ou le mot de passe est incorrect.could not test— La caméra ne contient aucun enregistrement datant des 40 derniers jours permettant de vérifier, il est donc impossible de tirer une conclusion pour l'instant.
Pourquoi faut-il à la fois le numéro de série et le mot de passe ?

La clé est générée en deux étapes. La première étape consiste à calculer la fonction MD5 de la chaîne admin:Login to <SÊ-RI>:<MẬT KHẨU>, ce qui donne une chaîne de 32 caractères en majuscules — conformément au format HA1 habituelle de l'authentification HTTP Digest. La deuxième étape consiste à passer cette chaîne par PBKDF2-HMAC-SHA256 avec, comme sel, le numéro de série et 20 000 itérations, ce qui donne une clé de 32 octets.
Comme cette série fait à la fois partie de la chaîne de hachage et sert de sel, il est impossible de générer une clé sans elle. Et comme elle n'apparaît sur aucun port réseau, il est impossible de la deviner à distance. C'est un choix de conception judicieux de la part de l'éditeur : les pirates n'ont ainsi aucune piste à suivre.
Étape 3 — Téléchargement groupé
À partir de la deuxième fois, il suffit d'indiquer une fourchette de dates :
# cả một khoảng
python3 imou_lan_exporter.py run 2026-06-01 2026-08-24
# từ ngày đó tới hôm nay
python3 imou_lan_exporter.py run 2026-08-01
# chỉ một camera
python3 imou_lan_exporter.py run 2026-08-01 --cam 192.168.1.6
# mở nhiều luồng hơn cho mạng khoẻ
python3 imou_lan_exporter.py run 2026-08-01 --parallel 12
# chạy lại trình cài đặt (đổi mật khẩu, thêm camera)
python3 imou_lan_exporter.py run 2026-08-01 --setupPendant l'exécution, à la fin de chaque segment de téléchargement, une ligne s'affiche indiquant la taille et la vitesse moyenne enregistrées jusqu'à ce moment-là :
[2026-08-01 00:00] ok 41.83MB (96.4 Mbps avg)
[2026-08-01 00:15] ok 39.11MB (102.7 Mbps avg)
[2026-08-01 00:30] ok 40.02MB (108.1 Mbps avg)
[2026-08-02] empty (RTSP), skipped
[192.168.1.6 25144ADPSF26C76] done: ok=284 err=0Les résultats sont classés par caméra puis par date, chaque segment de 15 minutes constituant un fichier :
imou_out/
└── 25144ADPSF26C76/
├── 2026-08-01/
│ ├── 00-00.mp4
│ ├── 00-15.mp4
│ ├── 00-30.mp4
│ └── …
└── 2026-08-02/
└── .no-videoEt si on recommençait ?

L'outil a été conçu pour s'exécuter plusieurs fois sans perte de temps. Les segments pour lesquels un fichier .mp4 est ignoré. Les jours où la caméra n'a rien enregistré — généralement en cas de coupure de courant ou avant l'installation de l'appareil — sont signalés par un fichier vide portant le nom .no-video afin d’éviter de le parcourir à nouveau lors de la prochaine analyse.
Avant de télécharger l'intégralité d'une journée, l'outil effectue une requête rapide via RTSP sur le port 554 pour vérifier s'il existe un enregistrement pour cette journée. Cette requête est bien moins coûteuse que de tenter de télécharger 96 segments pour recevoir 96 refus. Si votre caméra répond au protocole RTSP de manière inhabituelle et que cette requête renvoie une erreur, désactivez-la en --no-rtsp.
En ce qui concerne la vitesse : chaque caméra ralentit chaque flux d'environ dix fois par rapport au temps réel ; le seul moyen d'accélérer le processus est donc d'ouvrir plusieurs flux simultanément. Par défaut, il y a 8 flux par caméra, plus un flux dédié à chaque caméra, ce qui permet à trois caméras de fonctionner véritablement en parallèle. Sur un réseau Gigabit, c’est la puce intégrée à la caméra qui constitue le goulot d’étranglement, et non la liaison. Via un VPN, c’est le tunnel qui constitue le goulot d’étranglement.
Que fait-on à l'intérieur ?

La commande « Demander une vidéo » est une instruction PLAY envoyée à /vod/playback.xav accompagnée d’horodatages de début et de fin, authentifiée par HTTP Digest. Il y a ici un détail amusant : le logiciel de la caméra vérifie la signature Digest comme si le verbe était GET, alors que la requête réellement envoyée est PLAY. Quiconque calcule la signature correctement selon la norme se verra refuser l’accès ; il faut calculer la signature de manière erronée, en reproduisant exactement l’erreur de la caméra, pour pouvoir y accéder.
La caméra renvoie une séquence de paquets DHAV — un format de paquetage propre à Dahua, chaque paquet contenant un fragment d'image ou de son. La partie encodée ne correspond pas à l'intégralité du paquet :

Chaque paquet comporte son propre identifiant IV, dissimulé dans un bloc d’extension numéroté 0xB5, décalé de 27 octets par rapport au début du bloc. Seuls les 256 premiers octets de la partie données sont chiffrés en AES-256-OFB ; la fin du bloc est au format H.264 d'origine. Cette méthode suffit à empêcher un lecteur vidéo classique d’ouvrir le fichier, tout en étant très peu exigeante pour le processeur de l’appareil photo — celui-ci n’a en effet à chiffrer qu’une petite partie du flux, et non l’intégralité de celui-ci.
Une fois le fichier décodé, l'outil sépare l'image et le son, puis les ffmpeg les réassemble en un fichier MP4, en copiant le flux tel quel sans le réencoder, ce qui rend le processus rapide et sans perte de qualité.
En cas de problème
Aucune caméra n'a été détectée lors de la recherche
Vérifiez que l’ordinateur se trouve bien sur la même bande passante que la caméra — de nombreux foyers disposent d’un réseau invité distinct, ou bien les réseaux Wi-Fi 2,4 GHz et 5 GHz sont séparés par des VLAN. Spécifiez directement la bande passante à l’aide de --subnet. Si cela ne fonctionne toujours pas, le programme d’installation vous permet de saisir manuellement une liste d’adresses IP.
Série ou mot de passe incorrect(e)
Le mot de passe indiqué ici est celui de l'appareil, et non le mot de passe de votre compte Imou utilisé pour vous connecter à l'application. Ces deux mots de passe sont généralement différents. Le numéro de série doit être saisi à l'identique, y compris les majuscules.
Le téléchargement est terminé, mais le fichier ne s'ouvre pas
C'est presque certainement une erreur de clé — la vidéo est illisible. Relancez l'opération avec --setup et activez l'étape de vérification de la clé avant de poursuivre le téléchargement.
Message d'erreur : ffmpeg manquant
L'outil s'appelle ffmpeg par son nom, il doit donc se trouver dans PATH. Sous Windows, après l'installation via winget , il faut relancer la fenêtre d'invite de commande pour que les nouvelles variables d'environnement prennent effet.
Les parties encore brutes
La fréquence d'images est fixée à 15 images par seconde lors du montage. Si une caméra enregistre à une fréquence différente, le fichier reste visionnable normalement, mais la durée indiquée ne correspondra pas à la réalité. Le son n'est intégré que lorsque le segment contient effectivement des données audio — si la caméra a désactivé le micro, le fichier ne contiendra que des images.
Limite
Cet outil ne craque pas les mots de passe et ne contourne aucune étape d'authentification. Il fait exactement ce que l'application officielle fait lorsque le téléphone se trouve sur le même réseau que l'appareil photo, à la seule différence qu'il effectue cette opération en série et sans interface. Toutes ses fonctionnalités tiennent en une seule phrase : vous devez connaître le mot de passe et le numéro de série de votre propre appareil.
Précisons d'emblée l'autre aspect : si quelqu'un parvient à obtenir le numéro de série et le mot de passe de votre caméra, il pourra également récupérer l'intégralité des enregistrements présents sur la carte mémoire de cette manière. Le numéro de série est imprimé directement sur le boîtier de l’appareil. Par conséquent, modifiez le mot de passe par défaut, définissez un mot de passe unique pour chaque appareil et ne laissez pas le port 8086 de la caméra exposé à Internet.
Code source
L'ensemble des outils est regroupé dans un seul fichier Python, indépendant de tout framework, sous licence MIT : github.com/Crust92/Imou-LAN-Exporter.
Thảo luận