Réveil matin et mise à jour!

Réveil matin et mise à jour!

Bon je me dépêche car suite à la mise à jour le m-cr611 marantz ne s’est pas allumé ce matin!!! Je suis donc ultra en retard…

Réveil m-cr611
En retard

Une fois que les enfants sont habillés on descend pour prendre le petit déjeuné. Bien sour vous imaginez bien que je m’empresse de jeter un coup d’oeil sur mon réveil…  parfait, l’ampli était simplement éteint…

Je repousse la configuration ce soir…

Chef… j’arrive…

Mise à jour….

Mise à jour…

Ce matin c’est le grand saut! Une mise à jour du firmware! donc nous allons bien voir si cette mise à jour corrige entre autre le problème du -| mDNS /!\ flood /!\ POC |-

mise à jour
mise à jour
update m-cr611
Mise à jour du m-cr611

Que dit le change log:

last updated 24.01.2018
Firmware Vers: 00.5C (MZ17-133, MCR611/N1B, N1GN, T1B, T1GN)
**************************************************************
1) Stability and bug fixes
2) Improvement to playback of specific internet radio stations.
Filename:- USB_MCR611N_CY920_100200090200-0008.zip

Stability and bug fixes ok cool une bonne nouvelle même s’ils ne sont pas très causants sur les bugs corrigés.  Je teste donc le mDND flood exactement comme sur la video  et… et… et non! L’ampli est toujours vulnérable! dommage!

Mais pour tout vous dire, je pense que marantz n’y est pour rien et ne pourra pas corriger ce problème en effet le mcr611 est équipé d’un chip DM870  de chez microchip. C’est lui qui gère notamment les interfaces réseaux donc qui implémente les protocoles  comme mDNS. Donc je pense que le bug vient plus de chez microchip…

-| mDNS /!\ flood /!\ POC |-

mdns flood preuve par le concept.

mdns flood,  si vous avez besoin  de remettre les choses dans le contexte alors allez relire ça => mdns-flood

Maintenant, j’aimerais bien voir si j’arrive à reproduire ce bug en envoyant moi même les requêtes mDNS, c’est plus fun!

Alors je vais utiliser scapy c’est un frameware python qui permet de forger ses propres paquets réseaux. Apres deux trois recherches google et le parcours de la documentation, j’arrive a forger ma trame:

send((IP(dst= »224.0.0.251″)/UDP(dport=5353)/DNS(qd=DNSQR(qtype= »PTR », qname= »_http._tcp.local. »))), count=120)

wireshark mdns googlecast
wireshark mdns googlecast

J’ai fais plusieurs tests et lors du premier, il m’a fallu uniquement 120 requetes pour déclancher le bug.

Une fois l’ampli rebooter et donc la mémoire vide, deux salves de 600 et boom. Vous remarquez qu’au premier envoie, on entend le son qui grésille vers la fin…

 

 

 

mDNS flood Android

mDNS

Vous vous souvenez du « fameux » bug googlecast mDNS? non! donc allez relire ça  BUG

Ce soir, je suis chez moi et j’écoute de la musique quand je décide de changer de morceau. J’attrape mon téléphone et j’appuie sur le bouton pour le déverrouiller et là, paff plus de musique!  Je ne sais pas pourquoi, je repense à ce fameux BUG et n’y une n’y deux, je décide de sniffer tout le trafic du M-CR611 avec wireshark. je configure mon switch et reboot mon ampli.

Je démarre wireshark… ok! du flux TCP de la webradio. Je prend mon téléphone (android) et j’appuie pour le déverrouiller… PAFF plus de son!!! je regarde mon wireshark et là BINGO une salve de requêtes mDNS!

wireshark mdns googlecast
wireshark mdns googlecast

je vois bien que mon téléphone cherche désespérément un chromecast et rapidement je compte environs 200 requêtes mDNS… avec ça même le chromecaste de voisine répond!!

En suivant, je tente de reproduire le BUG et vous savez quoi… ca marche! enfin ça plante!

En conclusion, certain routeurs sont impactés par ce bug mais quand on y pense qui est « responsable »? L’appareil qui envoie des (trop) de requêtes ou alors le récepteur qui n’est pas capable de maîtriser la gestion de sa mémoire?  Si à chaque requête vous utiliser de la mémoire et à la requête suivante vous utilisé un autre espace mémoire sans « recycler » les anciens! Il arrive quoi? et bien on remplit le buffer et la lecture du streaming s’arrête, par example…

 

 

Zeroconf mDNS

Zeroconf

Vous connaissez Zeroconf? C’est un ensemble de protocoles permettant aux différents appareils de pouvoir communiquer entre eux sans infrastructure serveur et donc plus besoin de serveur DNS! Vous comprenez le concept? 🙂

Par exemple quand votre téléphone veut connaitre l’IP d’un appareil pouvant diffuser de la musique par Spotify, il fera une requête mDNS sur le réseau pour le nom spotify.local ou un truc comme ça… Une fois qu’un appareil (le m-cr611 au piff) reconnaîtra son/le « nom » et  il répond et donne son adresse ip, plus d’autres informations.

A ce moment l’application spotify connait l’existant d’un appareil compatible. Apres le reste du protocol finit de faire le reste et vous pouvez diffuser le musique. 

Pour info les requêtes mDNS se feront sur l’IP multicast 224.0.0.251 cf RFC6762

Any DNS query for a name ending with ".local." MUST be sent to the
   mDNS IPv4 link-local multicast address 224.0.0.251 (or its IPv6
   equivalent FF02::FB).

 

De nombreux appareils fonctionnent avec ce protocol comme le chromecast:

wireshark mdns googlecast
wireshark mdns googlecast

Vous voyez un téléphone qui chercher un chromecast…

Réveil matin m-cr611

Réveil matin m-cr611

Cette semaine je me suis décidé: j’utilise l’option réveil matin du M-CR611. Programmation depuis le soft hifi remote. Simple efficace. Par contre, je regrette énormément que l’on ne puisse pas aussi programmer les jours de la semaine!

Résultat, vous êtes obligé d’arrêter le réveil pour le week-end et de ne pas oublier de le remettre dimanche soir , sinon, vous arriverez en retard lundi matin! Donc ce matin pas de problème, ma webradio se lance bien nikel… Par contre lorsque j’arrive devant l’ampli, j’ai un affichage inhabituel…

marantz m-cr611 bug
bug marantz m-cr611 bug