The Daily Shaarli
Solution Youtube-dl + Tor
Vu que j'utilise un Fournisseur d'Accès à Internet français, j'avais directement exclu l'hypothèse d'un filtrage / zonage géographique. Je viens de tester avec un bon vieux SSH port forwarding dynamique sur un serveur situé derrière une ligne Orange + youtube-dl --proxy socks5://127.0.0.1:6666 --geo-bypass -f mp4 et ça chemar. En réalité, c'est l'option -f mp4 (qui permet de sélectionner le format désiré) qui fait le boulot : si je la laisse activée tout en virant le proxy, ça continue de fonctionner.
La variable d'environnement « SSLKEYLOGFILE » permet d'indiquer un fichier où seront stockés les secrets cryptographiques (clés de session) échangés par un programme lors de communications TLS.
Ça fonctionne avec la majorité des bibliothèques TLS. J'ai testé avec Firefox (lib = NSS), Chromium (lib = BoringSSL), curl (lib = OpenSSL), wget et ldapsearch (lib = GnuTLS). A priori, ça fonctionne sous GNU/Linux, mais aussi sous winwin et Mac OSX.
C'est logique, car c'est à chaque programme de vérifier l'existence de la variable d'environnement, d'ouvrir le fichier, d'appeler la callback de la bibliothèque TLS, etc. Exemple : le sous-programme s_client d'OpenSSL ne prend pas en charge cette variable, il faut utiliser le paramètre -keylogfile.
On peut utiliser ces secrets afin de déchiffrer une communication avec Wireshark sans recourir à une attaque MitM. Généralement, le programme n'efface pas les secrets consignés lors de sessions précédentes ou par d'autres programmes (il ajoute ses secrets à la fin du fichier) , wireshark sera en mesure de déchiffrer tous les flux chiffrés qu'il a capturés, même si un logiciel a effectué plusieurs connexions chiffrées ou s'il a renégocié les clés.
Vu que j'ai déjà déchiffré des flux avec wireshark, j'ai l'impression de redécouvrir quelque chose que je savais autrefois… Curieuse sensation… Merci à l'article Prise en main de TLS 1.3 avec OpenSSL 1.1.1 pour le rafraîchissement de mémoire.
Je voulais récupérer le dernier épisode de Cash investigation. Comme tous ceux de la saison 2019/2020, il n'est pas disponible sur le compte Youtube de l'émission. Il ne semble pas être disponible dans la DHT BitTorrent (recherche effectuée avec le moteur de recherche DHT BTDigg). Il ne semble pas être disponible en téléchargement libre sur le web. Il est disponible en replay sur le site de France TV. Jusqu'à quand ?
Pour en récupérer une copie, j'utilise la dernière version (2020.05.08) de Youtube-dl. J'obtiens uniquement les sept premières secondes de son. Que ce soit avec VLC, mplayer, ffmpeg, faac, sound-konverter, audacity, etc. Même en demandant à Youtube-dl de conserver séparément la piste audio et la piste vidéo (-k), la piste son reste défectueuse. Tous les logiciels sus-cités voient une fin prématurée de la piste audio. ffmpeg hurle « Invalid data found when processing input ». Elle occupe 96 mo et un cat en montre l'intégralité. Je te passe mon debug à coup de dd (dd if='Cash investigation - Egalité hommes femmes - balance ton salaire-7309baab-7d24-4d74-afd2-695d61d19e18.fhls_v5_os-audio-aacl-64-Audio_Français.mp4' bs=1 skip=99000 of=frag2.mp4 puis « skip=198000 » puis…) : la piste audio est bien complète, mais un lecteur audio quelconque échoue à le lire toutes les sept secondes, ce qui correspond à la taille d'un fragment (pour leur diffusion sur le web, les fichiers vidéos sont découpés en fragments de taille variable). Je pense donc que la concaténation des fragments pose problème. Je n'ai pas réussi à en obtenir une meilleure en demandant à Youtube-dl de conserver tous les fragments (--keep-fragments) et à fffmpeg de les chaîner.
L'extension Firefox Video DownloadHelper ne parvient pas à télécharger la vidéo, car elle se fait berner par les fragments.
Au final, voici une méthode qui fonctionne (ÉDIT DU 24/05/2020 À 20 H 10 : méthode beaucoup plus simple : utiliser le paramètre -f mp4 de Youtube-dl afin de sélectionner mp4 comme format désiré. Merci Oros. FIN DE L'ÉDIT) :
youtube-dl -k --write-info-json 'https://www.francetvinfo.fr/replay-magazine/france-2/cash-investigation/cash-investigation-du-mardi-19-mai-2020_3939739.html' ;jq. Il se reconnaît aisément : il y en a un seul et la description de son format contient les mots « audio only »). Allons-y : jq -r '.formats[] | select(.format | test("audio only"; "i")).url' 'Cash investigation - Egalité hommes femmes - balance ton salaire-7309baab-7d24-4d74-afd2-695d61d19e18.info.json' ;cvlc --play-and-exit 'https://cloudreplayfrancetv.akamaized.net/f6b0050f44ce5/229120135_france-domtom_TA.ism/ZXhwPTE1OTAyODkxNjV+YWNsPSUyZmY2YjAwNTBmNDRjZTUlMmYyMjkxMjAxMzVfZnJhbmNlLWRvbXRvbV9UQS5pc20qfmhtYWM9OTUxZjE2ZmY5MGFlMDJmOTM5NzE4NWY1MDRmNjM5OTY2Zjg5MmJhMzYyNTEzZmQ3NWE1N2Q1Mjk0ODQ5YWRiOA==/229120135_france-domtom_TA-audio_fre=64000.m3u8' --sout '#transcode{vcodec=none,acodec=vorb,ab=128,channels=2,samplerate=48000}:file{dst=cash_audio.ogg}'. On obtient le même résultat en passant par l'item « Convertir / Enregistrer » du menu « Média » de l'interface graphique, mais je veux me la péter ;ffmpeg -i 'Cash investigation - Egalité hommes femmes - balance ton salaire-7309baab-7d24-4d74-afd2-695d61d19e18.fhls_v5_os-2186.mp4' -i cash_audio.ogg -c:v copy -c:a copy Cash_investigation_-_Egalite_hommes_femmes_balance_ton_salaire.mkv.