Note de ce sujet :
  • Moyenne : 3.2 (5 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Le projet Tune, un concurrent à Roon, libre, gratuit et Français ?
#83
@renesenses : merci, je n'ai pas forcément les outils IA suffisant.

Mais en utilisant Whireshark, j'ai un peu avancé..
A voir ici : https://chatgpt.com/share/6a2c4e71-5b48-...52ef553b90

Et avec une autre IA (mais pas validée..) :

? Investigation Technique : Protocole Propriétaire HQP (HQLink)

Cible : HQP Desktop Server
Port identifié : 4321/TCP
Statut : Protocole binaire propriétaire avec enveloppe XML, fonctionnant en mode "Push" asynchrone.



1. ARCHITECTURE DU PROTOCOLE

Le protocole n'est pas une API Requête/Réponse classique (type HTTP/REST). C'est un flux binaire persistant.
  • Transport : TCP brut.
  • Encodage des données : XML UTF-8.
  • Encapsulation : Chaque message XML est précédé d'un en-tête binaire de 6 octets et suivi d'un caractère de fin de ligne (0x0A).

Structure d'une trame :
Code :
[ HEADER 6 OCTETS ] + [ PAYLOAD XML ] + [ 0x0A (LF) ]

Détail de l'en-tête (6 octets) :
  • Octet 1 : Constant 0x0F.
  • Octets 2 à 5 : Variables (ex: B4 C8 42 00).
    Hypothèse forte : Il s'agit d'un ID de session, d'un timestamp, ou d'un checksum généré aléatoirement à chaque connexion. C'est le point de blocage actuel. Le serveur rejette silencieusement les paquets avec un en-tête invalide.
  • Octet 6 : Souvent 0x00.



2. SÉQUENCE DE CONNEXION (HANDSHAKE)

Pour qu'une session soit valide, le client doit respecter une séquence stricte. L'envoi direct de commandes est ignoré.

  1. Établissement TCP : Connexion sur le port 4321.
  2. Commande d'Initialisation (Obligatoire) :
    Le client doit envoyer en premier une commande <GetJunkFilters>.
    Cette commande contient la liste des filtres supportés (20k, 30k, 2x, 4x, etc.).
    Note : Sans cette commande, le serveur n'accepte aucune requête ultérieure.
  3. Synchronisation d'État :
    Le client doit ensuite envoyer un paquet <Status> COMPLET.
    Ce paquet doit contenir tous les attributs d'état (volume, position, mode, filtres, etc.). Un `<Status/>` vide ou partiel est ignoré.
  4. Mode "Push" (Flux) :
    Une fois la séquence d'init validée, le serveur ne répond pas aux requêtes.
    Le serveur envoie spontanément des paquets `<Status>` mis à jour uniquement lorsqu'un événement se produit (changement de piste, Play/Pause, changement de volume).

⚠️ Contrainte majeure : Le serveur semble gérer une seule connexion active à la fois. Si le client officiel est connecté, il bloque les autres connexions (ou empêche l'envoi de flux vers les nouveaux clients). Il faut impérativement fermer le client officiel pour tester un script tiers.



3. EXEMPLES DE TRAMES (HEXADÉCIMAL)

A. Commande d'Init (`GetJunkFilters`)
Code :
0F B4 C8 42 00 00 3C 3F 78 6D 6C ... (<?xml version="1.0"...) ... 3C 47 65 74 4A 75 6E 6B 46 69 6C 74 65 72 73 3E ... (<GetJunkFilters>...) ... 0A
En-tête observé : `0F B4 C8 42 00 00` (Variable)

B. Paquet de Données (Réponse Serveur / Push)
Contient les métadonnées : Titre, Artiste, Album, Bitrate, Position.
Code :
<Status ... state="2" song="Titre de la piste" artist="Artiste" ...>   <metadata bitrate="9216000" mime="audio/flac" ... /> </Status>



4. POINTS DE BLOCAGE & PISTES POUR LA SUITE
  • Génération de l'En-tête (Prioritaire) :
    Nous n'avons pas l'algorithme pour générer les octets 2 à 5 de l'en-tête. Ils changent à chaque connexion.
    Piste d'investigation : Capturer 3 connexions successives avec Wireshark et comparer les 6 premiers octets pour trouver la logique (incrément, timestamp, ou aléatoire).
  • Analyse du Binaire Client :
    Si l'algorithme est trop complexe, examiner l'exécutable du client HQP (`HQPClient.exe`) avec un outil comme Ghidra ou IDA Pro pour extraire la fonction de calcul de l'en-tête.
  • Contournement Web :
    Vérifier dans la configuration du serveur si une option "Web Interface" ou "Remote API" peut être activée sur un port HTTP (80/8080). Ce serait beaucoup plus simple à implémenter.



? Outils utilisés : Wireshark, PowerShell (.NET Sockets), Analyse Hexadécimale.
Conclusion : Le protocole est robuste mais "fermé". Il est possible de lire les flux (vol de connexion) si l'on parvient à simuler l'en-tête binaire valide et à envoyer la séquence d'init complète, mais le serveur reste muet si la moindre étape est incorrecte.
! Mon installation !
ROON + HQP / Hdplex H3-i5 > DST-00 Diretta > HOLO Spring 3 > SQM > Benchmark AHB2 / Wilson Benesch Square5


Messages dans ce sujet
RE: Le projet Tune, un concurrent à Roon, libre, gratuit et Français ? - par zaurux - 06-12-2026, 08:43 PM

Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  Tune — installation et dépannage sisyphe 103 3,100 Il y a 6 heures
Dernier message: Benjithom
  Roon volpone75 6,704 5,764,057 07-14-2026, 10:45 PM
Dernier message: bbill
  Tune en version béta C_MTA 1 836 05-18-2026, 11:51 AM
Dernier message: mishelinka
  TUNE = Nouveau logiciel de lecture - streaming gratuit Benarsky 2 985 05-11-2026, 10:45 PM
Dernier message: Steph44200
  Problème Roon vs Ropieee fabs35 9 2,036 12-29-2025, 08:22 PM
Dernier message: fabs35

Atteindre :


Utilisateur(s) parcourant ce sujet : 3 visiteur(s)