Ce midi, tentative de reverse engineering de mon 🎧️ Arctis 7 pour essayer de récupérer le niveau de batterie 😁️

⬇️

Pour commencer, on installe le SteelSeries Engine 3 sur une VM Windows, et on connecte le casque à la VM...

SSE3 reconnaît bien le casque affiche bien le niveau de batterie, cool ! 😊️

Maintenant on sort 🦈️ Wireshark pour voir ce que SSE3 et le casque se racontent sur le bus USB… 🕵️

Après quelques minutes d'analyse, il y a clairement une commande que SSE3 envoie en boucle, avec ce qui semble être le niveau de batterie en réponse… On touche au but ! 😏️

AFK je vais manger, ma quiche est prête... 🤤️

(mais on reprend juste après ! 😉️)

Fini de manger, on reprend... 😊️

On va essayer de reproduire les commandes du SSE3 et de lire la réponse du casque en 🐍️ Python... On va utiliser le module hidapi pour ça, c'est plus simple que de se taper directement libusb... 😅️

github.com/trezor/cython-hidap

On commence par tester vite fait dans une console interactive...

Yeah on récupère bien ce qu'on veut ! 😁️

On va faire un petit script 🐍️ Python pour récupérer l'info de manière un peu plus pratique... 😃️

Et voilà, en une pause déjeuner on peut arriver à lire le niveau de batterie d'un casque 😁️

Je ferais peut-être un article un peu plus détaillé sur le sujet dans les prochains jours, on verra si j'arrive à me motiver 😋️

@FLOZz Question à la con : comment détecter ce qui est une commande de ce qui ne l’est pas ?
Je cherche à faire de même avec mon Arctis 5 pour la gestion du sidetone & cie, mais le truc m’envoie des rafales de données (paquet de 5 sur une « commande » côté soft). Et les données sont imbittables, au début je pensais comme toi à du flag/level pour le niveau sonore, mais le truc en hexa varie étrangement sur les 4 niveaux possibles…

@aeris Globalement tout ce qui est envoyé au endpoint de contrôle est une commande. APrès faut encore déterminer où s'arrête le numéro de la commande et où commencent les paramètres.

Pour info, quand j'ai démarré mon casque, j'ai eu une avalanche de paquets que j'ai pas compris, mais à un moment le SSE3 à fini par renvoyer en boucle les mêmes 2 commandes sur lesquelles je me suis concentré.

Follow

@aeris
Si jamais t'as des screens de tes paquets capturés, je peux peut être y jeter un coup d'œil, des fois que j'y reconnaisse quelque chose 😅

· · Web · 0 · 0 · 0
Sign in to participate in the conversation
Mastodon

Server run by the main developers of the project 🐘 It is not focused on any particular niche interest - everyone is welcome as long as you follow our code of conduct!