Forum: Mikrocontroller und Digitale Elektronik MSP430 - Quellcode gegen Auslesen schützen


von Rai (Gast)


Lesenswert?

Hallo an alle,

Ich habe ein fertiges Programm auf einem MSP430 zu laufen. Benutzen tue 
ich das eZ430-RF2500 Development Tool.

Ich möchte diesen Code gegen Auslesen mit einem Passwort schützen, falls 
dieses in der fertigen Applkation versucht wird.

Habe Diverses über BSL und BSL Script Language gelesen, verstehe es 
jedoch nicht ganz!

Wie binde ich das BSL in den Quellcode ein?? Wie setzt man das 
Passwort??
Wie wird es dann abgefragt?? Was hat es mit den .txt Datein auf sich ???

Kann jemand konkrete Beispiele geben??? Diverse SLAAXX habe ich auch 
schon gelesen, aber irgendwie fehlt mir der Einstieg

Für Hilfe wäre ich dankbar

MFG

von Christian R. (supachris)


Lesenswert?

Naja, zuerst mal musst du die JTAG Fuse durchbrennen. Dann ist der 
Zugang nur noch per BSL möglich. BSL ist der Bootstrap Loader und der 
ist fest und nicht löschbar in jedem MSP430 eingebaut. Und wenn man dann 
den Chip auslesen will, braucht man das Passwort. Bei den älteren 
Versionen war das einfach der komplette Interrupt-Vektor-Speicher, bei 
den neuen MSPs gibts ein extra generierbares Passwort. Näheres findest 
du hier: 
http://focus.ti.com/mcu/docs/mcusupporttechdocsc.tsp?sectionId=96&tabId=1502&abstractName=slaa089e
Ohne das Passwort kann man (zumindest bei den alten) den Chip nur 
löschen. Ich glaub bei den neuen kann man selbst das noch unterbinden.

von Karl-heinz S. (cletus)


Lesenswert?

Christian R. wrote:

> Ohne das Passwort kann man (zumindest bei den alten) den Chip nur
> löschen. Ich glaub bei den neuen kann man selbst das noch unterbinden.

Es gab auf dem letzten CCC ( http://events.ccc.de/congress/ ) einen 
Vortrag, in dem beschrieben wurde, wie man das Kennwort bei einigen MSPs 
aus dem BSL rauskitzeln kann.

von Christian R. (supachris)


Lesenswert?

Richtig, klappt aber nur bei den alten, mit dem Pseudo-Passwort.

von Rai (Gast)


Lesenswert?

Danke erstmal--

In der von Christian R. angegeben Datei unter 3.7 steht:

The password itself consists of the 16 interrupt vectors located at 
addresses FFE0h to FFFFh (256 bits)

Wo programmiert man die genau rein?? in die main, header, extra datei??
Wie könnte sowas programmiert aussehen??
Sind das dann 16 Register??

MFG

von Christian R. (supachris)


Lesenswert?

Die musst du nirgends reinprogrammieren, das ist in deinem Programm 
automatisch drin. Nur wenn man das Original-File hat, was der Kompiler 
ausspuckt, kann man auch auslesen. Bei den alten mit dieser Technik 
lässt sich kein eigenes Passwort vergeben. Diese 256 Bit sind die 
Interrupt Vektor Tabelle, die dürfte bei jedem Programm anders aussehen, 
weil der Linker ja deinen Code für die ISRs nach Gutdünken im 
Programmspeicher verteilen kann. Du musst also gar nix machen. Nur 
darfst du dem Kunden nicht das Hex-File geben, dann könnte er den Chip 
auch auslesen. Macht ja aber keinen Sinn dann.

Achja, zu deiner Frage ganz oben. Das TI-Text File ist ein ASCII File, 
was den kompletten Programmcode enthält. Mit den üblichen Tools für den 
MSP430 kannst du das erstellen lassen. Zum Programmieren kannst du dann 
das Tool MSPFET nehmen.

von Rai (Gast)


Lesenswert?

Programmiert habe ich mit dem Tool Code Composer. Damit wird auch der 
Code auf den MSP430 gespielt.

Ich muss also dafür sorgen, dass der Code im TI-Text File vorliegt!
Ich habe hier mal ein Beispiel Prog!!

Example Script to invoke BSL, upload RAM BSL, download data faster:

INIT_COMM 5438 COM1
INVOKE_BSL
TX_BUFFER_SIZE
RX_PASSWORD Pass.txt
RX_DATA_BLOCK RAM_BSL.txt
SET_PC 0x220
CHANGE_BAUD_RATE 153600
TX_DATA_BLOCK 0xC000 0x100 output.txt
CLOSE_COMM

Versteh ich das richtig, dass mein richtiges Programm mit dem Befehl 
RX_DATA_BLOCK RAM_BSL.txt raufgespielt wird?(später dann natürlich 
angepasst)????

Kann ich das mit dem Code Composer irgendwie machen???
Kann ich das mit MSPFET machen??
Wie kriege ich das Passwort file????
Wo müssen die .txt Files hin??

Kann mir einer eine grobe step by step Faden geben, wie das alles 
miteinander verknüpft werden muss

MFG

von Christian R. (supachris)


Lesenswert?

Es gibt kein Passwort File. Das Passwort ist das Programm selbst (bzw. 
die letzten 32 Byte). Nur wenn man ohnehin das komplette File hat, kann 
man den MSP auslesen. Im Code Composer 3 kannst du bei PostBuild Step 
bei den Projektoptionen einstellen, dass er das TI-Text File erstellt. 
Am einfachsten machst du das dann per MSPFET in den MSP. Macht aber nur 
Sinn in der Produktion dann, wenn die JTAG Fuse durchgebrannt ist. 
Normal kannst du ja erst mal mit JTAG arbeiten.

von Arno H. (arno_h)


Angehängte Dateien:

Lesenswert?

Der Programmer von elprotronic kann ein Password erstellen, indem die 
nicht benutzten Bytes mit eigenen Werten beschrieben werden.
Ausserdem kann man verschiedene Methoden beim Zugriff mit falschem PW 
einstellen: Ignorieren, Speicher löschen oder den µC komplett sperren.
Ich habe mal einen Screenshot angehängt.

Arno

von Rai (Gast)


Lesenswert?

Also ich habe jetzt in den Post Build Steps das hier eingestellt!!

Create flash image: TI-TXT

Das Programm wird auf den MSP gespielt.

Wo legt er jetzt das TI-TXT File ab?? Kann es nicht finden

von Christian R. (supachris)


Lesenswert?

Im Projektverzeichnis und dann Debug oder Release. Je nachdem, welche 
Build-Konfiguration du gerade ausgewählt hast. Also da, wo auch das 
aktuelle .out File liegt.

von Rai (Gast)


Lesenswert?

Ok super--das prog liegt jetzt im TI-TXT File vor !!!

Aus einem englischen Forum heißt es:

I'm wondering what the format for the password text file should be.....I
know it consists of the 16 interrupt vectors located at FFE0h through
FFFFh, but how should the data in the file be formatted?

If you tell the Linker to generate TI-TXT formatted output when you
compile/assemble/link your original code.

The last three lines of the output ???.txt file is what you need for the 
password.txt file.

@ffe4
XX XX
@fff2
XX XX
@fffe
XX XX
q

Wie muss ich jetzt weiter vorgehen

von Christian R. (supachris)


Lesenswert?

Was genau willst du denn machen? Das ist alles so konfus bei dir. Ich 
denke, du überspielst die Software mit dem CCE3 und dem JTAG Debugger? 
Bist du denn mit der Entwicklung komplett fertig und willst das Gerät 
jetzt verkaufen, oder wie? Wenn du den MSP430 gegen auslesen schützt, 
ist das unwiderruflich, man kann dann diesen Chip nie wieder per 
JTAG ansprechen. Nix debuggen, nix schreiben, nix lesen.
Wenn du das wirklich willst: Das geht im CCE3 so: Taget -> Make Secure.
Aber du brauchst ja dann zum Programmieren erst mal eine BSL Hardware, 
das geht nicht mit dem JTAG Teil. Hast du die überhaupt?

von Rai (Gast)


Lesenswert?

Der Code ist fertig !!

Ich benutzte das eZ430-RF2500 Development Tool. Das besteht aus 2 
Boards, Eins wo der MSP drauf ist und ein USB Board. Das USB Board ist 
verbunden mit dem PC wo mit CCE2 progammiert wird.
Die Schnittstelle zwischen USB Board und MSP Board ist eine Spy-Bi Wire 
& MSP Application UART Schnittstelle.
Die gleiche Schnittstelle ist auf der fertigen Plantine zu finden, womit 
man den Code raufspielt.

Die JTAG soll NICHT durchgebrannt werden !!Völlig egal was mit der ist!

Es soll lediglich die Variante mit BSL da rein, mit diesem Passwort !!!

BSL Hardware habe ich NICHT !!! Nur die 2 Boards !! Ist diese zwingend 
nötig???? Hoffe es ist jetzt etwas klarer !!!

von Christian R. (supachris)


Lesenswert?

Du hast es noch nicht kapiert. Lies endlich mal die Dokus. Solange die 
JTAG Fuse nicht durchgebrannt ist, kann jeder den Code auslesen. Die 
BSl-Variante ist kein anderer Code, das ist genau der selbe Hex-Code wie 
das File, was per JTAG reingespielt wird.

Nochmal: Es gibt kein extra BSL-Code File und kein Passwort. Das 
Passwort ist der Code selbst. Und der ist gleich, egal ob JTAG oder BSL.

Der BSL ist ein Bootloader, der gänzlich anders angesprochen wird, als 
JTAG. Sowohl elektrisch als auch softwareseitig. Aber solnage du das 
JTAG Interface nicht durchbrennst, hat das alles keinen Sinn.
Und benutze bitte CCE3, die Version 2 ist total buggy und wird auch 
nicht mehr supportet.

Wenn du die Spy-Bi-Wire Schnittstelle als einzige zum Programmieren auf 
dem fertigen Board hast, kannst du den Chip nur gegen Auslesen schützen, 
wenn du die Fuse durchbrennst. Aber kann kommst du überhaupt gar nicht 
mehr ran. Designfehler deinerseits.

von Rai (Gast)


Lesenswert?

Ich weiß, dass es keinen Sinn macht !!

Stell Dir folgendes nicht Sinvolles vor:

1.Wenn es einer über JTAG den Code rausholt, ist es völlig egal. Soll er 
machen.

2.Wenn einer es über BSL versucht, soll es aber NICHT gehen.

Geht die 2. Variante in den MSP zu kriegen??

von Christian R. (supachris)


Lesenswert?

Rai wrote:
> Ich weiß, dass es keinen Sinn macht !!
>
> Stell Dir folgendes nicht Sinvolles vor:
>
> 1.Wenn es einer über JTAG den Code rausholt, ist es völlig egal. Soll er
> machen.
>
> 2.Wenn einer es über BSL versucht, soll es aber NICHT gehen.
>
> Geht die 2. Variante in den MSP zu kriegen??

Für 2. musst du überhaupt gar nix machen. Du darfst ihm nur nicht das 
txt File geben. Wenn er das nicht hat, kommt er per BSL nicht ran. Macht 
aber wie du ja auch selber sagst, keinen Sinn, denn SBW oder JTAG geht 
ja trotzdem.

von vØllpfØsten (Gast)


Lesenswert?

JTAG sind Hackertoolz und per Gesetz verboten.

Der Typ ist doch merkbefreit.

von Karl-heinz S. (cletus)


Lesenswert?

Hi Rai,

Rai wrote:

> Stell Dir folgendes nicht Sinvolles vor:
>
> 1.Wenn es einer über JTAG den Code rausholt, ist es völlig egal. Soll er
> machen.
>
> 2.Wenn einer es über BSL versucht, soll es aber NICHT gehen.

Warum sollte man das so haben wollen?

Ich verstehe die Intention nicht.


Selbst die Bahn dachte mit den Call-A-Bikes, dass z.B. das komplette 
Eingießen gegen Auslesen helfen könnte und hat die Fuses teilweise nicht 
verbrannt.

Die Quittung gabs dann auch.

von Rai (Gast)


Lesenswert?

Gut!

Nehmen wir mal an, ich selber möchte das Prog vom MSP über BSL lesen.
Ich habe meine Plantine mit MSP, und das Hex-File.

Wie sieht Prozedur aus per BSL an den Code zu kommen und welche genaue 
Rolle spielt das HEX File dabei??

von Christian R. (supachris)


Lesenswert?

Beim Auslesen dient das hex oder txt File lediglich dazu, die letzten 32 
Byte als Passwort dem MSP430 zu schicken, damit der Flash-Inhalt 
ausgelesen werden kann. Das setzt aber erst mal einen BSL Programmer 
voraus, und die Möglichkeit, an die Pins zu kommen.
Wenn man das hex oder txt File aber sowieso hat, braucht man es nicht 
mehr auszulesen, ist also alles komplett sinnbefreit, was wir hier 
diskutieren.

Vereinfacht gesagt: Über BSL ist nur ein Vergleich des Flash-Inhaltes 
gegen ein hex oder txt File möglich. Sind die Files unterschiedlich, 
kommt man an den Flash-Inhalt nicht ran. Da das File das Passwort selbst 
ist, kannst du nur auslesen, was du ohnehin schon hast. Also kannst du 
es auch gleich sein lassen.

Mir ist allerdings immer noch völlig unklar, was du damit bezwecken 
willst. Nahezu jeder, der mit dem MSP430 arbeitet, hat einen JTAG 
Debugger, damit käme er immer noch an deine Software.

von Rai (Gast)


Lesenswert?

Danke für die tolle Aufklärung über BSL. Dass das Programm selber das 
Passwort ist, war mir anfangs nicht ganz klar. Dachte man muss das 
selber irgendwie definieren. Falls irgendeiner per BSL an den Code will, 
muss ich ihm also das TI-TEXT Hex File geben, ansonsten geht es nicht 
!!!!

Nur noch eine kurze Frage zum Schluss:

Der MSP sei jetzt fertig aufm PCB implementiert. Die JTAG Schnittstelle 
wurde nicht rausgelegt. Kommt man dann trotzdem super leicht an den 
Code???

von Christian R. (supachris)


Lesenswert?

Rai wrote:

> Nur noch eine kurze Frage zum Schluss:
>
> Der MSP sei jetzt fertig aufm PCB implementiert. Die JTAG Schnittstelle
> wurde nicht rausgelegt. Kommt man dann trotzdem super leicht an den
> Code???

Naja, Käbelchen an die Pins löten und fertig. Aber wie programmierst du 
ihn denn ohne die JTAG Schnittstelle? Du sprichst in Rätseln.

von Karl-heinz S. (cletus)


Lesenswert?

Rai wrote:

> Der MSP sei jetzt fertig aufm PCB implementiert. Die JTAG Schnittstelle
> wurde nicht rausgelegt. Kommt man dann trotzdem super leicht an den
> Code???

Naja, du musst schon lesen, was geschrieben wird.

Es gibt Leute, die Schleifen sich zur Not durch die Vergussmasse bis zum 
MSP vor, um dort dann ihr JTAG anschließen zu können.


Ich verstehe aber auf den Tod nicht, warum du nicht einfach die Fuse 
brennst und gut...

von Rai (Gast)


Lesenswert?

Wenn ich die JTAG Fuse durchbrennen lassen möchte !

An welchen Pins des MSP430 müßte welche Spannung anliegen??

von Christian R. (supachris)


Lesenswert?

Lies die Doku(SLAU138). Da stehts drin. Das maacht man nicht manuell, 
sondern über den JTAG-Debugger.

von Rai (Gast)


Lesenswert?

Ok, danke nochmals für die Auskünfte

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.