24. Nov 2024, 08:50

TFTP ansatz

Started by asgard, 19. Jan 2008, 15:47

previous topic - next topic
Go Down

asgard

Hey Redband,

we can upload a NK.bin to the box. But unfortunately the box reject it and says "Fehler".

We also tried an unpatched/unmodified version...but we have the same problem.

asgard



selbes Problem...es erscheint "fehler" auf dem Display und ein rotes Kreuz bzw. X auf dem Fernseher


Und am seriellen Port? Kommt da immer noch "HALTING" raus?


hab grad kein seriell mehr angeschlossen...sorry :(

redband

Did you try a renamed version?  eg called boot.bin?

mce2222

#33
19. Jan 2008, 23:31 Last Edit: 20. Jan 2008, 00:15 by mce2222
@redband   I am quite sure that you are right. Haven't tried the netbooting yet, but I see in the bootloader code, that there is a string "boot.bin" and I also see that the TFTP server is initialised with handling methods, based on the transfered filename.
when there is no handler for the filename, it will just fail to process the transmitted data.


EDIT:
ok. now I realise that there are two netbooting methods in the bootloader.  one is the standard WinCE edbg boot, which redband also refers to.
but the second is something that is totally different, since it actively downloads a NK.BIN from a fixed IP address.

I have no idea how to enable the standard WinCE netbooting code.
anyway... this  active NK.BIN download also goes thru the signature check... so there is nothing gained.

robert_s

Wo siehst Du das denn bitte? Ich sehe in den Packetdumps jedenfalls nur, dass der Receiver per TFTP die Datei "NK.BIN" anfordert. Und da der TFTP-Server soweit ich das sehe keinen Dateinamen übermitteln kann, gibt es da keine Möglichkeit, irgendetwas unter dem Namen "boot.bin" zu übertragen...

Übrigens wird dieser "NETBOOT" mit den GPIO-Pins 19, 30 und 31 ausgelöst:

GPIO-Pins 30 und 19 ergeben die "Board ID", GPIO-Pin 31 triggert dann abhängig von dieser den NETBOOT:

30=1/19=0 -> ungültig (kein NETBOOT möglich)
30=1/19=1 -> Board ID = 1 (kein NetBOOT möglich)
30=0/19=0 -> Board ID = 2, NETBOOT wenn 31=1
30=0/19=1 -> Board ID = 3, NETBOOT wenn 31=0

Die "Board ID" wird an einigen Stellen im Bootloader benutzt, aber was sie genau bedeutet ist mir nicht ganz klar. Auch weiss ich nicht, welchen GPIO-Pin der JP2 eigentlich verändert...

robert_s

#35
20. Jan 2008, 00:28 Last Edit: 20. Jan 2008, 00:31 by robert_s

this  active NK.BIN download also goes thru the signature check... so there is nothing gained.

Der scheint mir aber nur noch durch den zweiten Check zu gehen, welcher sich durch eine 1 an der Adresse 0x937E1728 deaktivieren lässt. Also zumindest hätte man dadurch:

1) Einen vereinfachten Patch
2) Einen besseren Patchzeitpunkt (während des NK.BIN-Downloads)

gewonnen. Und wenn man dann noch herausfände, ob es nicht vielleicht doch irgendeine vorgesehene Möglichkeit gibt, die Adresse 0x937E1728 auf 1 zu setzen...

P.S.: Muss [0x937E1728] eigentlich 1 oder != 1 sein, um den Signaturcheck zu überspringen...!?

robert_s

P.P.S.: Am Signaturcheck kann's aber nicht liegen bei @asgard, schliesslich hat der die Original NK.BIN's probiert, da hätte die Signatur also passen müssen...

robert_s

Noch ein Followup: Soweit ich den Code verstehe, wird nach erfolgreichem TFTP-Download von NK.BIN eine 1 nach 0x1C($sp) geschrieben. An 0x9363FF5C (BL 1051) wird dieser Wert überprüft und bei != 0 wird die Stelle übersprungen, die @mce2222's Bootloader-Patcher gepatcht hat - allerdings gleich zu "HALTING" :(

Hmm, da ist vorher ein Unterprogrammaufruf, auf dessen Ergebnis hin er das "HALTING" ausgibt oder nicht - und das sieht nach der Zerlegung von "dra" aus.

@asgard, könntest Du mal probieren, die komplette "dra" Datei (falls Du sie nicht hast, einfach mit "TFTP -i discovery.iptv.t-online.de GET dra" laden) in "NK.BIN" umzubenennen und diese der Box anzubieten...?

mce2222


Wo siehst Du das denn bitte? Ich sehe in den Packetdumps jedenfalls nur, dass der Receiver per TFTP die Datei "NK.BIN" anfordert. Und da der TFTP-Server soweit ich das sehe keinen Dateinamen übermitteln kann, gibt es da keine Möglichkeit, irgendetwas unter dem Namen "boot.bin" zu übertragen...


worauf sich redband bezieht ist der WinCE netboot... dort schickt das device eine "bootme" Anfrage per UDP multicast raus und ein beliebiger Rechner kann dann per TFTP einen Kernel hochladen .. dabei muss der Name boot.bin sein.

wie schon gesagt... das hat mit dem aktiven download von der box selbst nichts zu tun.


Die "Board ID" wird an einigen Stellen im Bootloader benutzt, aber was sie genau bedeutet ist mir nicht ganz klar. Auch weiss ich nicht, welchen GPIO-Pin der JP2 eigentlich verändert...


der bootloader wird für alle MS IPTV boxen verwendet... daher die Unterscheidung in der Hardware.


Der scheint mir aber nur noch durch den zweiten Check zu gehen,


es gibt immer nur einen Signaturcheck. Der Zweite den du meinst ist ausschliesslich für den DesasterRecovery Fall... der lässt sich nicht abschalten, aber der wird durch meinen Patch auch nie ausgeführt.



1) Einen vereinfachten Patch
2) Einen besseren Patchzeitpunkt (während des NK.BIN-Downloads)


erscheint mir eher komplizierter... da braucht man dann noch die passenden IP + TFTP server.
an nem besseren Patch bin ich schon dran.



ob es nicht vielleicht doch irgendeine vorgesehene Möglichkeit gibt, die Adresse 0x937E1728 auf 1 zu setzen...
P.S.: Muss [0x937E1728] eigentlich 1 oder != 1 sein, um den Signaturcheck zu überspringen...!?


1 == skip signatur check
... wie der "richtige" Weg ist, die Addresse auf 1 zu setzen ist mir auch nicht klar.
theoretisch, könnte man das NK.BIN so modifizieren, dass ein zusätzliches Modul eingefügt wird was zufälligerweise genau an die SignaturCheck Addresse geladen wird und 4 bytes lang ist. Ich glaube kaum das in der Loader routine gecheckt wird ob die einzelnen Module innerhalb des vorher definierten Speicherbereichs liegen ;)

das könnte klappen, nur gibt es leider keine guten tools um soetwas in ein NK.BIN einzufügen. zumal es ja eigentlich auch ein defektes NK.BIN wäre wenn man es genau nimmt.


P.P.S.: Am Signaturcheck kann's aber nicht liegen bei @asgard, schliesslich hat der die Original NK.BIN's probiert, da hätte die Signatur also passen müssen...


da bin ich mir nicht sicher... falls die boot.sig Datei gar nicht geladen wird, weil ja netboot benutzt wird, dann ist der hashwert wahrscheinlich 00000000000000....
wäre ja Unsinn den Wert aus der boot.sig zu nehmen.


robert_s

#39
20. Jan 2008, 02:56 Last Edit: 20. Jan 2008, 03:00 by robert_s


P.S.: Muss [0x937E1728] eigentlich 1 oder != 1 sein, um den Signaturcheck zu überspringen...!?


1 == skip signatur check


Verstehe ich nicht ganz:

Code: [Select]
lw      $v0, 0x937E1728
bne     $v0, $s7, 0x93640014


$s7 ist mit 1 vorgeladen. Also wenn *0x937E1728 != 1 ist wird nach 0x93640014 gesprungen. Dort soll erst der Signaturcheck sein!? Ich dachte immer der wäre in dem Code ab 0x9363FF88... :(

Kannst Du mal kurz schreiben, welches Codesegment bzw. welche Aufrufe eigentlich den Signaturcheck durchführen (bei BL 1051)? Ich tappe irgendwie noch im Dustern... :(

asgard


@asgard, könntest Du mal probieren, die komplette "dra" Datei (falls Du sie nicht hast, einfach mit "TFTP -i discovery.iptv.t-online.de GET dra" laden) in "NK.BIN" umzubenennen und diese der Box anzubieten...?


das scheint zu funktionieren...nach dem er das file hat, kommen die 2 Zahnräder von der desaster-recovery...siehe foto...

mce2222

macht auch Sinn, denn in der Datei ist eine eigene boot.sig dabei, die zum NK.BIN passt.

asgard

#42
20. Jan 2008, 07:42 Last Edit: 20. Jan 2008, 11:04 by asgard
Haben wir evtl. noch andere Dra-files...also von anderen boxen, zum testen?

zum beispiel von btopenworld.com ?

Uwe_P

Habe jetzt auch mal diverse Tests mit der 301er bzgl. TFTP gemacht. Hier die Ergebnisse:

Mit gesetztem JP2 (bei der 301er JP11) funktioniert TFTP nicht. Die Anfragen gehen alle an 0.0.0.0. Das wird so schlecht funktionieren. Also Plan B...

ohne JP11
Ich habe einen DNS Server aufgesetzt (gleiche Adresse wie TFTP). 2 Hosts müssen bekannt sein (discovery.iptv.t-online.de und cgbf01001.iptv.t-online.de). Für den zweiten Host habe ich einen Alias zum ersten gebaut.
Ergebnis:
nach ca. 10 sekunden zeigt die Box "T-Home" (über Video die zwei Zahnräder), soll heißen, daß alles über TFTP erfolgreich geladen wurde.
Jetzt versucht die Box HTTP Anfragen an den T-Home Server zu senden (versucht wahrscheinlich die Oberfläche zu laden).

Gruß Uwe

asgard

Hi,

soweit bin ich auch,...selbes vorgehen wie du (bis auf das tftp)...
jetzt hängt er bei mir an dieser stelle.
er will cgbf01001.iptv.t-online.de/bootstrap/Bootstrap.asmx aufrufen..diese datei gibt es bei mir aber nicht (auf dem webserver).
Ausserdem weiss ich nicht, was hier erwartet wird bzw. was der rückgabewert sein soll.

Kann mir da jemand weiterhelfen?

Go Up