Communicatie Digicorder en Telenet
Geplaatst: 30 dec 2013, 13:51
Na de aanschaf van een nieuwe Digicorder (AD-2100) wou ik eens kijken of het mogelijk was de Digibox aan ons interne netwerk te koppelen, aangezien ik geen all-in-one modem (HGW) heb, om van de DLNA mogelijkheden gebruik te kunnen maken. Ik heb tevergeefs gezocht of anderen al een werkende oplossing hadden, maar voorlopig loopt het verkeer naar de Digicorder dus nog steeds over een VLAN dat dan op de router gebridged wordt met de WAN interface, zodat dat verkeer ongehinderd naar Telenet kan.
Na het systematisch monitoren van het netwerkverkeer van en (unicast) naar de Digicorder, heb ik een aantal zaken zien passeren die mogelijk anderen ook interesseren.
DHCP
De Digicorder verstuurt bij elk DHCP verzoek ook enkele eigen gegevens, vermoedelijk ter identificatie van de Digicorder:
SNMP
Buiten UPnP/DLNA (info te bekijken op poort 8080 van je Digicorder) ondersteunen de Digicorders blijkbaar ook SNMP v2c. De communicatie die ik gezien heb zijn voornamelijk get requests, maar ook — en dit maakt het mogelijk interessant — set requests, hoewel die laatste slechts op één welbepaalde OID werd uitgevoerd (zie SNMP+HTTP).
Buiten enkele standaard OIDs (zoals .system.sysUpTime) is er ook een heleboel informatie die zich onder de 1.3.6.1.4.1.23423 OID bevindt. De informatie in deze boom kan je bekomen met het snmpwalk commando en je vindt dan onder meer:
Het nagaan van interactiviteit op 'Mijn Telenet' lijkt ook te verlopen via SNMP, al verzenden ze wel hopen SNMP requests. Vandaar dat deze controle zo lang duurt en dat ze al eens durft te mislukken.
SNMP+HTTP
Dan is er nog de .13.1.0 OID die werd gebruikt voor set requests, maar enkel om de waarde van een token in te stellen tijdens HTTP communicatie met stbprv.prd.telenet-ops.be. Tijdens deze communicatie (waarvan ik slechts één burst gezien heb) werd er een heleboel informatie verstuurd naar Telenet via XML. Deze communicatie werd geïnitialiseerd door Telenet door een token in te stellen op .13.1.0. Vervolgens vroeg de Digicorder welke informatie verzocht werd bij dit token, waarna deze werd verzonden.
UDP via poort 1200 en 1600
Na elke DHCP DORA voert de Digicorder een tweede handshake uit via UDP. De poorten die hiervoor gebruikt worden zijn 1200 op de Digicorder (local) en 1600 (remote). Vervolgens wordt elke 15 minuten een pakketje verzonden, waarop een antwoord volgt.
Wireshark kent het protocol niet, en ik raak er ook niet echt uit. Wat ik echter wel heb kunnen ontrafelen, is dat elke UDP payload uit een veelvoud van 16 bytes bestaat, waarvan de eerste 16 een header zijn met de volgende velden:
Deze header wordt gevolgd door een binaire payload, maar hier heb ik nog niet veel kunnen uit afleiden. Vooraan in de verzonden payloads zit echter altijd het MAC adres van de Digicorder, dus waarschijnlijk is deze informatie niet versleuteld. Mogelijk is de rest van de data dan padding om aan een veelvoud van 16B te komen. De pakketten (buiten de handshake) bevatten gewoonlijk slechts een blok van 16B (en geen in de reply), maar ik heb ook één reply gezien waarbij zeer veel data (8.2kB) verzonden werd. Hierbij waren de flags ook anders dan bij andere communicatie.
Indien anderen meer (te) weten (komen) over dit protocol, laat maar horen! Ik vind het namelijk bijzonder intrigerend dat Telenet informatie verzendt die we niet kunnen ontcijferen, terwijl al de rest onversleuteld over standaard protocols verloopt.
HTTP
Bij DHCP werd een URL doorgegeven bij optie 224, met als omschrijving 'CSP'. Geen idee wat het juist betekend, maar mijn Digicorder gebruikt de URL alleszins. Vreemd genoeg echter op poort 8215 i.p.v. 8211. De HTTP headers zijn hier een pak minder uitgebreid dan deze van de communicatie uit SNMP+HTTP, wat erop kan duiden dat dit verschillende applicaties zijn.
Het betreft hier enkelvoudige POSTs op de URL http://10.16.2.7:8215/IDTV/FrontController waarbij alle informatie wordt gecodeerd in een URL argument. Deze informatie komt soms overeen met diegene die ook via SNMP kan worden opgevraagd, maar wordt in dit geval actief verzonden naar Telenet. Vermoedelijk gebeurt dit na aanpassing van een instelling of opname. Ook wanneer aan de profielen iets wordt gewijzigd, wordt naar deze server informatie verzonden. Bemerk dat hierbij zowel de PIN code als het eventuele wachtwoord van een e-mailaccount (net zoals alle andere informatie) onversleuteld verzonden worden!
ARP
Eigenlijk geen communicatie van de Digicorder, maar iets wat je zelf kan doen. Wanneer je een ARP request verstuurt richting je modem, voor een IP in dezelfde range als de Digicorders, krijg je vaak een antwoord. Mogelijk kan je dan ook SNMP verzoeken versturen naar deze IPs, aangezien de Digicorders niet zo kieskeurig zijn wanneer het op SNMP verzoeken beantwoorden aankomt.
Telenet blijkt dus heel wat redundantie te hebben ingebouwd om bepaalde informatie te verkrijgen (HTTP, SNMP+HTTP, SNMP). Probeer gerust of je deze bevindingen kan reproduceren, of wat de verschillen zijn, en laat het ons dan vooral weten!
Na het systematisch monitoren van het netwerkverkeer van en (unicast) naar de Digicorder, heb ik een aantal zaken zien passeren die mogelijk anderen ook interesseren.
DHCP
De Digicorder verstuurt bij elk DHCP verzoek ook enkele eigen gegevens, vermoedelijk ter identificatie van de Digicorder:
- Optie 60: "DVBC.ADB5723"; modelnummer van de Digibox
- Optie 43: 8 velden met de strings "STB", "ADB5723", "ADB", enkele (vermoedelijke) versienummers, en het serienummer van de Digicorder
- Optie 12: host name: stb-XXXXXXXX
- Optie 224: CSP=10.16.2.7:8211
- Optie 225: 'INHOME' gateway ip lijst: http://195.130.128.104:8203/dhcp/DHCPoption.txt;60
SNMP
Buiten UPnP/DLNA (info te bekijken op poort 8080 van je Digicorder) ondersteunen de Digicorders blijkbaar ook SNMP v2c. De communicatie die ik gezien heb zijn voornamelijk get requests, maar ook — en dit maakt het mogelijk interessant — set requests, hoewel die laatste slechts op één welbepaalde OID werd uitgevoerd (zie SNMP+HTTP).
Buiten enkele standaard OIDs (zoals .system.sysUpTime) is er ook een heleboel informatie die zich onder de 1.3.6.1.4.1.23423 OID bevindt. De informatie in deze boom kan je bekomen met het snmpwalk commando en je vindt dan onder meer:
- .1.1: Osmosys softwareversie
- .1.6: Lijst van uitleesbare bestanden uit /proc en hun inhoud.
- .4: Lijst van tuners met al hun eigenschappen. Zoals te bekijken in het menu van je Digicorder, maar dan voor alle drie (twee) tuners apart.
- .5.1, .5.5.1: Info over de geïnstalleerde software, zoals getoond op je Digicorder.
- .5.3: Taalinstellingen (?)
- .5.5.3.2/.5.5.3.3: Aantal kanalen, gevolgd door een lijst van kanalen met tunerinfo.
- .6.1.2: Info over de harde schijf.
- .7.1: Status van de harde schijf en partities.
- .10.4, .10.5, .10.6: Standaardinstellingen voor opnames, opnames (gepland en uitgevoerd) en op te nemen series.
- .10.9.1: Lijst van alle kanalen: zendernummer en standaard nummer, beschikbaarheid...
- .10.9.2: Lijst van alle zenderpakketten: naam, beschikbaarheid...
Het nagaan van interactiviteit op 'Mijn Telenet' lijkt ook te verlopen via SNMP, al verzenden ze wel hopen SNMP requests. Vandaar dat deze controle zo lang duurt en dat ze al eens durft te mislukken.
SNMP+HTTP
Dan is er nog de .13.1.0 OID die werd gebruikt voor set requests, maar enkel om de waarde van een token in te stellen tijdens HTTP communicatie met stbprv.prd.telenet-ops.be. Tijdens deze communicatie (waarvan ik slechts één burst gezien heb) werd er een heleboel informatie verstuurd naar Telenet via XML. Deze communicatie werd geïnitialiseerd door Telenet door een token in te stellen op .13.1.0. Vervolgens vroeg de Digicorder welke informatie verzocht werd bij dit token, waarna deze werd verzonden.
UDP via poort 1200 en 1600
Na elke DHCP DORA voert de Digicorder een tweede handshake uit via UDP. De poorten die hiervoor gebruikt worden zijn 1200 op de Digicorder (local) en 1600 (remote). Vervolgens wordt elke 15 minuten een pakketje verzonden, waarop een antwoord volgt.
Wireshark kent het protocol niet, en ik raak er ook niet echt uit. Wat ik echter wel heb kunnen ontrafelen, is dat elke UDP payload uit een veelvoud van 16 bytes bestaat, waarvan de eerste 16 een header zijn met de volgende velden:
Code: Selecteer alles
0x00[1] Steeds '0x05'
0x01[3] Flags/request type?
0x04[4] Padding? (0x00)
0x08[2] Sequence number; +1 voor elk verzonden pakket (mogelijk geen short, maar int)
0x0A[4] UNIX timestamp (behalve indien request-type=0x00)
0x0D[2] Payload grootte in bytes (excl. header)
Indien anderen meer (te) weten (komen) over dit protocol, laat maar horen! Ik vind het namelijk bijzonder intrigerend dat Telenet informatie verzendt die we niet kunnen ontcijferen, terwijl al de rest onversleuteld over standaard protocols verloopt.

HTTP
Bij DHCP werd een URL doorgegeven bij optie 224, met als omschrijving 'CSP'. Geen idee wat het juist betekend, maar mijn Digicorder gebruikt de URL alleszins. Vreemd genoeg echter op poort 8215 i.p.v. 8211. De HTTP headers zijn hier een pak minder uitgebreid dan deze van de communicatie uit SNMP+HTTP, wat erop kan duiden dat dit verschillende applicaties zijn.
Het betreft hier enkelvoudige POSTs op de URL http://10.16.2.7:8215/IDTV/FrontController waarbij alle informatie wordt gecodeerd in een URL argument. Deze informatie komt soms overeen met diegene die ook via SNMP kan worden opgevraagd, maar wordt in dit geval actief verzonden naar Telenet. Vermoedelijk gebeurt dit na aanpassing van een instelling of opname. Ook wanneer aan de profielen iets wordt gewijzigd, wordt naar deze server informatie verzonden. Bemerk dat hierbij zowel de PIN code als het eventuele wachtwoord van een e-mailaccount (net zoals alle andere informatie) onversleuteld verzonden worden!
ARP
Eigenlijk geen communicatie van de Digicorder, maar iets wat je zelf kan doen. Wanneer je een ARP request verstuurt richting je modem, voor een IP in dezelfde range als de Digicorders, krijg je vaak een antwoord. Mogelijk kan je dan ook SNMP verzoeken versturen naar deze IPs, aangezien de Digicorders niet zo kieskeurig zijn wanneer het op SNMP verzoeken beantwoorden aankomt.
Telenet blijkt dus heel wat redundantie te hebben ingebouwd om bepaalde informatie te verkrijgen (HTTP, SNMP+HTTP, SNMP). Probeer gerust of je deze bevindingen kan reproduceren, of wat de verschillen zijn, en laat het ons dan vooral weten!
