Accueil > Informatique > Internet > Sites Internet > C'est quoi Deezer ?

crajkaro

C'est quoi Deezer ?

pouvez vous m'expliquer le fonctionnement de Deezer ?

3 réponses question posée par crajkaro le 8 janvier 2008 à 19:08 | Mots clés: Musique - Téléchargement - Deezer
Vue : 2333 fois | Note générale : +1
avec 1 vote - Question ouverte
VOTE
 
Note : +1
phildu
Meilleure
score

C'est l’offre d’écoute gratuite, illimitée et légale de musique.Financée par la publicité, cette offre bouscule les habitudes d’écoute. Sans se confondre avec une webradio, puisqu'un moteur permet d’exploiter la base et autorise la gestion des playlists, le système mis en place ressemble davantage au Joost de la musique. Il n'aura ainsi pas à se confronter aux problèmes de légalité qui gâchent l'aventure YouTube et Dailymotion.
comment fonctionne la lecture de musique. L’applet flash, une fois la recherche effectuée, a une liste de musiques résultante de la recherche, avec pour chacune un PUID. Pour pouvoir lire une musique en particulier, elle doit exécuter une requete demandant le mp3 en spécifiant ce PUID unique. Elle recevra en réponse le mp3, qu’elle pourra jouer. Dysnomia, là encore, se contente d’imiter son comportement, mais au lieu de jouer le mp3 reçu, il l’enregistre sur le disque. Cela permet de télécharger des musiques depuis deezer. En réalité, la demande de réception du mp3 est un peu plus compliquée qu’une simple requete précisant le PUID, pour des raisons de protection du contenu.

Voila comment ça se passe :

* Envoi d’une requete demandant un identifiant de session deezer (même remarque que plus haut : l’identifiant de session est en fait récupéré juste aprés le chargement de l’applet, meme si dysnomia en redemande un à chaque fois - ce qui n’a aucun impact sur le fonctionnement).
* Reception de cet identifiant, crypté avec la clef A.
* Envoi d’une requete demandant une clef de téléchargement de mp3. Une telle clef donne l’autorisation de “télécharger” (normalement afin de lire la musique dans l’applet, mais dans le cas de dysnomia de la sauver sur le disque) une musique en particulier, une fois et une seule. Cette requete de demande de clef doit comporter l’identifiant de session deezer récupéré, *aprés* l’avoir decrypté, ainsi que le PUID de la musique que l’on souhaite télécharger (et qui est disponible dans les résultats de recherche). Si l’identifiant de session ou le PUID spécifié dans la requete n’existent pas (PUID ne correspondant à aucune musique ou identifiant de session jamais attribué en réponse à une requete), alors une erreur se produit et rien n’est renvoyé.
* Reception de la clef de téléchargement, cryptée avec la clef A.
* Envoi d’une requete demandant le mp3. Cette requete doit comporter l’identifiant de session deeezer decrypté, la clef de téléchargement decryptée, et le PUID de la musique désirée. Contrairement aux autres requetes, celle ci est effectuée sur une page différente, cacheDiffusion.php, et sur un serveur différent. L’url de la requete est plus précisément :

Ouvrir le lien de la chanson>&KEY=<clef de téléchargement decryptée>&SESSION_ID=<identifiant de session deezer decrypté>

où <x> est le dernier caractere du PUID de la chanson désiré. Exemple pour le PUID évoqué plus haut (tryad - the final rewind) : proxy-a.deezer.com.. Si l’identifiant de session spécifié n’existe pas (parce que jamais attribué ou mal decrypté), si la clef n’existe pas (mêmes raisons possibles), ou si le PUID spécifié ne correspond pas à celui pour lequel la clef de téléchargement a été demandée, ou encore si la clef a déjà été utilisée pour télécharger la musique, alors un message d’erreur apparait, indiquant que “votre ip a été enregistrée”, blablabla. Le message d’erreur en question peut par exemple être visualisé simplement en ne passant aucun parametre, ici par exemple :

Ouvrir le lien

On note également que contrairement aux autres requetes, celle ci passe les parametres par GET dans la requete et non par sérialisation amfphp. A noter également que n’importe quel proxy est en fait utilisable pour télécharger la chanson, pas forcément celui dont le caractere correspond au dernier caractere du PUID de la musique (même si à l’époque où j’avais testé ça, des
erreurs php apparaissaient en plus de la musique indiquant un espace disque insuffisant pour copier un fichier, probablement le mp3 dans le cache du proxy utilisé, qui n’est pas prévu à la base pour relayer cette musique).

* Réception du mp3 et lecture (dans le cas de l’applet) ou enregistrement sur le disque (dans le cas de dysnomia).

Par ailleurs, dysnomia propose également un mode de téléchargement “alternatif”, qui utilise le fait que les caches des proxy deezer sont insuffisament protégés. En fait, il est tout à fait possible d’accéder à n’importe quel mp3 sans la moindre clef ou identifiant de session valide via une url sous la forme suivante :

Ouvrir le lien

où <x> est le dernier caractere du PUID, <y> l’avant dernier, et <PUID> le puid de la musique désirée. Exemple avec une autre musique de tryad, “Beat into submission”, dont le PUID est 4b75899d-6c0f-dcf8-ccf8-889a31042c0f :

Ouvrir le lien

Cependant, ce mode de téléchargement n’est pas utilisé par l’applet flash deezer (et il est *théoriquement* détectable dans les logs http du proxy concerné). Il est proposé dans dysnomia en tant que proof of concept (et permet de téléchargement des musiques tout aussi bien que le téléchargement “classique”, sans besoin de demander aucune clef).

Voila donc comment fonctionne dysnomia, en imitant le comportement de l’applet flash deezer (à l’exception de ce dernier mode de téléchargement où il procede différemment).

A noter que j’ai parlé d’une clef A et d’une clef B, utilisées respectivement pour decrypter/crypter les identifiants de session et clef de téléchargement et les motifs de recherche. En réalité, l’applet flash utilise un cryptage RC4 mais étant donné la maniere dont fonctionne l’algorithme RC4, il revient exactement au meme dans ce cas précis de crypter/decrypter avec un simple XOR à l’aide de ces deux clef différentes. C’est ce que fait dysnomia, au lieu d’utiliser RC4. A noter qu’utiliser du cryptage pour “protéger” deezer n’a en réalité strictement aucune utilité, puisque qu’on dispose du texte en clair (simplement en sniffant les requetes envoyées par l’applet flash pour voir quelle est la version decryptée de la clef de téléchargement/de l’identifiant de session - et qu’on a la version en clair du motif de recherche pour la bonne raison que c’est le visiteur qui le tape) ET de la version cryptée (en sniffant les réponses envoyées depuis deezer à l’applet pour la clef/l’identifiant de session, et en sniffant la requete de recherche envoyée par l’applet pour le motif de recherche). Dans ces conditions, aucune véritable cryptanalyse n’est nécessaire pour obtenir des clefs permettant de crypter les données à l’identique.

Dysnomia utilise curl pour effectuer les requetes http (http://curl.haxx.se/) et wxWidgets pour l’interface (http://wxwidgets.org/). Il n’y a pas de véritable sérialisation/déserialisation amfphp implémentée dans dysnomia. A la place, le logiciel se contente de serialiser/déserialiser au format amfphp les données dans le cas particulier de deezer, en connaissant la structure
des résultats de requete/des requetes à envoyer.

Voila voila :-)

Pour plus de détails (notamment les valeurs exactes des clefs A et B, ou encore le format exact de serialisation), il suffit de se reporter au code du module “deezer” (deezer.cpp et deezer.hpp) de Dysnomia.
A noter qu’à deux reprises depuis la création de dysnomia, effectivement, le fonctionnement de deezer a changé (la premiere fois pour rajouter le cryptage des identifiants de session/clefs de téléchargement, la deuxieme pour modifier légerement les structures de données et les clefs de cryptage). Dans les deux cas, dysnomia a été patché pour s’adapter, et il continuera de l’être à chaque modification deezer :-)

Sachez aussi que la prochaine version 0.4 permettra de télécharger de la musique depuis Radioblogclub, supportera le téléchargement en parallèle, le tri des listes et le renommage des mp3. Encore une fois, un simple hacker démontre qu’aucune protection n’est de taille à rivaliser avec un peu d’imagination.
Si ça vous interresse, sachez aussi que le code source est ouvert et que vous pouvez donc aider Solozerk a faire progresser son logiciel. Si vous voulez tester Dysnomia pour mieux comprendre tout ce qui a été décrit précédemment (et pas pour télécharger des albums sur Deezer, hein ?) vous trouverez tout ce qu’il faut sur le site Dysnomia-project.org.


Le 8 janvier 2008 à 20:23 par phildu


Aller au formulaire de réponse

phildu
VOTE
 
Note : +4

Citer réponse N°1724 C'est l’offre d’écoute gratuite, illimitée et légale de musique.Financée par la publicité, cette offre bouscule les habitudes d’écoute. Sans se confondre avec une webradio, puisqu'un moteur permet d’exploiter la base et autorise la gestion des playlists, le système mis en place ressemble davantage au Joost de la musique. Il n'aura ainsi pas à se confronter aux problèmes de légalité qui gâchent l'aventure YouTube et Dailymotion.
comment fonctionne la lecture de musique. L’applet flash, une fois la recherche effectuée, a une liste de musiques résultante de la recherche, avec pour chacune un PUID. Pour pouvoir lire une musique en particulier, elle doit exécuter une requete demandant le mp3 en spécifiant ce PUID unique. Elle recevra en réponse le mp3, qu’elle pourra jouer. Dysnomia, là encore, se contente d’imiter son comportement, mais au lieu de jouer le mp3 reçu, il l’enregistre sur le disque. Cela permet de télécharger des musiques depuis deezer. En réalité, la demande de réception du mp3 est un peu plus compliquée qu’une simple requete précisant le PUID, pour des raisons de protection du contenu.

Voila comment ça se passe :

* Envoi d’une requete demandant un identifiant de session deezer (même remarque que plus haut : l’identifiant de session est en fait récupéré juste aprés le chargement de l’applet, meme si dysnomia en redemande un à chaque fois - ce qui n’a aucun impact sur le fonctionnement).
* Reception de cet identifiant, crypté avec la clef A.
* Envoi d’une requete demandant une clef de téléchargement de mp3. Une telle clef donne l’autorisation de “télécharger” (normalement afin de lire la musique dans l’applet, mais dans le cas de dysnomia de la sauver sur le disque) une musique en particulier, une fois et une seule. Cette requete de demande de clef doit comporter l’identifiant de session deezer récupéré, *aprés* l’avoir decrypté, ainsi que le PUID de la musique que l’on souhaite télécharger (et qui est disponible dans les résultats de recherche). Si l’identifiant de session ou le PUID spécifié dans la requete n’existent pas (PUID ne correspondant à aucune musique ou identifiant de session jamais attribué en réponse à une requete), alors une erreur se produit et rien n’est renvoyé.
* Reception de la clef de téléchargement, cryptée avec la clef A.
* Envoi d’une requete demandant le mp3. Cette requete doit comporter l’identifiant de session deeezer decrypté, la clef de téléchargement decryptée, et le PUID de la musique désirée. Contrairement aux autres requetes, celle ci est effectuée sur une page différente, cacheDiffusion.php, et sur un serveur différent. L’url de la requete est plus précisément :

Ouvrir le lien de la chanson>&KEY=<clef de téléchargement decryptée>&SESSION_ID=<identifiant de session deezer decrypté>

où <x> est le dernier caractere du PUID de la chanson désiré. Exemple pour le PUID évoqué plus haut (tryad - the final rewind) : proxy-a.deezer.com.. Si l’identifiant de session spécifié n’existe pas (parce que jamais attribué ou mal decrypté), si la clef n’existe pas (mêmes raisons possibles), ou si le PUID spécifié ne correspond pas à celui pour lequel la clef de téléchargement a été demandée, ou encore si la clef a déjà été utilisée pour télécharger la musique, alors un message d’erreur apparait, indiquant que “votre ip a été enregistrée”, blablabla. Le message d’erreur en question peut par exemple être visualisé simplement en ne passant aucun parametre, ici par exemple :

Ouvrir le lien

On note également que contrairement aux autres requetes, celle ci passe les parametres par GET dans la requete et non par sérialisation amfphp. A noter également que n’importe quel proxy est en fait utilisable pour télécharger la chanson, pas forcément celui dont le caractere correspond au dernier caractere du PUID de la musique (même si à l’époque où j’avais testé ça, des
erreurs php apparaissaient en plus de la musique indiquant un espace disque insuffisant pour copier un fichier, probablement le mp3 dans le cache du proxy utilisé, qui n’est pas prévu à la base pour relayer cette musique).

* Réception du mp3 et lecture (dans le cas de l’applet) ou enregistrement sur le disque (dans le cas de dysnomia).

Par ailleurs, dysnomia propose également un mode de téléchargement “alternatif”, qui utilise le fait que les caches des proxy deezer sont insuffisament protégés. En fait, il est tout à fait possible d’accéder à n’importe quel mp3 sans la moindre clef ou identifiant de session valide via une url sous la forme suivante :

Ouvrir le lien

où <x> est le dernier caractere du PUID, <y> l’avant dernier, et <PUID> le puid de la musique désirée. Exemple avec une autre musique de tryad, “Beat into submission”, dont le PUID est 4b75899d-6c0f-dcf8-ccf8-889a31042c0f :

Ouvrir le lien

Cependant, ce mode de téléchargement n’est pas utilisé par l’applet flash deezer (et il est *théoriquement* détectable dans les logs http du proxy concerné). Il est proposé dans dysnomia en tant que proof of concept (et permet de téléchargement des musiques tout aussi bien que le téléchargement “classique”, sans besoin de demander aucune clef).

Voila donc comment fonctionne dysnomia, en imitant le comportement de l’applet flash deezer (à l’exception de ce dernier mode de téléchargement où il procede différemment).

A noter que j’ai parlé d’une clef A et d’une clef B, utilisées respectivement pour decrypter/crypter les identifiants de session et clef de téléchargement et les motifs de recherche. En réalité, l’applet flash utilise un cryptage RC4 mais étant donné la maniere dont fonctionne l’algorithme RC4, il revient exactement au meme dans ce cas précis de crypter/decrypter avec un simple XOR à l’aide de ces deux clef différentes. C’est ce que fait dysnomia, au lieu d’utiliser RC4. A noter qu’utiliser du cryptage pour “protéger” deezer n’a en réalité strictement aucune utilité, puisque qu’on dispose du texte en clair (simplement en sniffant les requetes envoyées par l’applet flash pour voir quelle est la version decryptée de la clef de téléchargement/de l’identifiant de session - et qu’on a la version en clair du motif de recherche pour la bonne raison que c’est le visiteur qui le tape) ET de la version cryptée (en sniffant les réponses envoyées depuis deezer à l’applet pour la clef/l’identifiant de session, et en sniffant la requete de recherche envoyée par l’applet pour le motif de recherche). Dans ces conditions, aucune véritable cryptanalyse n’est nécessaire pour obtenir des clefs permettant de crypter les données à l’identique.

Dysnomia utilise curl pour effectuer les requetes http (http://curl.haxx.se/) et wxWidgets pour l’interface (http://wxwidgets.org/). Il n’y a pas de véritable sérialisation/déserialisation amfphp implémentée dans dysnomia. A la place, le logiciel se contente de serialiser/déserialiser au format amfphp les données dans le cas particulier de deezer, en connaissant la structure
des résultats de requete/des requetes à envoyer.

Voila voila :-)

Pour plus de détails (notamment les valeurs exactes des clefs A et B, ou encore le format exact de serialisation), il suffit de se reporter au code du module “deezer” (deezer.cpp et deezer.hpp) de Dysnomia.
A noter qu’à deux reprises depuis la création de dysnomia, effectivement, le fonctionnement de deezer a changé (la premiere fois pour rajouter le cryptage des identifiants de session/clefs de téléchargement, la deuxieme pour modifier légerement les structures de données et les clefs de cryptage). Dans les deux cas, dysnomia a été patché pour s’adapter, et il continuera de l’être à chaque modification deezer :-)

Sachez aussi que la prochaine version 0.4 permettra de télécharger de la musique depuis Radioblogclub, supportera le téléchargement en parallèle, le tri des listes et le renommage des mp3. Encore une fois, un simple hacker démontre qu’aucune protection n’est de taille à rivaliser avec un peu d’imagination.
Si ça vous interresse, sachez aussi que le code source est ouvert et que vous pouvez donc aider Solozerk a faire progresser son logiciel. Si vous voulez tester Dysnomia pour mieux comprendre tout ce qui a été décrit précédemment (et pas pour télécharger des albums sur Deezer, hein ?) vous trouverez tout ce qu’il faut sur le site Dysnomia-project.org.


Le 8 janvier 2008 à 20:23 par phildu - 4 votes

Nomogo
VOTE
 
Note : +3

Citer réponse N°1725 Deezer est un site d'écoute de musique en streaming.
La SACEM a autorisé ce site, pour la simple raison qu'il est impossible de télécharger directement les milliers de morceaux qu'on peut y trouver.
Deezer est donc parfaitement légal.
Il est possible de s'y inscrire, d'enregistrer des playlists, de partager ses playlists pour son blog depuis n'importe quel pc sans trop de contrainte (avoir flash player).


Le 8 janvier 2008 à 20:25 par Nomogo - 3 votes

Darky
VOTE
 
Note : +2

Citer réponse N°1757 "il est impossible de télécharger directement les milliers de morceaux qu'on peut y trouver."

ya vraiment rien de plus facil que de pomper les mp3 de n'importe quel site de streaming.. je sais pas comment a fait la SACEM pour valider ça..
mais bon ^^ jvais pas me plaindre


Le 8 janvier 2008 à 23:17 par Darky - 2 votes

enregistrer deezer, telecharger deezer, copier deezer, deezer c'est quoi, deezer sans flash, format deezer, télécharger deezer, recuperer musique deezer, comment utiliser deezer, deezer c'est quoi ?, utiliser deezer, qu'est ce que DEEZER, deezer rc4, proof of concept deezer, copier sur deezer, comment enregistrer deezer, enregistrer musique deezer, deezer telecharger, c quoi deezer, recuperer musique de deeezer, copier la musique deezer, deezer c koi,


Vous devez être identifié pour répondre aux questions. Si vous n'êtes pas inscrit vous pouvez créer un compte rapidement et gratuitement.

Inscription


Signaler un abus

Questions proches

Demander...

Derniers membres

DANS-MA-SPHEREDANS-MA-SPHERE
Son profil

anatho42anatho42
Son profil

m4lyem4lye
Son profil

ff
Son profil

NantaiselloNantaisello
Son profil


Derniers membres

Nb de questions: 10537
Nb de réponses: 47849
Nb de membres: 1495
Nb de connectés : 60


Mots-clés
Tags les plus fréquents

Sms Twiktatoo Marketing Téléchargement Amour Arnaque Origines Ami Jeux Apprendre Discussion Code Photoshop Photo Gratuits Twikeo Informatique Japon Nombre Site Musique Contrat Jeu Youtube Ville Facile Mot De Passe Question Net Confiance Mémoire Web Cadeaux étranger Cadeau Rencontre Rap Cours Vidéo Avis Message Urgence Monnaie Internet Publicité Argent Forum Info Mot Modération


France    English    España

Créer un compte Twikeo
Mon compte
Forum


Accueil | Mon compte | Contact | Plan du site | Top membres | Pictogramme | FAQ
A propos de questions : Question du jour | Question sans réponse | Dernières réponses
Interrogation directe : Qui | Quel | Quand | Ou | Comment | Pourquoi | Combien
A propos de Twikeo : Blog Gratuit | Blog Twikeo | Bugs et Suggestions | Presse | Annonceurs
Conditions générales d'utilisation | Mentions légales | Twikeo.com © 2008 - Si tu sais pas, demande ...

Accueil Haut