Ankündigung

Einklappen
Keine Ankündigung bisher.

Parameter aus OpenKNX Gerät auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Parameter aus OpenKNX Gerät auslesen

    Hallo,

    wie im Access-Control-Thread beschrieben, ist das Fingerprint-Passwort in meiner ETS-Applikation nicht identisch mit der im Gerät. (https://knx-user-forum.de/forum/proj...46#post2050446)
    Das Gerät kommuniziert ordnungsgemäß mit dem FP, aber ich kann das Passwort nicht ändern, da das alte Passwort falsch sei.

    Jetzt ist es ja mittels Diagnose möglich, Speicherbereiche ausgeben zu lassen. Ist es möglich, dass ich mir den Speicher ausgeben lasse, um das Passwort daraus zu extrahieren?
    Ich denke, ich würde das Passwort erkennen, wenn ich den ganzen Inhalt der die Applikationsparameter enthält vor mir habe.

    Gruß,
    Hendrik

    #2
    Applikationsparameter, die von der ETS beim regulären Programmieren geschrieben werden, müsste auf der Konsole `flash knx` sein.
    OpenKNX www.openknx.de | StateEngine: Universelle Zustandsautomaten in KNX | OpenKNX Konfigurationstransfer

    Kommentar


      #3
      Hallo,

      vielen Dank.
      Leider wird das Passwort als CRC32 gespeichert (der Sensor benötigt eine Zahl, keinen Text). Daher erkenne ich aus dem Ergebnis von flash knx das Passwort nicht optisch.
      Ich hab im Code geschaut:
      Code:
      #define FLASH_SCANNER_PASSWORD_OFFSET 5
      uint32_t currentCrc = _fingerprintStorage.readInt(FLASH_SCANNER_PASSWORD_OFFSET);
      Welche Stelle in
      Code:
      0d 00:00:09: flash knx
      0d 00:00:09: Memory content:          Address 0x10140000 - Size: 0x20000 (131072 bytes)
      0d 00:00:09: 0x000000 (0x10140000):   00 01 00 FA 00 00 A6 00 09 00 00 09 10 62 00 01
      0d 00:00:09: 0x000010 (0x10140010):   04 00 01 60 00 01 00 00 A6 00 09 00 00 FA A6 00
      0d 00:00:09: 0x000020 (0x10140020):   09 01 00 00 48 04 00 00 00 54 48 04 01 00 00 09
      0d 00:00:09: 0x000030 (0x10140030):   B0 00 00 48 58 09 B0 01 00 00 00 02 00 00 52 08
      0d 00:00:09: 0x000040 (0x10140040):   00 04 01 00 00 00 02 00 00 52 0C 00 04 FF FF FF
      0d 00:00:09: 0x000050 (0x10140050):   FF FF FF FF 00 01 01 2C 0A 42 48 76 25 41 0A F0
      0d 00:00:09: 0x000060 (0x10140060):   B3 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00
      0d 00:00:09: 0x000070 (0x10140070):   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0d 00:00:09: 0x000080 (0x10140080):   00 00 00 03 00 05 10 00 00 00 00 00 00 00 00 00
      0d 00:00:09: 0x000090 (0x10140090):   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0d 00:00:09:                          261x (repetitions of previous line)
      0d 00:00:09: 0x0010F0 (0x101410F0):   00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0d 00:00:09: 0x001100 (0x10141100):   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0d 00:00:09:                          98x (repetitions of previous line)
      0d 00:00:09: 0x001730 (0x10141730):   01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0d 00:00:09: 0x001740 (0x10141740):   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0d 00:00:09:                          2x (repetitions of previous line)
      0d 00:00:09: 0x001770 (0x10141770):   00 00 00 00 00 00 00 00 00 00 00 00 C0 FF 28 3C
      0d 00:00:09: 0x001780 (0x10141780):   00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 00
      0d 00:00:09: 0x001790 (0x10141790):   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0d 00:00:09:                          186x (repetitions of previous line)
      0d 00:00:09: 0x002340 (0x10142340):   00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
      0d 00:00:09: 0x002350 (0x10142350):   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0d 00:00:09:                          3x (repetitions of previous line)
      0d 00:00:09: 0x002390 (0x10142390):   00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00
      0d 00:00:09: 0x0023A0 (0x101423A0):   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0d 00:00:09:                          3x (repetitions of previous line)
      0d 00:00:09: 0x0023E0 (0x101423E0):   00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
      0d 00:00:09: 0x0023F0 (0x101423F0):   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0d 00:00:09:                          514x (repetitions of previous line)
      0d 00:00:09: 0x004420 (0x10144420):   04 04 10 03 00 00 00 00 00 00 00 00 00 00 00 00
      0d 00:00:09: 0x004430 (0x10144430):   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0d 00:00:09:                          65x (repetitions of previous line)
      0d 00:00:09: 0x004850 (0x10144850):   00 00 00 00 00 00 00 00 04 D7 4B 00 93 09 93 09
      0d 00:00:09: 0x004860 (0x10144860):   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0d 00:00:09:                          1x (repetitions of previous line)
      0d 00:00:09: 0x004880 (0x10144880):   93 00 4B 00 00 00 00 00 00 00 00 00 00 00 00 00
      0d 00:00:09: 0x004890 (0x10144890):   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0d 00:00:09:                          150x (repetitions of previous line)
      0d 00:00:09: 0x005200 (0x10145200):   00 00 00 00 00 00 00 00 00 00 FF FF 00 00 FF FF
      0d 00:00:09: 0x005210 (0x10145210):   FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
      0d 00:00:09:                          6878x (repetitions of previous line)
      ​
      wird dann hier gelesen?

      Ist es
      Code:
      0x000000 (0x10140000): 00 01 00 FA 00 [B]00 A6 00 09[/B] 00
      Alternativ könnte ich natürlich den Code anpassen und den gelesenen Integer als Debug Info ausgeben. Dann habe ich aber die Sorge, dass beim Flashen mein Passwort überschrieben wird.

      Gruß,
      Hendrik
      Zuletzt geändert von henfri; 22.08.2025, 09:19.

      Kommentar


        #4
        du wirst nicht darum herum kommen das https://github.com/OpenKNX/OFM-AccessControl/tree/main zu analysieren und herauszufinden wo genau das password hingespeichert wird. Dann kannst du es auslesen.
        Dürfte NICHT der knx flash sein sondern ein eigener Bereich.
        OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

        Kommentar


          #5
          Hallo,

          danke für deine Antwort.
          Da wird
          Code:
          OpenKNX::Flash::Driver _fingerprintStorage;
          verwendet.

          Das ist doch die Standard-Openknx-Klasse um Daten im Flash zu speichern, oder? Wohin speichert sie denn, bzw. wie lese ich den Bereich aus?

          Gruß,
          Hendrik


          Code:
          namespace OpenKNX
          
          {
          
              namespace Flash
          
              {
          
                  class Driver
          
                  {
          
                    protected:
          
                      std::string _id = "Unnamed";
          
          
          
          
                      uint32_t _offset = 0;
          
                      uint32_t _size = 0;
          
                      uint32_t _startFree = 0;
          
                      uint32_t _endFree = 0;
          
                      uint16_t _sectorSize = 0;
          
                      uint16_t _pageSize = 0;
          
          
          
          
                      uint8_t *_buffer = nullptr;
          
                      uint16_t _bufferSector = 0;
          
          #ifdef ARDUINO_ARCH_ESP32
          
                      uint8_t *_mmap = nullptr;
          
          #endif
          
          
          
          
                      void writeSector();
          
                      bool needWriteSector();
          
                      bool needEraseForBuffer();
          
                      bool needEraseSector(uint16_t sector = 0);
          
                      uint16_t sectorOfRelativeAddress(uint32_t relativeAddress);
          
          
          
          
                      void validateParameters();
          
          
          
          
                      void loadSector(uint16_t sector, bool force = false);
          
          
          
          
                    public:
          
          #ifdef ARDUINO_ARCH_ESP32
          
                      void init(std::string id);
          
          #else
          
                      void init(std::string id, uint32_t offset, uint32_t size);
          
          #endif
          
                      std::string logPrefix();
          
          
          
          
                      void erase();
          
                      void eraseSector(uint16_t sector = 0);
          
                      uint8_t *flashAddress();
          
          
          
          
                      void commit();
          
                      uint32_t size();
          
                      uint32_t startFree();
          
                      uint32_t endFree();
          
                      uint32_t sectorSize();
          
                      uint32_t startOffset();
          
          
          
          
                      uint32_t write(uint32_t relativeAddress, uint8_t value, uint32_t size = 1);
          
                      uint32_t write(uint32_t relativeAddress, uint8_t *buffer, uint32_t size = 1);
          
          
          
          
                      uint32_t writeByte(uint32_t relativeAddress, uint8_t value);
          
                      uint32_t writeWord(uint32_t relativeAddress, uint16_t value);
          
                      uint32_t writeInt(uint32_t relativeAddress, uint32_t value);
          
                      uint32_t writeFloat(uint32_t relativeAddress, float value);
          
                      uint32_t writeLong(uint32_t relativeAddress, uint64_t value);
          
                      uint32_t writeDouble(uint32_t relativeAddress, double value);
          
          
          
          
                      uint32_t read(uint32_t relativeAddress, uint8_t *output, uint32_t size);
          
          
          
          
                      uint8_t readByte(uint32_t relativeAddress);
          
                      uint16_t readWord(uint32_t relativeAddress);
          
                      uint32_t readInt(uint32_t relativeAddress);
          
                      float readFloat(uint32_t relativeAddress);
          
                      uint64_t readLong(uint32_t relativeAddress);
          
                      double readDouble(uint32_t relativeAddress);
          
                  };
          
              } // namespace Flash
          
          } // namespace OpenKNX
          ​
          ​

          Kommentar


            #6
            Es gibt unterschiedliche Speicherbereiche, daher auch meine obige Anmerkung zum regulären programmieren durch die ETS. Das läuft auf Ebene des Stacks, in OpenKNX-Module erfolgt der Zugriff nur lesend über die Makros aus dem Producer.

            Mit 'flash openknx' bekommst Du einen Speicherbereich der von OpenKNX-Modulen befüllt werden kann, bei Wegfall der Spannungsversorgung oder vor dem Neustart. Dort wird z.B. für Zustandsautomaten der aktuelle Zustand und Restlaufzeit vom Timeout gespeichert, für eine Rekonstruktion nach Neustart.

            Ich gehe davon aus, dass hier ein unabhängiger Speicherbereich genutzt wird, unter Verwendung der selben Implementation.
            OpenKNX www.openknx.de | StateEngine: Universelle Zustandsautomaten in KNX | OpenKNX Konfigurationstransfer

            Kommentar


              #7
              Ich möchte Dir ja helfen, aber wir haben ja (auf Wunsch im Forum, ich meine es war auch mit Dein Wunsch - mag mich aber auch irren) das PW möglichst intransparent abgelegt, damit man es eben nicht einfach so im Speicher finden kann. Zumindest bestätigst Du hier, dass es wirklich nicht einfach geht.

              knx_flash (auf der Console) gibt Speicherinhalte von dem Bereich auch, den die ETS programmieren kann. Es wäre relativ witzlos, das PW, wie es in der ETS eingegeben wird, transparent an das Gerät zu übertragen. Deswegen passiert das nicht.

              Der Flash Driver (im Coding) dient zwar auch dazu, den ETS-Flash zu beschreiben, kann aber (in einer eigenen Instanz) auch dazu genutzt werden, Sachen woanders im Speicher hinzuschreiben. Z.B. ist eine Instanz per default aktiv, die das Speichern bei Stromausfall übernimmt, da kann sich jedes Modul drauf registrieren und die Werte reinschreiben, die es über den Stromausfall retten möchte.
              Ich bin mir relativ sicher, dass beim AccessControl eine weitere Instanz erzeugt wird, die all die Daten wie User, Finger usw. in einen eigenen Bereich speichert (um z.B. danach zu suchen). In dem Bereich wird auch irgenwo das PW liegen.

              Wo der Bereich liegt, kann ich Dir nicht sagen (wie gesagt, nicht an der Entwicklung beteiligt, ich hab hier nur den ETS-Part gemacht). Aber ein guter Startpunkt ist hier die platformio.custom.ini im Projekt, denn da werden alle Definitionen für die finale Hardware eingetragen.
              Und da steht so was:
              Code:
              [RP2040_FLASH]
              build_flags =
                -D KNX_FLASH_SIZE=0x20000
                -D KNX_FLASH_OFFSET=0x140000
                -D OPENKNX_FLASH_SIZE=0x4000
                -D OPENKNX_FLASH_OFFSET=0x160000
                -D FINGERPRINT_FLASH_SIZE=0x11000
                -D FINGERPRINT_FLASH_OFFSET=0x12F000
                -D NFC_FLASH_SIZE=0x11000
                -D NFC_FLASH_OFFSET=0x11E000
              ​
              KNX_FLASH ist der ETS-Flash. OPENKNX_FLASH ist - soweit ich mich erinnere, der Platz fürs Speichern beim Stromausfall. Ich würde es also beim FINGERPRINT_FLASH versuchen.

              Soweit die Zusammenhänge, jetzt kannst Du weiter forschen.

              Gruß, Waldemar
              OpenKNX www.openknx.de

              Kommentar


                #8
                Hallo Waldemar,

                vielen Dank, das hilft mir sehr.

                Vielleicht noch kurz zu meiner Motivation: Ich habe das Passwort ja nicht vergessen (das hört der Helpdesk bestimmt oft....). Es muss irgendetwas schief gegangen sein, dass Passwort in der ETS und im Modul nicht mehr synchron sind. Ich habe den Verdacht, dass es beim Ändern des Passwortes im Modul, nicht aber in der ETS gespeichert wurde.

                Wenn sich das bestätigt, kann man überlegen, was man daraus macht.


                Der Speicher wird so initialisiert:
                Code:
                _fingerprintStorage.init("fingerprint", FINGERPRINT_FLASH_OFFSET, FINGERPRINT_FLASH_SIZE);
                    uint32_t magicWord = _fingerprintStorage.readInt(0);
                    if (magicWord != FLASH_MAGIC_WORD)​
                
                FLASH_MAGIC_WORD 2912744758
                
                  -D FINGERPRINT_FLASH_SIZE=0x11000
                  -D FINGERPRINT_FLASH_OFFSET=0x12F000​​
                Jetzt bleibt noch die Frage, wie ich diesen Bereich auslese aus dem Gerät. Kann ich das mit OpenKNX Hausmitteln?

                Über das Magic Word kann ich ja auch verifizieren, den richtigen Bereich zu haben. Danach wäre das aber leider auch nur ein CRC32 Hash des Passworts (Hintergrund: in der ETS ist das Passwort ein Wort, der Scanner will aber nur einen Integer). Den kann ich aber mit meinen Passwort-Kandidaten vergleichen und dann hätten wir die Antwort auf die Frage oben.

                Falls das nicht übereinstimmt, könnte ich aber wenigstens direkt per seriellem Anschluss den CRC32 Hash an den FP senden und dann das Passwort auf 0 setzen.

                Gruß,
                Hendrik
                Zuletzt geändert von henfri; 22.08.2025, 11:18.

                Kommentar


                  #9
                  Schau mal in der Hilfe der Konsole nach. Es gibt AFAIR auch noch ein Kommando mit dem Du auch weitere Speicherbereiche auslesen kannst...
                  OpenKNX www.openknx.de | StateEngine: Universelle Zustandsautomaten in KNX | OpenKNX Konfigurationstransfer

                  Kommentar


                    #10
                    1) Nicht alles was in der ETS steht, wird auch auf dem Gerät gespeichert.
                    2) CRC32 speichert kein Passwort. Es ist nicht mal als Hash geeignet. Aber ja der FP nur 4Bytes als Passwort

                    Aber ich verstehe nicht was du vor hast. Hast du ein Kombination die noch funktioniert und willst dann schauen welche Checksumme verwendet wurde?
                    wie lang war das passwort was du verwendet hast? ich frage einfach weil man bei KNX ja Längenbegrenzt ist und ich mich nicht wundern würde wenn du aus einem Bereich rausgelaufen bist.
                    OpenKNX www.openknx.de | OpenKNX-Wiki (Beta)

                    Kommentar


                      #11
                      coko mache ich.
                      traxanos

                      1) Nicht alles was in der ETS steht, wird auch auf dem Gerät gespeichert.
                      Ja, aber das Passwort, welches an den Sensor gesendet wird muss ja dort sein.
                      2) CRC32 speichert kein Passwort. Es ist nicht mal als Hash geeignet. Aber ja der FP nur 4Bytes als Passwort
                      CRC32 wird verwendet, um aus dem ETS-Passwort eine Zahl zu machen. Diese wird in der Kommunikation zum FP verwendet:
                      Code:
                               newPasswordCrc = crc32.crc32((uint8_t *)newPassword, 16);
                      .....
                              if (switchFingerprintPower(true))
                                  success = finger->setPassword(newPasswordCrc);​
                      Aber ich verstehe nicht was du vor hast. Hast du ein Kombination die noch funktioniert und willst dann schauen welche Checksumme verwendet wurde?​
                      Ja, funktioniert. Aber wenn ich ein Update mache, wird möglicherweise das Passwort überschrieben und der Scanner ist nur noch ein Briefbeschwerer.
                      Ziel ist:
                      1) zu ermitteln, was passiert ist
                      2) Das passwort wieder auf 0 zu setzen, und es dann in der ETS neu zu setzen, so dass ETS und Modul wieder synchron sind.

                      wie lang war das passwort was du verwendet hast? ich frage einfach weil man bei KNX ja Längenbegrenzt ist und ich mich nicht wundern würde wenn du aus einem Bereich rausgelaufen bist.
                      Es war FingerpHintertue und ich habe es auf FingerprintSchup ändern wollen. Längere Passwörter erlaubt die ETS nicht.

                      Gruß,
                      Hendrik

                      Kommentar


                        #12
                        Zitat von henfri Beitrag anzeigen
                        CRC32 wird verwendet, um aus dem ETS-Passwort eine Zahl zu machen. Diese wird in der Kommunikation zum FP verwendet:
                        das habe ich schon verstanden. ich hätte das allerdings in der ets gemacht statt in der firmware - aber das ist ein anderes thema.

                        Zitat von henfri Beitrag anzeigen
                        Längere Passwörter erlaubt die ETS nicht.
                        vermutlich weil das passwort per bus übertragen wird und die telegramme halt begrenzt sind. daher hätte ich direkt die 4 bytes statt das passwort gesendet. aber wie gesagt ist ein anderes thema. wenn das korrekte passwort noch im flash steht, dann ist es ja recht einfach zu lesen. nimm dir nen debugger mach ein komplettes backup vom flash - für den fall der fällt.

                        dann schaust du dir vermutlich FINGERPRINT_FLASH_OFFSET + FLASH_SCANNER_PASSWORD_OFFSET an und liest die 4 bytes.
                        notfalls halt per konsole wie coko schon empfohlen hat.
                        OpenKNX www.openknx.de | OpenKNX-Wiki (Beta)

                        Kommentar


                          #13
                          Zitat von traxanos Beitrag anzeigen
                          nimm dir nen debugger mach ein komplettes backup vom flash - für den fall der fällt.
                          oder bau einfach eine debug ausgabe per konsole ein...
                          OpenKNX www.openknx.de | NanoBCU und OpenKNX-HW verfügbar

                          Kommentar


                            #14
                            Hallo,

                            per Konsole wäre es ja
                            Code:
                            mem 0x0012F000;
                            wenn ich es richtig sehe

                            Das führt zu
                            Code:
                            0d 00:00:17: Memory content:          Address 0x0012F000 - Size: 0x0040 (64 bytes)
                            0d 00:00:17: 0x000000 (0x0012F000):​
                            und dann einem Neustart.

                            mit
                            Code:
                            flash knx
                            bekomme ich den Output unten, aber das startet bei 0x10140000, oder (in nehme an, die vordere adresse ist die relative)




                            Code:
                            0d 00:00:29: flash knx
                            
                            0d 00:00:29: Memory content:          Address 0x10140000 - Size: 0x20000 (131072 bytes)
                            
                            0d 00:00:29: 0x000000 (0x10140000):   00 01 00 FA 00 00 A6 00 09 00 00 09 10 19 00 01
                            
                            0d 00:00:29: 0x000010 (0x10140010):   04 00 01 60 00 01 00 00 A6 00 09 00 00 FA A6 00
                            
                            0d 00:00:29: 0x000020 (0x10140020):   09 01 00 00 48 04 00 00 00 54 48 04 01 00 00 09
                            
                            0d 00:00:29: 0x000030 (0x10140030):   B0 00 00 48 58 09 B0 01 00 00 00 04 00 00 52 08
                            
                            0d 00:00:29: 0x000040 (0x10140040):   00 04 01 00 00 00 06 00 00 52 0C 00 08 FF FF FF
                            
                            0d 00:00:29: 0x000050 (0x10140050):   FF FF FF FF 00 01 01 2C 0A 42 48 76 25 41 0A F0
                            
                            0d 00:00:29: 0x000060 (0x10140060):   B3 00 E0 00 00 00 00 00 00 00 00 00 00 00 00 00
                            
                            0d 00:00:29: 0x000070 (0x10140070):   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
                            
                            0d 00:00:29: 0x000080 (0x10140080):   00 00 00 03 00 05 50 64 00 00 00 00 00 00 00 00
                            
                            0d 00:00:29: 0x000090 (0x10140090):   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
                            
                            0d 00:00:29:                          261x (repetitions of previous line)
                            
                            0d 00:00:29: 0x0010F0 (0x101410F0):   00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
                            
                            0d 00:00:29: 0x001100 (0x10141100):   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
                            
                            0d 00:00:29:                          98x (repetitions of previous line)
                            
                            0d 00:00:29: 0x001730 (0x10141730):   01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
                            
                            0d 00:00:29: 0x001740 (0x10141740):   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
                            
                            0d 00:00:29:                          2x (repetitions of previous line)
                            
                            0d 00:00:29: 0x001770 (0x10141770):   00 00 00 00 00 00 00 00 00 00 00 00 C0 FF 28 3C
                            
                            0d 00:00:29: 0x001780 (0x10141780):   00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 00
                            
                            0d 00:00:29: 0x001790 (0x10141790):   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
                            
                            0d 00:00:29:                          186x (repetitions of previous line)
                            
                            0d 00:00:29: 0x002340 (0x10142340):   00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
                            
                            0d 00:00:29: 0x002350 (0x10142350):   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
                            
                            0d 00:00:29:                          3x (repetitions of previous line)
                            
                            0d 00:00:29: 0x002390 (0x10142390):   00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00
                            
                            0d 00:00:29: 0x0023A0 (0x101423A0):   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
                            
                            0d 00:00:29:                          3x (repetitions of previous line)
                            
                            0d 00:00:29: 0x0023E0 (0x101423E0):   00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
                            
                            0d 00:00:29: 0x0023F0 (0x101423F0):   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
                            
                            0d 00:00:29:                          514x (repetitions of previous line)
                            
                            0d 00:00:29: 0x004420 (0x10144420):   04 04 10 03 00 00 00 00 00 00 00 00 00 00 00 00
                            
                            0d 00:00:29: 0x004430 (0x10144430):   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
                            
                            0d 00:00:29:                          65x (repetitions of previous line)
                            
                            0d 00:00:29: 0x004850 (0x10144850):   00 00 00 00 00 00 00 00 04 D7 4B 00 93 09 93 09
                            
                            0d 00:00:29: 0x004860 (0x10144860):   00 00 00 00 00 00 53 0E 00 00 00 00 00 00 00 00
                            
                            0d 00:00:29: 0x004870 (0x10144870):   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
                            
                            0d 00:00:29: 0x004880 (0x10144880):   93 00 4B 00 00 00 57 0E 00 00 00 00 00 00 00 00
                            
                            0d 00:00:29: 0x004890 (0x10144890):   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
                            
                            0d 00:00:29:                          150x (repetitions of previous line)
                            
                            0d 00:00:29: 0x005200 (0x10145200):   00 00 00 00 00 00 00 00 00 01 48 FF 00 01 00 01
                            
                            0d 00:00:29: 0x005210 (0x10145210):   00 17 FF FF FF FF FF FF FF FF FF FF FF FF FF FF
                            
                            0d 00:00:29: 0x005220 (0x10145220):   FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
                            
                            0d 00:00:29:                          6877x (repetitions of previous line)
                            
                            
                            ​
                            nimm dir nen debugger mach ein komplettes backup vom flash
                            Reicht da der UP1 progger? Mit welchem debugger geht das? Mit picotool bin ich gestern gescheitert.
                            Code:
                             save -r 0x1012F000 0x11000 dump.bin
                            ERROR: Save range is invalid/empty​
                            Edit:
                            Code:
                            >>picotool save -r 0x10000000 0x10FFFFFF full_flash.bin
                            Funktioniert, da ist das magic word aber nicht enthalten.
                            Weiter runter komme ich nicht im Speicherbereich
                            Code:
                            ERROR: Save range crosses unmapped memory
                            ​
                            Gibt es eine Möglichkeit ein komplettes Backup zu machen? Dann würde ich es tatsächlich per debug -ausgabe-miniprogramm machen.

                            Gruß,
                            Hendrik
                            Zuletzt geändert von henfri; 22.08.2025, 14:26.

                            Kommentar


                              #15
                              Hallo,

                              mumpf abtools Ich bin recht sicher, dass es hier einen Bug gibt.
                              Ich habe auf einem anderen Gerät (auch UP1), welches die 0.9 hat folgendes gemacht

                              1) Passwort vom aktuellen Wert auf 0 gesetzt
                              image.png

                              2) Flash mit picotool gesichert; an der Kommandozeile flash knx und flash openknx gelesen und gesichert

                              3) Passwort von 0 auf FingerprintHaust geändert
                              --> geht nicht. Falsches altes Passwort
                              4) Passwort von FingerprintHaust auf 0 geändert
                              --> geht nicht. Falsches altes Passwort

                              Die Kommunikation zum FP funktioniert aber weiterhin.

                              Wer traut sich, das zu reproduzieren? :-)
                              Spaß beiseite:
                              Ich sehe jetzt zwei Möglichkeiten:
                              a) passwort aus dem Dump lesen
                              b) fingerprint firmware so anpassen, dass die (vorhandenen!) Debug-Ausgaben auch ausgegeben werden und ganz sicher sein, dass beim Flashen der Berech in dem das Passwort ist nicht überschrieben wird.

                              Gruß,
                              Hendrik​


                              (Hier aus der ETS von unten nach oben lesen, mittleren schritt ignorieren)
                              image.png

                              Angehängte Dateien
                              Zuletzt geändert von henfri; 22.08.2025, 16:37.

                              Kommentar

                              Lädt...
                              X