Déchiffrement des formats audio propriétaires : Guide technique sur Unlock Music

La gestion des fichiers musicaux issus de plateformes de streaming telles que QQ Music, NetEase Cloud Music ou Kugou se heurte souvent à l'utilisation de formats propriétaires chiffrés. Ces extensions, notamment .ncm, .qmc, ou .kgm, empêchent la lecture sur des dispositifs standards. Unlock Music est une solution open-source basée sur les technologies web permettant de lever ces restrictions directement depuis un navigateur.

Présentation de Unlock Music

Unlock Music est un outil conçu pour traiter le déchiffrement des fichiers audio en local, garantissant ainsi la confidentialité des données puisque aucun fichier n'est transféré vers un serveur tiers. Il s'appuie sur une architecture moderne pour transformer les flux chiffrés en formats universels tels que MP3 ou FLAC tout en préservant les métadonnées (ID3 tags) et les pochettes d'album.

Fonctionnalités principales

  • Exécution côté client : Le traitement est réalisé par le moteur JavaScript du navigateur.
  • Traitement par lots : Capacité à gérer plusieurs fichiers simultanément par glisser-déposer.
  • Conservation des tags : Les informations relatives à l'artiste, l'album et le titre sont réinjectées dans le fichier de sortie.
  • Performance : Utilisation possible de WebAssembly pour accélérer les algorithmes de déchiffrement complexes.

Matrice de compatibilité des formats

L'outil couvre une large gamme de protocoles de chiffrement utilisés par les leaders du marché asiatique :

Fournisseur Extensions Supportées Format de Sortie
NetEase Cloud .ncm MP3 / FLAC
QQ Music .qmc0, .qmc2, .qmc3, .qmcflac, .tkm MP3 / FLAC
Kugou Music .kgm, .vpr MP3 / FLAC
Kuwo Music .kwm MP3 / FLAC
Xiami Music .xm WAV / M4A / MP3

Implémentation et déploiement local

Bien que des versions en ligne existent, le déploiement local offre une sécurité accrue et une personnalisation possible du code source.

Installation de l'environnement de développement


# Clonage du dépôt source
git clone https://github.com/unlock-music/unlock-music.git logic-audio-tool
cd logic-audio-tool

# Installation des dépendances via npm
npm install

# Exécution du serveur de développement local
npm run serve

Une fois le serveur actif, l'interface est accessible via http://localhost:8080.

Architecture du projet

Le projet est structuré de manière modulaire pour faciliter l'ajout de nouveaux algorithmes de déchiffrement. Le répertoire src/decrypt/ contient la logique métier spécifique à chaque plateforme :

  • ncm.ts : Logique dédiée au format de NetEase.
  • qmc.ts et qmc_wasm.ts : Modules pour les formats QQ Music, avec une variante WebAssembly.
  • kgm.ts : Gestionnaire pour les fichiers Kugou.

Le point d'entrée principal index.ts analyse l'en-tête du fichier (magic numbers) ou son extension pour router le flux binaire vers le module approprié.

Optimisation et fonctionnalités avancées

Accélération via WebAssembly (WASM)

Pour les fichiers volumineux ou les algorithmes gourmands en CPU, Unlock Music utilise des modules compilés en C++ vers WebAssembly. Pour compiler ces modules manuellement :


# Script de génération des binaires WASM
chmod +x ./scripts/build-wasm.sh
./scripts/build-wasm.sh

Extension de navigateur

Il est possible de packager l'outil sous forme d'extension pour Chrome ou Firefox, permettant une intégration directe dans le flux de téléchargement :


# Construction de la version statique
npm run build

# Création du package d'extension
npm run make-extension

Analyse technique du déchiffrement

Le processus ne consiste pas en un simple changement d'extesnion. L'application effectue les étapes suivantes :

  1. Lecture binaire : Chargement du fichier via l'API FileReader ou Blob.
  2. Exrtaction de la clé : Récupération de la clé de chiffrement souvent stockée dans les métadonnées du fichier ou dérivée d'un algorithme spécifique (XOR, AES).
  3. Transformation : Application de l'algorithme inverse pour obtenir le flux PCM ou compressé original.
  4. Reconstruction : Utilisation de bibliothèques comme music-metadata pour extraire les tags et reconstruction du conteneur final (MP3/FLAC).

Étiquettes: unlock-music audio-decryption TypeScript webassembly vue-js

Publié le 24 juillet à 04h14