Nachdem ich mich im vorherigen Beitrag über die Verwendung des Noxons als Last.fm Client ausgelassen habe, werde ich mich diesmal tiefer in die Interna des Streaming Clients wagen.
Genauer geht es um das Ersetzten / Erweitern der vTuner Stationsliste und das Hinzufügen eigener Services in das „My NOXON“ bzw. „Podcasts“ Menü.
Firmwareimage
Bei der Analyse des Firmwareimages mit dem Hexeditor bin ich auf einige URLs gestoßen (Offset 3962E4). Diese scheinen zum Update der Stationslisten und Favoriten vorgesehen zu sein.
Dabei scheint es zwei verschiedene Typen von URLs zu geben (dazu gleich mehr):
RadioNativeEntries
RadioNative01
RootName Podcasts
RootUrl http://radio567.vtuner.com/setupapp/radio567/asp/BrowseXML/navXML.asp?gofile=S-ByLocation
LoginUrl http://radio567.vtuner.com/setupapp/radio567/asp/BrowseXML/loginXML.asp?token=0
RetrieveFavsURL http://radio567.vtuner.com/setupapp/radio567/asp/BrowseXML/FavXML.asp?empty=&sFavName=My%5F%5FFavorites
RadioNative02
RootName My NOXON
RootUrl http://gatekeeper.my-noxon.net/RadioNative.php
LoginUrl http://gatekeeper.my-noxon.net/RadioNativeLogin.php
RetrieveFavsURL http://gatekeeper.my-noxon.net/RadioNativeFavorites.php
RadioNative03
RootName StarXed Services
RootUrl http://starxed.homelinux.org/radionative-multi/index.xml
LoginUrl http://noxonserver.de/RadioNativeLogin.php
RetrieveFavsURL http://starxed.homelinux.org/radionative-multi/favs.php
MultiRadioStationDB
MRSDB01
UserFriendlyName Internet Radio
url0 http://www.radio579.com/setupapp/bluewin/asp/rsdb/update.asp
Hier eine Kurze Beschreibung der zwei Typen:
- Es gibt eine dynamische Variante. Hier wird bei jedem Verzeichniswechsel innerhalb der „My NOXON“ & „Podcasts“ Ordnerstruktur ein neuer Request für die untergeordnete Ordnerstruktur gesendet (RadioNativeEntries). Der dritte Service „StarXed Services“ scheint deaktiviert worden zu sein. Die URL zeigt auf einen DynDns Account von Manfred Dreese, der Entwickler des Noxons.
- Und es gibt die statische Stationsliste von vtuner.com die etwa 10000 Stationen enthällt und meistens nur manuell geupdatet wird. Alle 10000 Stationen werden aufeinmal gesendet (ca. 5 MB). Die Stationen werden hierbei im Noxon gespeichert (MultiRadioStationDB).
Jeder Service besitzt auch eine Backup URL die benutzt wird, falls der standart URL nicht erreichbar ist.
Sniffing
Ein Mitsniffen des Netzwerkverkehrs des Noxon 2 Audio via ARP Poisoning konnte meine Vermutungen bestätigen. Das Noxon sendet je nach dem in welchem Menü man sich befindet zu dem jeweiligen Server einen HTTP-GET Request. Daraufhin erhällt es eine XML codierte Anwort die, die Stationen oder SubDirectories enthällt. An die URL werden per GET einige User spezifische Daten gehängt (hier am Beispiel der statischen Liste):
http://www.radio579.com/setupapp/bluewin/asp/rsdb/update.asp
?mac=001b9e****** <= MAC Adresse des Clients
&uid=C089E7AE6153F372B20EB7A5********
&ver=EMPTY
&xml=2.0
&mime=audio/mpeg-url
&sw=24.6392 <= Firmware Version
&bl=6166 <= Bootloader Version
&hw=158.0 <= Hardware Revision
&up=13693
&lang=ger <= Sprache
&st=15167
&rel=0
Die Antworten dieser beider Typen unterscheiden sich. Hier zwei Kurze Beispiele:
RadioNativeEntry (dynamische Services):
< ?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?>
-
Display
Your Streaming device is unknown! Please register at www.besonic.com!
-
Dir
Demo playlists
http://gatekeeper.my-noxon.net/RadioNative.php?service=1&node=playlist&token=215385555997023
true
-
Station
Ellen_Klinghammer - Mess - live *sample*
http://webservices.besonic.com/audio/00-1b-9e-22-e9-ec/124122.mp3
http://gatekeeper.my-noxon.net/RadioNative.php?service=10002&node=21cb40ef2acb0b15e2eea1c731de4472&token=08920a9358128a9
MultiRadioStationDB (statische Stationsliste):
< ?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
2.0
vTuner
http://www.radio579.com/setupapp/bluewin/asp/rsdb/update.asp
PREMIUM
1
Last.fm Proxy
Just a Proxy for the Social Music Network Last.fm
96
http://87.230.33.74:[port]/lastfm.mp3?pw=[pw]&user=[user]
m3u
1
Stations Liste modifizieren
Die Antwort der statischen Liste besitzt jedoch im Zweig <station_db> -> <database_info> ein Element <server_url> das die URL des Requests enthällt.
Durch DNS Spoofing ist es mir gelungen die Anfrage an www.radio579.com auf einen eigenen Server umzuleiten und so eine eigene Stationsliste ins Noxon zu laden. Ändert man in der eigenen Antwort den Inhalt des <server_url> Elements wird das DNS Spoofing für künftige Updatevorgänge überflüssig. Das Noxon speichert die empfange Server URL intern und greift später wieder darauf zurück, wenn es die Liste wieder updaten möchte. Erst nach einem Firmwareupdate / Reset wird wieder vom vTuner Server geupdated.
Service hinzufügen
Die URL der drei „RadioNative“-Eintrage lassen sich ohne Firmwaremodifikation nicht so einfach ändern. Die Verwaltung der Einträge im „Podcasts“-Menü läuft wieder über vTuner. Die Einträge im „my NOXON“-Menü werden über die my-noxon.net Website geupdated und verwaltet. Manfred Dreese, der Entwickler des Noxons, hat auf seiner Website ein inoffizielles Projekt für die Integration des Ampache Medienservers ins Noxon Menü veröffentlicht. Die in diesem Projekt enthaltene PHP Klasse lassen sich durch entsprechende Modifikationen auch für die Integration eigener Menüs verwenden. Die angesprochene Klasse trägt den eigenen Service mit einer entsprechenden URL auf der my-noxon.net Webseite ein. Alles was innerhalb des eigenen Services angezeigt wird, läuft über die eigene URL.