Étape 5: Comment nous l’avons fait : piratage Audio
Obtenir la vidéo n’était pas trop difficile. J’espère qu’audio serait tout aussi facile, à droite ? Après quelques heures de la recherche Google, il semblait que personne d’autre n’a jamais réussi à extraire et décoder le flux audio d’une caméra IP avec succès. Nous étions nous-mêmes.
Revenir à nos audiostream.cgi
url que nous avons trouvé via Wireshark, nous avons capturé quelques octets de l’audio avec Ubuntu :
wget http://192.168.1.252:81/audiostream.cgi?user=admi...
Ensuite, appuyez sur Ctrl + C pour couper le flux de données. RAW audio dans la main, nous marchions plus d' audace pour tenter de jouer via Fichier -> Importer -> données brutes. La plupart des tentatives sonnaient comme bruit, mais nous avons trouvé qu’en utilisant le VOX ADPCM codage à 8kHz produit quelque chose de reconnaissable !
Il y avait encore la question de la suppression de ce schéma bizarre de clics. J’ai pensé que c’était quelque chose à voir avec les paquets, comme avec le flux vidéo nous avons dû supprimer certains en-têtes en début et en fin. Peut-être que le même est vrai avec audio ?
Nous avons regardé un peu plus près à chaque paquet et remarqué que les données a commencé avec la même 0x55aa15a8... octets, ainsi qu’une valeur qui ressemblait à compter vers le haut chaque paquet et un long flot de zéros, pour un total de 32 octets. Vraisemblablement, Audacity prenait ces en-têtes de paquets sous forme de données audio et tenter de décoder, qui est ce qui fait les méchants cliquetis.
Quelques scripts python expérimentales plus tard, nous avons supprimé les en-têtes et transmis via le décodeur ADPCM dans Audacity - la plupart des clics ont été supprimée ! Mais il y avait un peu gauche, spécialement pendant les parties plus bruyants de l’audio.
Donc nous lisons sur le fonctionne de ADPCM - apparemment il encode audio par l’intermédiaire de la différence entre les échantillons et met en cache l’État audio précédent afin qu’elle puisse ajouter les deux et de produire un nouvel échantillon. Après un peu plus de scripts python, nous avons réussi à capturer les paquets directement et réinitialiser cet État au début de chaque paquet. Clics ont été complètement supprimés, et rien d’autre que la caméra audio est resté. Succès !