Kann man aus dem esp8266 ein Sketch auslesen?

Hab ein paar ESPs mit laufenden Sketches drauf und weiß nicht mehr welches das waren :frowning: da ich einige getestet habe.
Kann man das irgendwie auslesen aus den ESPs?

Danke

Mir ist keine Möglichkeit bekannt. Aber gehen tut es bestimmt, ich hab von Organisationen gehört, die knacken sogar Iphones

robiv8:
Hab ein paar ESPs mit laufenden Sketches drauf und weiß nicht mehr welches das waren :frowning: da ich einige getestet habe.
Kann man das irgendwie auslesen aus den ESPs?

Danke

Selbst wenn du es auslesen kannst, ist es kein Sketch, sondern nur Maschinencode.

Danke, habs angesteckt und per Serielem Monitor gesehen was es tut und somit auch was es war :slight_smile:

Danke Trotzdem

Deswegen ist es immer eine gute Idee, im Setup seriell auszugeben, was für ein Sketch und welche Version

robiv8:
Danke, habs angesteckt und per Serielem Monitor gesehen was es tut und somit auch was es war :slight_smile:

Danke Trotzdem

Damit hast du doch auch eine Möglichkeit eine Versionsnummer mit anzugeben.
Die kannst du dann auslesen und weist was Sache ist.

Hi

Gegen diesen Fall lasse ich meine Programme am Start eine Kleinigkeit im Terminal ausgeben.
Beim Arduino habe ich noch das Problem, daß der 'letzte Stand' bei der nächsten Änderung nicht mehr vorhanden ist (dagegen dupliziere ich das INO-File und benenne Es in .INA um - so lässt Es die IDE beim Kompilieren links liegen und ich habe meine Zwischenversion noch auf Platte).

Aber keine Angst: Du bist nicht alleine - zumindest, wenn dieses Grundproblem auch alle µC ausgedehnt werden darf :wink:

Davon ab - willst Du das eigentliche Programm wieder haben, oder willst Du genau dieses Programm auf einen anderen µC drauf bekommen?
Letzteres kann gehen, wenn Du den Speicher auslesen kannst (kA, ob Da auch Lock-Bits 'verbaut' sind - würde mich aber wundern wenn nicht - Diese müssen das Auslesen dann nur noch zulassen).
So kommst Du an ein HEX-File - auf einen identischen µC gebrannt (per Programmer, nicht per USB auf einen Arduino o.Ä.) und die Sache gibt's ab Da zwei Mal.

MfG

PS: Ich bin einfach zu langsam ... pöh :stuck_out_tongue:

Hallo,
"Deswegen ist es immer eine gute Idee, im Setup seriell auszugeben, was für ein Sketch und welche Version"

Das ist ein ziemlich guter Rat.
Man startet "Seriell" und gibt die benötigten Informationen aus.
Danach beendet man "Seriell" einfach wieder, und gut ist.
Andreas sagt Danke schön.
Gruß und Spaß
Andreas

Ich speichere bei jedem Save eine Kopie der .ino, .cpp, .h im gleichen Ordner mit Zeitstempel hintendran automatisch ab. Plattenplatz ist ja nicht mehr das Problem.

Also z.B. test.ino_20171213103114.
Am 13.12.2017 um 10:31:14 gespeichert.

Diese werden auch durch einen automatischen Backup-Prozess täglich um 20:15 auf ein NAS gesichert und von dort alle 2 Tage auf ein 2. NAS

Das Rückschreiben wurde auch getestet.

Es gab schon Firmen, die haben Jahrelang Backups gezogen und als sie diese gebraucht haben gemerkt, das das Mist war.

Gruß Tommy

Aus meinem Nähkästchen:

void setup(void) 
{
  Serial.begin(9600);
  Serial.println();
  Serial.println("Version: 4.7.11");
  Serial.println("Build: "__TIME__ "  " __DATE__);
  Serial.println(__FILE__);
}

Ich kann euch allen nicht folgen. Wieso versioniert Ihr Maschinencode? Was soll das bringen? Warum Wollt Ihr seriell rausfinden, was auf dem ESP ist, wenn Ihr mit gleichem Aufwand draufflashen könnt, was Ihr wollt?

Ich verwalte meinen Code mit git und habe so Versionen von etwas, womit ich auch was anfangen kann. Oder debuggt Ihr alle Compiler, dass Euch der Maschinencode zu einer bestimmten Zeit interessiert?

noiasca:
aber TIME geht leider nicht am ESP... wenn doch bitte um Input wie ich das hinbekommen könnte ...

Da unterliegst du einem Irrtum!

Aber warum der Kompiler die Verkettung nicht mag...
KA, sollte er eigentlich können.

Und ich muss gestehen, dass meine ESP ihre Versionskennung nicht seriell ausgeben, sondern per HTTP.
Der vorher gepostete Code stammt aus meiner AVR Linie.

void setup(void) 
{
  Serial.begin(9600);
  Serial.println();
  Serial.println("Version: 4.7.11");
  Serial.print("Build: ");
  Serial.print(__TIME__);
  Serial.print("  ");
  Serial.println(__DATE__);
  Serial.println(__FILE__);
}

Ich kann euch allen nicht folgen. Wieso versioniert Ihr Maschinencode? Was soll das bringen? Warum Wollt Ihr seriell rausfinden, was auf dem ESP ist, wenn Ihr mit gleichem Aufwand draufflashen könnt, was Ihr wollt?

Wenn du nur einen oder zwei ESP hast, und da immer nur mit Kabel dran gehst, dann reicht es einen Zettel auf den ESP zu kleben, damit man ihn zuordnen kann.

Aber wenn du mehrere ESP im Netz hast, und diese per OTA Updaten möchtest, sieht das schon anders aus.
Die (dynamische) IP reicht zur Identifikation nicht aus.

Ansonsten finde ich es arg absurd sich gegen Versionisierung auszusprechen.
Es ist ein seit Jahrzehnten erprobtes Konzept!
Wird weltweit eingesetzt.
Bei jedem Update fähigen Gerät wird das so gemacht.
Es entspricht: "Dem Prinzip der geringsten Verwunderung"

Nachtrag:
Dieses läuft auf ESP und den AVR Arduinos gleichermaßen:
(wenn man denn das Streaming mag)

// sonstige includes
#include <Streaming.h>


void setup(void) 
{
  Serial.begin(9600);
  
  Serial   << endl << "Start" << endl;
  
  Serial   << F("Version: 0.0.1") << endl
           << F("Build: ") << F(__TIME__) << F("  ") << F(__DATE__) << endl
           << F(__FILE__)  << endl;


}

void loop(void) 
{

}

combie:
Aber wenn du mehrere ESP im Netz hast, und diese per OTA Updaten möchtest, sieht das schon anders aus.
Die (dynamische) IP reicht zur Identifikation nicht aus.

Abgesehen davon, dass ich dafür den mdns-Namen nehme: Geht Serial über IP mottlerweile? Cool.

Ansonsten finde ich es arg absurd sich gegen Versionisierung auszusprechen.
Es ist ein seit Jahrzehnten erprobtes Konzept!
Wird weltweit eingesetzt.
Bei jedem Update fähigen Gerät wird das so gemacht.
Es entspricht: "Dem Prinzip der geringsten Verwunderung"

Ich spreche mich nicht gegen Versionierung aus, ich wundere mich nur über Eure Anwendungsszenarien, dass ihr das regelmäßig braucht.
Davon abgesehen wundere ich mich darüber, das Binaries archiviert werden, ohne ein Wort über Codeversionierung zu verlieren.

postmaster-ino:
So kommst Du an ein HEX-File - auf einen identischen µC gebrannt (per Programmer, nicht per USB auf einen Arduino o.Ä.) und die Sache gibt's ab Da zwei Mal.

MfG

Dachte die brauchen .bin und keine .hex