[TUTORIAL] Récupérer du contenu en streaming protégé
- Installez StreamFab (dispo sur le forum)
- Avec le navigateur intégré, connectez vous sur la plateforme voulue
- Dès que le contenu se lance, StreamFab le détecte et propose de le télécharger.
Méthode avancée :
- Tutoriel agile - Il s'améliorera au fil des découvertes / demandes.
Cas pratique / Contexte : viewtopic.php?t=23930
Tutoriel avancé. Explications volontairement larges.
Partie 1 : Analyse
On se rend sur le site visé, on se connecte, et on ouvre l'inspecteur d'élément, puis on va sur le contenu protégé.
Dans l'inspecteur d'élément > Onglet réseau
Il faut maintenant localiser comment les flux vidéo / audio arrivent dans le player.
On remarque sur BFM (et beaucoup d'autres sites) qu'ils chargent premièrement un "Manifest.mpd", suivi d'une demande de licence, ensuite les segments m4s arrivent (v0 et v4 correspondent à audio / vidéo)
(L'ordre est incohérent car le téléchargement des segments chiffrés peut débuter avant même d'avoir la clé de décryptage )
(Côté jargon technique, dans le cas présent, on est sur du streaming via MPEG-DASH, la DRM utilisée est Playready de chez Microsoft)
- Récupérez le lien du Manifest.mpd (clic droit > copier le lien)
- Sauvegardez le dans un fichier texte
- Récupérez le lien de la "licence" (URL contenant widevine en général), collez la dans un fichier texte
- Récupérez les en-têtes de la requête de licence (Request headers) (ceux commençant par : sont inutiles)
Coller le tout dans le fichier texte.
Dans le manifest.mpd (ouvrez le avec un éditeur de texte/code, récupérez la clé PSSH (texte base64 entre les balises <cenc:pssh>clé</cenc:pssh>.
Vous allez en voir plusieurs, récupérez celle qui n'est pas à proximité d'un <mspr:pro></mspr:pro>
Partie 2 : Récupération des flux chiffrés
- Installer yt-dlp : https://github.com/yt-dlp/yt-dlp#installation
Code : Tout sélectionner
yt-dlp --allow-u --downloader aria2c -f bv,ba "http://URLManifest.mpd"
Partie 3 : Décodage des flux
Rendez-vous sur https://cdrm-project.com/
Si vous avez de la chance la clé de décodage est déjà disponible, allez vérifiez sur : https://cdrm-project.com/findpssh vous pouvez passer directement à la partie 4 si un résultat est trouvé.
Sinon, sur l'index du site :
Collez votre clé PSSH (de la partie 1), ainsi que la licence, et les headers.
! Certains headers doivent être entourés de quotes (") pour fonctionner, par exemple : accept ou content-length, les messages d'erreur sont assez clairs.
Si tout est ok, la page affiche "Success" suivi de la / les clés de décryptage, collez les dans un fichier texte. (Dans le screenshot suivant, la dernière ligne)
Partie 4 : Déchiffrement & merge
Pour cette partie, vous devez installer au préalable mp4decrypt, présent dans la suite d'outils bento4 : https://www.bento4.com/documentation/mp4decrypt/
Vous aurez aussi besoin de ffmpeg pour regrouper l'audio et la vidéo.
Remplacez KEY par la clé récupérée à l'étape précédente, si plusieurs, rajoutez un --key clé2
Déchiffrement du flux audio :
Code : Tout sélectionner
mp4decrypt --key KEY ca.m4a audio.mp4
Code : Tout sélectionner
mp4decrypt --key KEY cv.mp4 video.mp4
Code : Tout sélectionner
ffmpeg -i video.mp4 -i audio.mp4 -c:v copy -c:a aac output.mp4
Explication du fonctionnement des DRM :
Code : Tout sélectionner
https://youtu.be/mn2POYEiJVE
Code : Tout sélectionner
https://youtu.be/hUeGT91deSM