Hacking the SwisscomTV Box (Tatung STB3210)


#1

Ich habe hier eine alte SwisscomTV Box rumliegen.

Modell: Tatung STB3210

Am Netzwerk ist gemäss nmap nur der Port 8080 geöffnet, allerdings läuft da kein HTTP (jedenfalls kommt eine leere Response zurück).

Auf dem Board selbst gibt es jedoch einen Connector, der mit JUART1 beschriftet ist.

Mit herumprobieren bin ich auf folgende Pin-Belegung gekommen:

5: 3.3V
6: TX
9: 5V
10: GND

Baudrate: 115’200.

Output beim Booten:

--- Miniterm on /dev/ttyUSB0  115200,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
�␀
BCM74050011
012
K1
K2

K3

K4

K5

Shmoo Version=3.5
DDR Freq=0x0000018C
%00000001%
RC1=00000002
WC1=FFFFFFE6
RC2=00000016
WC2=00000031
RC3=0000000C
WC3=FFFFFFE4
RC4=0000000C
WC4=00000033
NWC=0000000B
RC5=00000003
WC5=0000000B
RC6=00000015
WC6=0000000B
NRC=0000000C
RW=00000013
WW=00000050
G=00000000 R=0000000C W=0000000B 
BL=00000000
RC1=00000003
RC2=00000014

BL=00000001
RC1=00000000
RC2=00000013

BL=00000002
RC1=00000004
RC2=00000016

BL=00000003
RC1=00000002
RC2=00000018

BL=00000004
RC1=00000005
RC2=00000016

BL=00000005
RC1=00000005
RC2=00000018

BL=00000006
RC1=00000000
RC2=00000012

BL=00000007
RC1=00000005
RC2=00000014
SCfC3
COPY CODE
COMPARE CODE
4567

BCM97405B1 BL1 v2.0, CFE core v2.9, Endian Mode: Little
BSECK VERSION: 3.0.0.0
Build Date: Thu Jun  2 18:39:13     2011
Copyright (C) Broadcom & Tatung Corporation.

microP firmware version: 3.9
␀
BCM74050011
012
K1
K2

K3

K4

K5

Shmoo Version=3.5
DDR Freq=0x0000018C
%00000001%
RC1=00000002
WC1=FFFFFFE8
RC2=00000016
WC2=00000033
RC3=0000000C
WC3=FFFFFFE4
RC4=0000000C
WC4=00000033
NWC=0000000B
RC5=00000003
WC5=0000000B
RC6=00000016
WC6=0000000B
NRC=0000000C
RW=00000014
WW=00000050
G=00000000 R=0000000C W=0000000B 
BL=00000000
RC1=00000003
RC2=00000013

BL=00000001
RC1=00000000
RC2=00000013

BL=00000002
RC1=00000003
RC2=00000016

BL=00000003
RC1=00000002
RC2=00000018

BL=00000004
RC1=00000005
RC2=00000016

BL=00000005
RC1=00000005
RC2=00000018

BL=00000006
RC1=00000000
RC2=00000012

BL=00000007
RC1=00000005
RC2=00000013
SCfC3
COPY CODE
COMPARE CODE
4567

BCM97405B1 BL1 v2.0, CFE core v2.9, Endian Mode: Little
BSECK VERSION: 3.0.0.0
Build Date: Thu Jun  2 18:39:13     2011
Copyright (C) Broadcom & Tatung Corporation.

microP firmware version: 3.9

BRCM74050011
cT1FVJ
|       Microsoft IPTV Bootloader --- Loader Module starting....

BRCM74050011
cTHD1FVJ
Microsoft IPTV Bootloader, build (8027)
Built by BM-DELL-212, Jun 12 2012 10:28:54

--- exit ---

Weiter bin ich bisher nicht gekommen. Wäre cool, wenn man da ein Linux draufflashen könnte :slight_smile:


#2

Den RX Pin habe ich bisher noch nicht gefunden… Gemäss diverser Links (siehe unten) müsste man mit CTRL+C oder ESC während dem Booten in die Shell kommen… Ev könnte man auch via TFTP die Firmware flashen.

Links:


#3

Hi!

Hab auch diese Box und ein wenig experimentiert.
Nach mir, ist der TX Pin genau gegenüber vom RX, jedoch hat es den Anschein, als ob die TX Funktion Software seitig abgeschaltet wurde.

Ist bei den Horizon Boxen genau so.

Gruss roema


#4

Hm, kommt man da irgendwie drum herum?


#5

Tja, der nächste Schritt war die Suche nach einem Jtag Interface. Leider hab ich nichts gefunden.

Ich werde wenn ich Zeit habe, den Nand auslöten und mit einem FT2232H einen Dump erstellen.

Reverse-Engineering-Flash-Memory-For-Fun-And-Benefit-WP.pdf (2,7 MB)


#6

hallo, kein Fortschritt?

wird cool mit Linux anpassen zu können


#7

Hi!

Ich hatte leider noch keine Zeit!
Ausserdem ist der Dump nur der halbe Weg :wink:

Werd die nächsten Wochen mal schauen.

lg roema


#8

Ausgezeichnet danke Ihnen für Ihre Antwort und viel Glück


#9

So, ich hab jetz mal den NAND ausgelötet.
Jetzt gehts ans lesen. Bin schon gespannt, ob das so funktioniert.


#10

So, ich konnte den NAND nun lesen, jetzt gehts ans analysieren.

Wie man sieht, 256MB. Jetzt werde ich mal nach einem Dateisystem suchen.

Die Kabel müssen so sein!


Radiocodes auslesen
#11

Vielen Dank für deine (vor) Arbeit.
Wie geht es weiter?

Hast du geplant ein (eigenes, offenes) Linux auf das Nand-Flash zu schreiben oder erhoffst du dir Infos zu offenen Schmittstellen?

Für das eigene Linux würdest du noch die config für den Device Tree benötigen, wenn ich mich nicht irre? (Kann man diese auslesen?)

Edit:
Nach dem ich das PDF von oben “Reverse-Engineering-Flash-Memory” gelesen haben, kann ich mir vorstellen, dass du eventuell nur den RX Pin der UART im Image freischalten und das Image zurück auf den Flash schreiben kannst.


#12

Hallo Wysil!

So einfach mit dem RX/TX Pin ist es leider nicht, zudem auf dieser Box kein Linux läuft.
Das erste Ziel wäre mal U-Boot zu installieren.

Momentan hab ich leider sehr wenig Zeit.
Ich kann aber das Projekt gerne jemanden übergeben.

lg Manu


#13

Die gedumpten Daten scheinen etwas beschädigt zu sein, ev. hilft erneutes auslesen?
Bei ca. der Adresse 0x00021900 gibt es ein paar lesbare Sachen: (wenn man die Bytes etwas swappt…)

1ff90 DriverConstructorNewCBCMSATAController
20000 isr handler
21290 BCM7038
21300 Mac Adresse
21390 KeyDrivers\BlockDevice\BINBlk ???
21500 OrigNameWindowsCE
21770 Boot count
21850 dhcpip, subnetmask, default gateway, etc.
220A0 Storage Manager
22130 FATFS

(~09000 offset zu dem vorhin, ev. die alten Einstellungen, Redundanz vor einem Update, o.Ä)

Zudem weitere gefundene interessante Zeichenfolgen. Bei den geswappten Bytes ein paar Nullen weggelassen, dann mit dem Tool namens “strings” folgende strings gefunden:
InjectDLL
WinCE501SnapShot
AllowSystemAccess
nk.exe
filesys.exe
device.exe
Launch
SYSTEM/BootPhase1
ceddk.dll
Read
Write
Close
IOControl
shimeng.dll
aygshell.dll
ddcore.dll
uspce.dll
Boot
CRC mismatch
efs und bhc sind ev fatfs filesysteme
Dlltcpstk.dll
AllowSystemAccess
FAT Version (6?)
Get


#14

Super Arbeit Luz!

Die gute Nachricht: Ich habe Fehler im Python Script gefunden (musste von python2 auf python3 switchen) und bin gerade dabei diese zu beheben. In Python3 haben sich ein paar Dinge geändert.

Eventuell kann ich noch einen “guten” Dump diese Woche liefern. Brauch aber etwas Zeit um zu testen. Werd mal ein paar Dumps erstellen und die Checksummen vergleichen. Sobald ich was habe, sende ich es dir.

Lg Manu


#15

Ok super Sache,
ich werde dann nach einem Filesystem auf dem Dump und auf dem geswappten Dump suchen.
Lg Luz


#16

Spitze!

Werd mal eine Platine bauen um die Leitungslängen kürzer zu machen, eventuell liegts ja wie du gesagt daran daran.

Hab noch gesehen, dass ich in der ECC Routine einen Fehler habe.

Lg Manu


#17

Ich vermute die Leitungslänge kann durch eine reduzierte Lesegeschwindigkeit kompensiert werden.
Ein PCB wäre natürlich schon cool :slight_smile:
Vielleicht könnte man die Platine sogar so machen, dass sie irgendwelche Kontaktstellen hat und der Chip dann fast schon “In-Circuit” programmiert werden könnte :slight_smile: Wäre aber einiges mehr Aufwand. :frowning:


#18

Ich habe den NAND wirklich langsam gelesen, hat fast 5 Stunden gedauert mit dem selben “schlechten” Ergebnis.
Hab bereits ein PCB gezeichnet, welches ich nächste Woche zum fertigen geben werde.

Wenn es also Wünsche gibt, einfach melden, noch kann ich es abändern.

Ist sehr einfach, man kann dann aber einen beliebigen Sockel und das FTDI Modul aufstecken. Werde euch ein PCB zusenden, vielleicht habt ihr ja mal vor, ein FTDI Modul und einen Sockel zu kaufen.

Ich habe das Hier: https://www.digikey.com/product-detail/en/ftdi-future-technology-devices-international-ltd/FT2232H-MINI-MODULE/768-1030-ND/2027252

und so einen 48 PIN DIL Sockel.

Das abgeänderte Python Tool kann ich euch auch senden sobald ich die Fehler beseitigt habe.

lg manu


#19

Hey

Ich dachte das Projekt sei aufgegeben. Ich habe diverse von den Dingern… auch einige mit eingebauten 500GB SATA HD’s.
Hilft euch so ein Teil mit HD vielleicht weiter? Ich bin grad am auseinandernehmen für mein RAID Projekt…

Was ist das Ziel? Linux/ Xbmc-Box?

P.S.: Die ältere Box ist auch vohanden. Hier haben die den JTAG gefunden: http://www.t-hack.com/forum/index.php?topic=491.0

Grüsse und Respect!
Thomas


#20

Hallo Thomas!

Danke für den Link! Ich glaube aber, dass es sich um eine andere Box handelt auf der Seite.

Ziel wäre natürlich ein Linux. Leider ist meine Box etwas beschädigt, darum wird es bei mir nichts mehr mit Linux :wink:

Ich wäre froh, wenn ich so eine STB3210 noch bekommen würde. (Liegen sicher zu Hauf im Elektronik Shrott)

Lg roema