Noxon 2 Audio Interna

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" ?>
<listofitems>
	<item>
		<itemtype>Display</itemtype>
		<display>Your Streaming device is unknown! Please register at www.besonic.com!</display>
	</item>
	<item>
		<itemtype>Dir</itemtype>
		<title>Demo playlists</title>
		<urldir>http://gatekeeper.my-noxon.net/RadioNative.php?service=1&node=playlist&token=215385555997023</urldir>
		<noaudiocontent>true</noaudiocontent>
		<urldirbackup></urldirbackup>
		<bookmarkshow></bookmarkshow>
	</item>
	<item>
		<itemtype>Station</itemtype>
		<stationid></stationid>
		<stationname>Ellen_Klinghammer - Mess - live *sample*</stationname>
		<stationurl>http://webservices.besonic.com/audio/00-1b-9e-22-e9-ec/124122.mp3</stationurl>
		<stationdesc></stationdesc>
		<stationformat></stationformat>
		<stationlocation></stationlocation>
		<stationbandwidth></stationbandwidth>
		<stationmime></stationmime>
		<bookmark>http://gatekeeper.my-noxon.net/RadioNative.php?service=10002&node=21cb40ef2acb0b15e2eea1c731de4472&token=08920a9358128a9</bookmark>
	</item>
</listofitems>

MultiRadioStationDB (statische Stationsliste):

< ?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<station_db version="2008-09-10T11:00:50Z" format_version="2.0" station_count="11337">
	<database_info>
		<format_version>2.0</format_version>
		<name>vTuner</name>
		<server_url>http://www.radio579.com/setupapp/bluewin/asp/rsdb/update.asp</server_url>
		<service>PREMIUM</service>
	</database_info>
	<station_list>
		<station>
			<id>1</id>
			<station_name size_limit="off">Last.fm Proxy</station_name>
			<description>Just a Proxy for the Social Music Network Last.fm</description>
			<bw>96</bw>
			<url>http://87.230.33.74:[port]/lastfm.mp3?pw=[pw]&amp;user=[user]</url>
			<mime_type>m3u</mime_type>
		</station>
	</station_list>
	<directory_list>
		<dir name="Internet Radio" subdir_count="1" station_count="0" >
			</dir><dir name="Dir" subdir_count="1" station_count="0" >
				</dir><dir name="Subdir" subdir_count="0" station_count="1" >
					<station>1</station>
				</dir>
 
 
	</directory_list>
</station_db>

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.