rtmpdump est un outil qui permet de récupérer le contenu d'un flux rtmp. Rien d'illégal est soit, on donne un flux en streaming, on a juste envie de l'écouter de la façon dont on veut. Seulement l'utilisation n'est pas toujours facile. Aide mémo:
--rtmp -r url URL of the server and media content. --app -a app Name of application to connect to on the RTMP server. Overrides the app in the RTMP URL. Sometimes the rtmpdump URL parser cannot determine the app name automatically, so it must be given explicitly using this option. --tcUrl -t url URL of the target stream. Defaults to rtmp[e]://host[:port]/app/playpath. --pageUrl -p url URL of the web page in which the media was embedded. By default no value will be sent. --swfUrl -s url URL of the SWF player for the media. By default no value will be sent. --flv -o output Specify the output file name. If the name is − or is omitted, the stream is written to stdout.
Prenons comme exemple la musique du film The Hobbit qui peut être écoutée ici. Seulement c'est en une seule piste (1h45) dans un sale player flash où on sait même pas avancer.
En décompilant (flasm est ton ami) le fichier swf, on découvre ceci (output complet)
'rtmp://fl.interoute.com/streamrt', 'mp3:{6ffab433-1c7d-4a4a-a9cc-472ebc88c47e}/{c9b64919-4aa0-4237-a882-e9fd15b8712f}/TheHobbit.mp3',
ou en écoutant avec Wireshark, on voit ceci passer
connect.?..........app...streamrt..flashVer...LNX 11,2,202,251..swfUrl...http://www.decca.com/hosting/hobbit/Hobbit.swf..tcUr.l.. rtmp://fl.interoute.com/streamrt..fpad....capabilities.@m........audioCodecs.@.........videoCodecs.@o....... videoFunction.?..........pageUrl..$http://www.decca.com/hosting/hobbit/.... [...] .C..........createStream.@......................._result.@.........?.............s........play............_mp3:{6ffab433-1c7d-4a4a-a9cc-472ebc88c47e}/{c9b64919-4aa0-4237-a882-e9fd15b8712f}/TheHobbit.mp3
Ce qui est beau avec Wireshark, c'est qu'on a nos paramètres quasi déjà tout fait. On identifie donc facilement les paramètres et arrive à la commande suivante :
$ rtmpdump --app streamrt --swfUrl http://www.decca.com/hosting/hobbit/Hobbit.swf --tcpUrl rtmp://fl.interoute.com/streamrt --pageUrl http://www.decca.com/hosting/hobbit/ --playpath "mp3:{6ffab433-1c7d-4a4a-a9cc-472ebc88c47e}/{c9b64919-4aa0-4237-a882-e9fd15b8712f}/TheHobbit.mp3" -o TheHobbit.mp3
qui produit un beau mp3. Bon bien sûr n'allez pas partager se fichier .mp3 sur des réseaux P2P, là vous deviendriez illégal. À bon entendeur…