Programm-Code vom Arduino laden?

Ist es möglich ein Programm, das auf dem Duemilanove ist, wieder runterzuladen? Und wenn ja, wie könnte man dies verhindern?

Hintergrund: Manchmal möchte man etwas für sich behalten. ;)

Das Runterladen ist schon ziemlich schwierig.

Wenn man was runterladen kann (es hängt von den Internen Einstellungen des Chips ab), dann ist es nur das HexFile also der compilierte Code.

Den Quelle Code den du vorliegen hast kann man nicht wieder herstellen.

Aus dem HexFile kann man zwar auch mit viel Aufwand wieder Code generieren, dort gibt es dann aber keine Kommentare, Klassen usw…

Im Prinzip verhindert man das nachträgliche Auslesen über die Lock Bits des Mikrocontrollers, wie man das aber in der Arduino-Welt umsetzt, kann ich dir nicht sagen. ;) Das Resultat nach dem Auslesen ist allerdings nicht mit deinem Quellcode vergleichbar, dass müsste dann eher Maschinensprache sein.

Nun sag schon, was hast du zu verbergen? ;)

Hallo WalterM Ich bin nicht Deiner Meinung.

Wir haben Arduino, weil andere ihr Wissen, Arbeit und die Ergebnisse ihrer Arbeit der Allgemeiheit gratis und zur allgemeinen Nutzung zur Verfügung stellen.

Darum ist es richtig, daß auch Du Deinen Beitrag der Allgemeinheit zur Verfügung stellst. Du darfst damit Geld verdienen mußt aber alles (HW und SW) pubblizieren (ist Teil der Lizenz mit der Arduino verbreitet wird).

Hätten die Entwickler des Arduino nicht das Projekt als Creative Commons Attribution-ShareAlike 3.0 License ( http://creativecommons.org/licenses/by-sa/3.0/ ) lizensiert, liege Arduino jetzt in irgendeiner Schublade der Firma Olivetti, die das Projekt auf der Uni in Ivrea sponsorisiert hatte.

Das Lock-Bit kannst du mit enem ISP-Programmierer setzten, aber beim zurücksetzen des Lockbits wird aller Code mitgelöscht.

Grüße Uwe

Hallo Uwefed,
klingt schon richtig persönlich wenn Du sagst: [ch8222]…dass auch Du Deinen Beitrag der Allgemeinheit zur Verfügung stellst[ch8220].
Das kann mir ja nun niemand vorwerfen, dass ich Dinge die ich entwickelt habe, nicht der Allgemeinheit frei zur Verfügung stelle. Genau wie Du hier im Arduino-Forum bin ich im DAVID-Forum mit vielen Beiträgen präsent. Z.B.:
http://www.david-laserscanner.com/forum/viewtopic.php?p=12366#p12366

und jetzt hier:
http://www.david-laserscanner.com/forum/viewtopic.php?f=6&t=2383

Es gibt aber auch Programme, die bessere Programmierer als ich für mich schreiben und die ihr Geld damit verdienen und nicht möchten, dass es kopiert wird. Glaube mir, alles was ich bisher entwickelt oder geschrieben habe und was Wert war veröffentlicht zu werden, habe ich auch publik gemacht.

Gruß,

Walter

P.S.: Dank Allen für die Beiträge zu meiner Thread-Frage.

Reverse Engineering & Disassembler: http://de.wikipedia.org/wiki/Disassembler http://de.wikipedia.org/wiki/Reverse_Engineering

Eben das was sich die sogenannte Crackerszene zu nutzen macht. Eben diejenigen welche aus Computerspielen die Kopierschutzabfrage entfernen ! Die gab es schon zu C64 Zeiten, ca. 1980, wie z.B. der CCC !

Zitat:

Cracker umgehen Zugriffsbarrieren von Computer- und Netzwerksystemen. Das beinhaltet das Aushebeln von Schutzmechanismen einer Software durch Cracking, von der widerrechtlichen Manipulation kommerzieller Software bis hin zu einer legalen Crackerszene begeisterter Programmierer, die mithilfe ihrer eigenen CrackMes einen Sport auf geistiger Ebene praktizieren.

Hinzu kommt dann noch die Emulatorprogrammiererszene wo ganze Computerspiele aus alten Videospielautomaten ausgelesen und emuliert werden. Wobei ich nicht von Telespielkonsolen sondern von Spielhallenautomaten rede. Z.B. http://de.wikipedia.org/wiki/M.A.M.E.

Man kann die Anfangsfrage also nur mit einem JA beantworten !

Ich denke mir mal das Profi-Assemblerprogrammierer so einiges können !

Manchmal möchte man etwas für sich behalten.

Dann behalte die OpenSource-Platform Arduino auch für dich, und entwickle propietäre Chips und den zugehörigen Vode die du dann nach Lust und Laune encrypten kannst.

Propietäre Chips ? Vode ?

Bitte kurze Begriffserklärung !

OpenSource ist ein Pool aus dem sich jeder bedienen kann und in dem jeder sein eigenes Wissen zum Wohle anderer mit einbringt. So sollte es auch bleiben ! Geheimniskrämerei ist mit OpenSource nicht im geringsten vereinbar !

propietär sollte proprietär heissen, Vode sollte Code heissen.

Soviel sollte deine interne Fehlerkorrektur schon noch funktionieren, wenn nicht - Threshold runterschrauben ;)

Das Wort Vode gibt es übrigens wirkklich. Das Vode ist ein alter mandalorianischer Kriegsgesang.

Entschuldige, aber ich habe das Wort proprietär noch nie zuvor gehört gehabt. Bedeutet also so viel wie unfrei !

Mensch du lieber Gott, hier wird ja richtig zurückschossen.

Apogee, hast Du denn meine Erklärung in # 4 nicht verstanden?

Von all meinen bisher ca. 40 Meldungen im deutschen und englischen Teil des Arduino-Forums waren insgesamt nur 2 Fragen. Sonst nur Beiträge. D.h. ich rufe hier nicht nur Wissen kostenlos ab, sondern versuchte auch etwas zum Forum mit beizutragen.

Ich komme ja ursprünglich aus der Bascom-Programmierecke, hab mir das Arduino-Board eher als reine Hardwarebasis zugelegt und wollte beliebige Mega8, Mega48, bis hin zum Mega328 über den ISP programmieren. Daher auch mein Verständnis für den Threadstarter. Letztlich muss ich aber uwefed Recht geben, wer komplett auf Open Source setzt (wie ich jetzt), sollte meines Erachtens auch einigermaßen "anständig" mit den eigenen Werken und Wertschöpfungen umgehen. Natürlich besteht keine Veröffentlichungspflicht, aber zusätzliche Sicherungsmaßnahmen reinzubasteln widerspricht dem Charakter des gesamten Projektes.

@WalterM Geht es Dir darum, dass keiner den Programmcode entschlüsseln kann? Oder willst Du verhindern, dass es 1:1 auf einen anderen Chip kopiert wird?

Hallo WalterM

Meine Antwort war keine persönliche Attake gegen Dich oder irgendein Vorwurf was Du gemacht oder nicht gemacht hast. Wenn das so rübergekommen ist entschuldige ich mich bei Dir. Ich will auch nicht richten, ob Du genug getan hast damit Dir geholfen werden darf. Mir gefällt ein Zitat eines Liedes von Konstantin Wecker sehr gut: "nur Du hast das Recht, Dein Richter zu sein".

Mir gefällt die Idee nicht, daß man auf den Ideen anderer aufbaut und dann das selbstgemachte geheimhalten will. Dies ist genau das Gegenteil von der Idee die hinter Arduino steht und mit der Arduino so populär geworden ist. Stimme voll mit dem letzten Beitrag von sth77 zu. "Für Dich behalten JA; Unterbinden daß andere es nutzen können NEIN"

Ich glaube es sind wenige in der Lage, den Code eines Sketches vom ATmega runterladen zu können. Die das Wissen dazu haben, haben auch das Wissen das Programm nachzuschreiben.

Grüße Uwe

Alle Aufregung hier war umsonst [ch8211] Es ist gerade von den Programmierern beschlossen worden, den Code um den es mir hier ging, im DAVID-Laserscanner-Forum zu veröffentlichen. Natürlich nicht wegen der Reaktion hier. Und ich werde dann den entsprechenden Schaltplan und die Gerätebeschreibung dazusetzen.

Nur, was mich hier verwundert hat, das war der Ton. Ich muß zugeben, so etwas war ich nicht gewoht. Natürlich ist ein Forum kein Streichelzoo, soll es auch nicht sein. Aber solche Reaktionen? Man lernt dazu.

Ich hoffe, dass ich mich trotz meines [ch8222]unmöglichen Vorhabens[ch8220] hier noch irgendwann mal sehen lassen kann und dass mir dann, lt. Uwefed, überhaupt geholfen werden darf.

Abschließend noch allen, die mir konstruktiv geantwortet haben, vielen Dank.

Walter

Der Ton war doch gar nicht so hart, wenn man sich den Thread nochmal durchliest. Ich denke, das hat eher mit deinem subjektiven Empfinden zu tun, dass dein Anfangsgedanke mehrheitlich abgelehnt wurde. Nichts desto trotz ist jeder Arduino-Jüngling ein gern gesehener Gast, das Helfen in der Gemeinschaft hat ja auch seine Reize, es eröffnet sowohl dem Leser als auch dem Helfer selbst neue Horizonte. ;) Also immer schön am Ball bleiben und uns über die Entwicklung berichten.

Um nochmal darauf zurück zu kommen. Ich habe einen Ausleseschutz über die Lockbits mit dem AVRDUDE gesetzt.

Kann man auch nachträglich noch setzen: avrdude -p m168 -c usbtiny -U lock:w:0x3C:m

Schon kommt beim auslesen nur noch Datenmüll raus. Und das Programm kann nicht mehr so einfach kopiert werden.

Hallo Optikorakel

Zuerst klarstellen: das soll kein Angriff auf Dich sein, sondern ein Meinungsaustausch. Ich tausche meine Meinung mit Euch aus.

Uns ist schon bewußt daß dies möglich ist und wenn man ein wenig googelt bzw im Datenblatt des ATmega nachschaut weiß man auch wie.

Die Frage ist aber einen andere: ob das aus moralischen Gründen vertretbar ist, den Code den man mit Hilfe der Forumsteilnehmer und aller die den Arduino erarbeitet haben und ihn unter eine freien Lizenz gestellt haben, geheimhalten zu wollen und zu erschweren, daß man ihn herunterladen kann. Die Arbeit um ein Projekt zu verwirklichen in allen Ehren, aber dann muß man auch die Arbeit und den Willen der “Vorkämpfer” respektieren.

Grüße UWe

Das sehe ich ähnlich. Wenn ich etwas interessantes programmiert habe, was anderen auch nützlich sein könnte, dann teile ich das.

Ich habe aber auch Respekt davor, wenn jemand sein Programm vor dem auslesen schützen möchte.

Ich habe z.B. die Lockbits in einem twitternden Arduino gesetzt. Da könnte ja sonst jemand mein gespeichertes Passwort auslesen. Ist zwar sehr unwahrscheinlich, aber trotzdem... man weiß ja nie ;)

Anderes Beispiel: Du baust ein USB Dongel welches Daten signiert. Den Code kann man veröffentlichen. Vielleicht möchte jemand so etwas ja auch nachbauen. Aber der geheime Schlüssel auf dem AVR würde ich wohl besser gegen auslesen und kopieren schützen.

Also -U lock:w:0x3C:m kann auch sinnvoll sein.

So, wir haben nun das Gerät, um das es in diesem Thread ging, veröffentlicht. Wer sich nun für die Technik interessiert kann es hier finden:

http://www.david-laserscanner.com/forum/viewtopic.php?f=6&t=2421

Konstruktive Beiträge (zur Verbesserung) sind dort sehr willkommen.