[Info] Wie funktioniert eigentlich das Signieren der AVM-Firmware?

Moinsen

@er13: Top! Liest sich gut und sehr verständlich.
Rechtschreibfehler hab ich nicht gesehen, aber auch nicht nach gesucht.

- - - Aktualisiert - - -

....was mich zu der Frage führt: Wenn freetz (make) signiert hat, ist von der mit diesen erzeugten und auf die Box geflashten Firmwareimage (AVM-GUI, freetz-GUI) aus kein AVM Image mehr flashbar?
Kann mir vorstellen, dass die "9" am Ende der Signatur was damit zu tun hat :gruebel:
 
Zuletzt bearbeitet:
Stand jetzt gibt es keine AVM-Firmware, die mehr als 3 öffentliche Schlüssel enthalten würde (AVM trennt verschiedene eigenen Quellen, eine für Images, eine für Plugins, etc.). Die entsprechenden Dateien haben die Indizies von 1 bis 3. Durch das Kopieren von einer Datei mit dem Index 9 wird also kein öffentlicher Schlüssel von AVM ersetzt, sondern lediglich der von Dir hinzugefügt. Damit ist das Flashen eines originalen AVM-Images aus einem selbstsignierten Image weiterhin ohne Einschränkungen möglich.

Was allerdings nicht möglich ist, ist das anschließende Flashen Deines eigenen Images aus dem originalen Image heraus, da das originale Image den öffentlichen Schlüssel von Dir dann nicht mehr enthält.
 
Logisch ;)
Thanks for explaining

Der "Freetz!Boxer" mit linux_fs_start switched dafür natürlich auf die "Geimpfte" zurück :cool:
 
Zuletzt bearbeitet:
Für das Signieren benötigt man ja einen eigenen privaten RSA-Schlüssel, diesen kann man mit dem Skript generate_signing_key erstellen lassen.

bei mir ist bei Debian 9 (stretch) ein Fehler aufgetreten:
Code:
freetz@rpi3-debian9:~/freetz-fb6490$ ./fmake -c
SNIP
STEP 3: PACK/SIGN
  checking for left over Subversion directories
  integrate freetz info file into image
packing var.tar
No image signing files found, generating them ...
ERROR: failed to generate image signing files, see console output or build/modified/generate_signing_key.log for details
Makefile:309: die Regel für Ziel „firmware-nocompile“ scheiterte
make: *** [firmware-nocompile] Fehler 1
make
    exit code 0
    duration 133m51,047s
freetz@rpi3-debian9:~/freetz-fb6490$

Code:
freetz@rpi3-debian9:~/freetz-fb6490$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
freetz@rpi3-debian9:~/freetz-fb6490$

Code:
freetz@rpi3-debian9:~/freetz-fb6490$ dpkg -l | grep openssl
ii  openssl                               1.1.0f-3+deb9u1                    armhf        Secure Sockets Layer toolkit - cryptographic utility
ii  perl-openssl-defaults:armhf           3                                  armhf        version compatibility baseline for Perl OpenSSL packages
ii  python-openssl                        16.2.0-1                           all          Python 2 wrapper around the OpenSSL library
ii  python3-openssl                       16.2.0-1                           all          Python 3 wrapper around the OpenSSL library
freetz@rpi3-debian9:~/freetz-fb6490$

Code:
freetz@rpi3-debian9:~/freetz-fb6490$ cat build/modified/generate_signing_key.log
Found OpenSSL 1.1.0f  25 May 2017
Your OpenSSL version is too new ... please install a version 1.0.2 to use this script.
freetz@rpi3-debian9:~/freetz-fb6490$

Bin gespannt ob das generate_signing_key sich auch dahingehend patchen läßt, dass es auch openssl-1.1.x unterschieben lässt; berichte anschließend.

Oder gibt es Gründe warum generate_signing_key nicht mit openssl-1.1.x zusammenarbeiten kann ?

UPDATE: habe gerade ein Ticket @freetz.org https://freetz.org/ticket/2916?cversion=0&cnum_hist=2 entdeckt; da hat sich wohl von openssl-1.0.2 nach 1.1.0 sehr viel geändert;
 
Zuletzt bearbeitet:
Ja, da hat sich sehr viel geändert ... zwar wird man irgendwann nicht um die Unterstützung von OpenSSL 1.1.x herumkommen, aber solange AVM in der Firmware noch eine 1.0.x verwendet (auch wenn das bei Dir auf dem Host gescheitert ist, sind die Skript-Dateien ja auch auf der Box lauffähig), plane ich da auch keine Umstellung.

Wobei die 1.0.2 der OpenSSL-Roadmap nach auch bis zum 31.12.2019 Support erhält ... die derzeitige 1.1.0 (inzwischen ist eine 1.1.1 verfügbar) aber auch nur bis zum 31.08.2018. Da macht es ggf. sogar Sinn, bis zum Support-Ende der 1.0.2 zu warten, bevor man das umstellt.

Es gibt auch noch genug andere Software, die mit 1.1.x nicht arbeiten kann/will - dazu gehört z.B. OpenSSH:
Note that because of API changes, OpenSSL 1.1.x is not currently supported.
Es ist also noch nicht allzu exotisch, wenn man OpenSSL 1.1.x nicht unterstützt - theoretisch könnte man allerdings auch eine Version bauen, die mit dieser OpenSSL-Version klarkommt, denn die Algorithmen und Funktionen sind natürlich vorhanden. Nur die Parameter (für das CLI-Utility) und das Format einiger Ausgaben haben sich geändert ... am einfachsten wäre es wohl, wenn man alle OpenSSL-Aufrufe in einer passenden Shell-Datei isoliert, so wie ich es bei "decoder" in der Shell-Version gemacht habe.

Andererseits müssten derzeit eben noch viele Distributionen auch die 1.0.x von OpenSSL parallel installieren und unterstützen, weil so manches wirklich wichtige Paket eben keine 1.1.x mag ... ich kenne z.B. keine Patches für OpenSSH, die diesem Paket die neue Version schmackhaft machen würden.
 
Inzwischen hat auch meine "Lieblings-Distribution" openSUSE in der "Tumbleweed"-Version den Schritt zu OpenSSL 1.1.0h vollzogen und im Zuge dessen war ich dann gezwungen, mir die Unterschiede mit Relevanz für die Skript-Dateien in "signimage" noch einmal anzusehen. Am Ende läuft es sogar auf erstaunlich wenige Unterschiede hinaus (es beschränkt sich sogar auf das "generate_signing_key"-Skript) und damit gab es gar keinen plausiblen Grund mehr, nicht auch OpenSSL 1.1.x zu unterstützen.

Im selben Atemzug habe ich dann OpenSSL 0.9.x rausgeworfen ... wobei das auch nur halb stimmt. Ohne spezielle Vorkehrungen, weigert sich "generate_signing_key" mit OpenSSL 0.9.x zu arbeiten ... aber schon die Umgebungsvariable "USE_OLD_OPENSSL" mit beliebigem Inhalt (dessen Länge muß nur größer als 0 sein) kann das Skript vom Gegenteil überzeugen.

Ich habe jedenfalls nach den Änderungen auch mit OpenSSL 1.1.0h bei mir erfolgreich eigene Image-Dateien signieren können (mit AVM-kompatiblen Schlüsseln) und auch Signaturen prüfen können ... damit gehe ich davon aus, daß es bei den anderen Skript-Dateien keine weiteren Probleme gibt.
 
  • Like
Reaktionen: f666
Die Frage, warum sich mit Freetz signierte Images in letzter Zeit nicht mehr einspielen lassen, ist "under investigation" ... wenn es Ergebnisse gibt, wird ggf. korrigiert.

Ein von mir von Hand erzeugtes Image (natürlich unter Verwendung der Shell-Skripte) wird von der 07.00 für die 7580 einwandfrei erkannt, auch wenn der Key in "avm_firmware_public_key9" steht - da muß also irgendwo etwas anders sein in einem Freetz-Image als in dem von mir erstellten - ein Freetz-Image erhalte ich sicherlich nachher noch von @er13, ich habe im Moment keine eigene Freetz-Toolchain für die 7580 mit FRITZ!OS 7.

Im Zuge der Suche (und um die Integration in Freetz zu erleichtern/verbessern) habe ich die Skript-Dateien in "signimage" noch etwas geändert und sie verstehen jetzt die Angabe von Pfaden zu den zu verwendenden externen Kommandos (das sind ja nur "tar", "dd" und "openssl") in Environment-Variablen mit den Namen "YF_SIGNIMAGE_{TAR,DD,OPENSSL}" ... wer die Quotes richtig verwendet, kann auch "busybox tar" als Namen (auch mit vollständigem Pfad zur BusyBox) angeben.
 
Aktueller Zwischenstand.

Ich kriege das Problem inzwischen "nachgestellt". "Nachgestellt" in dem Sinne, dass es mir gelingt in derselben Build-Umgebung allein durchs Verändern der Konfiguration dessen, was ins Image aufgenommen werden soll, sowohl die Images zu erstellen, die die is-properly-signed-Prüfung bestehen, als auch solche, die diese nicht bestehen. Entsprechende Minimal-Images (eins, das die Prüfung besteht und eins, welches diese nicht besteht) stehen Peter zur Verfügung.

Das Problem hat höchstwahrscheinlich nichts mit Fritz!OS 07.xx zu tun, wie zwischenzeitlich (zumindest bei Peter) der Eindruck entstand. Lag aber auch daran, dass das Problem zum ersten mal bei einem der Labors gemeldet wurde. Ich triggere das Problem mit 06.9x. Kann mir aber vorstellen, dass es eigentlich mit einer beliebigen Fritz!OS-Version zu triggern ist und das dieses von Anfang an vorhanden gewesen ist.

Meiner Vermutung/Einschätzung nach hat es was mit der Größe eventuell der Struktur und/oder dem Padding zu tun. Es gibt irgendeinen (wie Peter sagt) corner-case, einen seltenen corner-case, und diesen behandelt das sign_image Script aus YourFritz noch nicht richtig.

Edit: nachdem ich mir den Code von sign_image angeschaut habe, kann ich mir auch vorstellen, dass es ein AVM-Bug in der Umsetzung der Prüfung ist. Da wird am Ende sowas blödes rauskommen wie - es muss eigentlich gar nicht gemacht werden, es gibt keinen Grund dazu, aber der Bug in der Prüfungsroutine von AVM macht es notwendig. Und der Fix wird eventuell auch was blödes sein, wie einen eigentlich unnötigen 1k-zero-Block extra hinzufügen oder sowas...
 
Zuletzt bearbeitet:
Das mit dem zusätzlichen Block hatte ich als allererstes probiert ... beim Alignment auf 2K ändert sich nichts (AVM-Images sind entweder auf 2K oder 4K ausgerichtet, zeigt jeder Hexdump sofort am Dateiende (entweder die letzten drei Ziffern des Offsets sind 800 oder sie sind 000) und abweichende Größen habe ich bei mir auf die Schnelle nicht gefunden) und es bleibt beim Exit-Code 210, beim Alignment auf 4K kommt der Exit-Code 203 (mir bisher unbekannt) von der Prüfung.

Ich bin da dran und mache den ganzen Quatsch jetzt einfach mal neu ... und dann auch gleich POSIX-kompatibel und mit passenden Texten in Deutsch und Englisch.

Da das ohnehin (auch speziell als Linux-Version in Shell-Code, selbst wenn die PS-Version auch unter Linux nutzbar ist) eine tragende Rolle in meinen künftigen Plänen spielt (https://www.ip-phone-forum.de/threa...-oder-besser-nicht.294386/page-3#post-2291261 - unter dem "horizontal ruler", den es in Xenforo leider nicht mehr gibt), ist das auch ein willkommener Anlaß, es nach mehr als zwei Jahren mal wieder zu überarbeiten.

Im Zuge dessen kann ich das dann auch mit den neueren und den aktuellen Firmware-Versionen testen - AVM hat hier m.E. gar nicht absichtlich geändert, sondern war im Ergebnis von Änderungen in "firmwarecfg", wo jetzt wohl auch der Exit-Code des "tar" überwacht wird:
Code:
13:54:30 firmwarecfg(28509): /bin/prepare_fwupgrade start completed
13:54:31 firmwarecfg(28509): exec_cmd: child return value 0
13:54:39 firmwarecfg(28509): waiting for the tar process to terminate
13:54:39 firmwarecfg(28509): tar process terminated
13:54:39 firmwarecfg(28509): exec_cmd: child return value 0
13:54:39 firmwarecfg(28509): signature ok
13:54:39 firmwarecfg(28509): prepare_firmware_upgrade returns g_status=0
13:54:39 firmwarecfg(28509): now_install
13:54:39 firmwarecfg(28509): calling /var/install
13:54:39 firmwarecfg(28509): waiting for /var/install to complete
13:54:39 firmwarecfg(29203): Running /var/install
13:54:39 firmwarecfg(28509): /var/install exited normally with status=7
13:54:39 firmwarecfg(28509): /var/install returned  g_status=7
[solche Meldungen sind beim Update per AVM-GUI intern erst später hinzugekommen, nachdem die "signimage"-Skripte schon von mir bereitgestellt wurden]

vielleicht dazu gezwungen, mit zusätzlichen Null-Blöcken im Image dafür zu sorgen, daß die früher ab und an mal auftretenden "short reads" im Zusammenhang mit AVM-Firmware-Images (entsprechende Fehler finden sich auch hier in einigen Threads) definitiv keine Rolle mehr spielen - zuviele Blöcke stören das "tar" der BusyBox eher nicht, weil die GNU-Version auch mehr erzeugt, als die Spezifikation fordert und die BusyBox da eher "gnädig" ist, wenn es mehr als erwartet sind.

Das wird also alles wieder werden ... ggf. kommt auf @er13 ein etwas größerer Aufwand zu, die neue Version anstelle der alten in die Freetz-Toolchain zu integrieren - aber in einer überarbeiteten Version kann ich dann auch für diese Fälle gleich entsprechende Vorkehrungen treffen und weitere Einstellungen "von außen" parametrierbar machen (einen Vorgeschmack gab es ja schon: https://github.com/PeterPawn/YourFritz/commit/6b50cebb79c449814199de0541ad7ec55aee2a96).

Dieser zusätzliche Aufwand (ich werde auch Dateinamen (absichtlich) ändern, um das von der älteren Version eindeutig abzugrenzen und versehentlichen "Mischbetrieb" leichter zu entdecken) tut mir dann zwar leid, aber ich will damit ja auch in der Zukunft die dynamischen Images signieren können und zwar so, daß die AVM-Firmware an denen nichts auszusetzen hat.
 
Ich habe das Problem jetzt auf eine ganz bestimmte Konstellation in der Image-Datei eingegrenzt (oder zumindest glaube ich, es eingegrenzt zu haben) ... die Test-Datei dazu findet man hier: https://github.com/PeterPawn/YourFritz/blob/master/signimage/test_signature_problem

Im Ergebnis traue ich mich, ziemlich deutlich mit dem Finger auf "firmwarecfg stream" zu zeigen, denn beim Auftreten dieses besonderen Umstands berechnet der einfach die MD5-Prüfsumme über die Datei (nachdem die Signatur ersetzt wurde - in #1 habe ich ja gezeigt, daß diese mit lauter binären Nullen in den Hash-Wert eingeht) falsch und gibt damit auch einen falschen Wert vor, der beim Versuch der Dekodierung der Signatur auch dann nicht mit dem tatsächlich enthaltenen übereinstimmt, wenn die Entschlüsselung mit dem öffentlichen RSA-Key erfolgreich war.

In der Konsequenz tut dann "tr069fwupdate" (bzw. "firmwarecfg" beim Aufruf für "UploadFile", wenn es sich im ein Update-Image handelt) so, als würde der passende öffentliche Schlüssel nicht gefunden (sprich: es wird weiter gesucht, während sonst beim richtigen Key-File Sense ist) bzw. als wäre die Signatur falsch - einigermaßen ein Durcheinander.

Mir ist es jedenfalls auch nicht gelungen, das Problem durch ein "Verlängern" der zu signierenden Daten zu entschärfen, wie man es ggf. annehmen könnte, basierend auf der Feststellung, daß bei AVM da mehr als die zwei geforderten "end of archive"-Blöcke (also 1 KByte aus binären Nullen) am Ende hängen können ... das ändert am Verifikationsproblem mal genau gar nichts.

Dieses tritt offenbar dann auf, wenn die Signatur-Datei (also deren TAR-Header) in der Datei exakt 1 KB vor einer 10 KB-Grenze liegt - das 1 KB ist ja ziemlich exakt die Größe, die TAR-Header und Signatur-Inhalt in der Image-Datei einnehmen und somit der Bereich, der bei der Berechnung des Hash-Wertes über die gesamte Datei durch Nullen zu ersetzen ist.

Da sich das auch immer wiederholt (also bei 9 KB, bei 19 KB, bei 29 KB ... bis hin zu den Größen der "Minimal-Images" von @er13 - das "minimal" bezieht sich nur auf den Umfang der Änderungen ggü. der AVM-Firmware, nicht auf deren Größe), ist die Vermutung naheliegend, daß da irgendetwas nicht korrekt behandelt wird bei der MD5-Berechnung - denn sowie es einen Block mehr oder weniger davor gibt (innerhalb eines TAR-Images verschiebt sich der Inhalt immer "blockweise", wobei diese Blöcke jeweils 512 Byte groß sind), kommt "firmwarecfg stream" auf genau denselben Hash-Wert, den man ermittelt, wenn man meiner Beschreibung in #1 folgt. Damit ergibt sich bei exakt einer Konstellation von 20 möglichen (10 KB sind 20 TAR-Blöcke) das Problem - die Wahrscheinlichkeit für sein Auftreten liegt also bei 1:19.

Beim Versuch, das Auftauchen dieses Problems in Richtung Vergangenheit zu klären, bin ich gescheitert ... die Installation von 06.60 gefiel der Box so gar nicht mehr und auf Werkseinstellungen hatte ich (nur um das Problem hier genauer zu klären) auch keine wirkliche Lust. Damit bleibt also unklar, woran es lag, liegt oder liegen wird ... nur die neue Protokollierung von Updates über die "fwupdatetrace.cfg" ist mir in diesem Zusammenhang noch in den Sinn gekommen, denn "firmwarecfg stream" versucht wohl auch auf diese zuzugreifen.

Egal ... mit der neuen Version von "sign_image" wird jetzt bei der unpassenden Position der Signatur-Datei (die ja erst noch hinzugefügt wird, denn "sign_image" erwartet eine Image-Datei ohne bereits vorhandene Signatur) einfach der allererste Eintrag aus der Image-Datei (das sollte eigentlich immer ein Verzeichnis-Eintrag für "./var/" sein) noch einmal vor der Signatur in die Ausgabedatei kopiert ... das sollte weder die AVM-Filterung nach unpassenden Namen noch das Entpacken über "tar" irgendwie irritieren.

Und um den Vorschlag für "reproduzierbares Signieren" von @er13 aufzugreifen, habe ich an die Stelle des Einpackens der Signatur mit "tar" ebenfalls "Handarbeit" gesetzt und somit wird erneut aus dem allerersten Eintrag in der Image-Datei (eben diesem "./var/"-Verzeichnis) nach ein paar Änderungen (Dateiname, -typ, -größe und Prüfsumme für den TAR-Header) dann der Header-Block für die Signatur ... das garantiert einen reproduzierbaren Inhalt bei den Attributen (inkl. der Zeitstempel) und sorgt parallel dafür, daß (Ent-)Packen mit Root-UID und -GID kein Thema mehr ist, wenn man unter einem nicht-privilegierten User arbeitet.

Damit sollte es erst mal wieder funktionieren ... ich baue da bestimmt noch mal etwas mit mehr Komfort und eingehenderen Prüfungen, weil das Signieren ja eine zentrale Rolle in meinen Plänen spielt. Aber die absolute Dringlichkeit ist erst mal nicht mehr gegeben, solange die aktuelle Version tatsächlich funktioniert.

Wer hiermit dann eine Version eines Images erstellt, die ebenfalls durch die Gültigkeitsprüfung von "firmwarecfg" bzw. "tr069fwupdate" fällt, kann das gerne berichten und mir das entsprechende File zur Verfügung stellen.
 
  • Like
Reaktionen: f666 und NDiIPP
Interessant, es deutet in der Tat einiges auf einen Bug in der Implementierung von AVM hin.

Könnte es sein, dass es sich um einen off-by-one error handelt?

Vermutung:
  • AVM verwendet intern einen 10K Buffer beim Einlesen der Datei und/oder bei der Berechnung des MD5-Wertes.
  • beginnt der Signatur-Member genau 2 Blöcke vor einer 10K Grenze (was gleichbedeutend mit "der Teil, über den die MD5-Summe gerechnet werden soll, ist ein vielfaches von 10K" ist), so wird der letzte 10K Block (aus Versehen) bei der Berechnung der MD5-Summe nicht berücksichtigt - irgendeine falsche Schleife-Abbruchbedingung (z.B. "<" statt "<=") oder so.
Wenn die Vermutung zutrifft, so wüsste ich einen Sicherheitsangriff, vorausgesetzt AVM hat mal Images in passender Größe veröffentlicht :oops:

p.s.
Damit ergibt sich bei exakt einer Konstellation von 20 möglichen (10 KB sind 20 TAR-Blöcke) das Problem - die Wahrscheinlichkeit für sein Auftreten liegt also bei 1:19.
1 zu 20 ;)
 
Zuletzt bearbeitet:
Stimmt ... ich hätte besser nicht von "Wahrscheinlichkeit" geschrieben in diesem Satz, denn die ist tatsächlich 0,05.

Ich wollte eigentlich auch zum Ausdruck bringen, daß einem fehlerhaften Fall am Ende 19 gegenüberstehen, bei denen es nicht zum Fehler kommt (wie in den E-Mails, wenn ich das dort nicht auch "falsch" dargestellt habe).
 
So, ich hab's ;-)

Es ist mit sehr großer Wahrscheinlichkeit ein AVM off-by-one bug.

Im Falle, dass ./var/signature an der 9KB Grenze liegt (was gleichbedeutend ist mit "die Trennung zwischen ./var/signature und EoA-Marker verläuft genau an einer 10KB Grenze"), so gehen nur 2 zero-Blöcke in die MD5-Berechnung mit ein, i.e. nur die 2 genullten Blöcke von ./var/signature. In allen anderen Fällen werden 4 zero-Blöcke bei der MD5-Berechnung berücksichtigt: die 2 von ./var/signature + die 2 vom EoA-Marker.

Mit großer Wahrscheinlichkeit nutzt AVM intern einen 10KB Buffer. Liegt EoA-Marker als einziger in dem letzten 10KB Block, so wird er nicht berücksichtigt, weil die Anzahl der durchzuiterierenden Blöcke vermutlich falsch gezählt wird oder so.

@PeterPawn: mein Fix basiert noch auf der älteren Version. Darfst den Fix gerne übernehmen (vergiss nicht das check-script, dieses habe ich nicht gefixt) und es beliebig verändern ;) Das Hinzufügen vom dummy-member sollte damit nicht mehr notwendig sein.
 
Zuletzt bearbeitet:
Das Hinzufügen vom dummy-member sollte damit nicht mehr notwendig sein.
Jetzt habe ich den Faden verloren ... Deinen zweiten Patch aus CS14861 habe ich ja schon eingebaut: https://github.com/PeterPawn/YourFritz/tree/3f02831238028e5d37887bab3701f06418634df9 und daß das an der 10 KB-Grenze (bzw. allen Vielfachen davon) schiefgeht, hatte ich m.E. auch schon geschrieben.

Und sei bitte nicht böse, aber eine Änderung, daß beim Potential für den AVM-Fehler jetzt einfach der Algorithmus für das Signieren verändert wird, halte ich nicht für zielführend - u.a. auch deshalb, weil dann tatsächlich meine bisherigen Checks (bis hin zu dem in PowerShell bzw. C#, der ja auch schon im GitHub-Verzeichnis liegt) auch angepaßt werden müßten.

Spätestens wenn AVM das dann für künftige Versionen doch noch fixt (nun wissen sie dank unserer Bemühungen ja, wo das Problem liegt), funktioniert Dein Vorschlag nicht mehr und dann steht man da und muß zwei verschiedene Algorithmen anwenden, in Abhängigkeit von der (erwarteten) Version der AVM-Firmware (denn es geht ja um die bereits installierte, die diese Signatur prüfen soll und nicht um die (bekannte) Version im gerade zu signierenden Image).

Da sehe ich deutliche Vorteile (und weniger Konsequenzen und Fehlerpotential) bei meinem Ansatz ... dem schadet es auch nichts, wenn AVM den Fehler korrigiert, genauso wenig wie es schadet, wenn man es dort so läßt, wie es derzeit ist.

Und selbst wenn das mal korrigiert werden sollte und es dann zwei Versionen der MD5-Berechnung bei AVM gibt, kann man auf genau demselben Weg Images signieren, die von der alten und einer korrigierten Version korrekt verifiziert werden können, denn man darf sicherlich unterstellen, daß auch die korrigierte AVM-Version ein Image mit dem Füllblock noch akzeptiert.

Das zusätzliche Verzeichnis als Füllblock ist für alle derzeit bekannten Verwendungszwecke von solchen Image-Dateien irrelevant (an der Stelle direkt vor der Signatur), das existiert zu diesem Zeitpunkt definitiv schon und wird daher vom "tar"-Kommando einfach ignoriert (bzw. kommt da ohnehin nur noch als "./var/unpack/" an) ... und es gibt m.W. gar keine Images, die nicht mit einem Verzeichnis "./var/" beginnen bzw. wenn es solche gibt, verändert die spätestens der AVM-Filter (der alles wegbeißt, was kein Verzeichnis oder keine reguläre Datei ist und nicht mit "./var/" im Dateinamen startet) gleich wieder - dann das Ändern in "./var/unpack/" ist in den neueren Versionen "gesetzt" (anstelle des älteren "./var/") und läßt keine Alternativen zu, egal welches Basisverzeichnis ("/" oder "/var/packet") beim Auspacken durch das "tar" in der Pipe verwendet wird.

Ich kenne drei verschiedene Formen von signierten AVM-Images:
  • Firmware-Updates für die Box
  • Firmware-Updates für Zubehör, z.B. DECT-Geräte
  • Plugin-Images mit 1 bis n Plugins
und bei allen diesen gibt es als ersten Eintrag ein "./var/"-Verzeichnis. Wer das anders/besser weiß, möge es erklären, wo das der Fall ist.

In der neuen Version werde ich dann auch noch darauf testen, daß der erste Eintrag tatsächlich das erwartete Verzeichnis "./var/" ist (über das genauere Prüfen auf korrekte Struktur hatte ich ja schon mit Dir oder hier im Thread "gesprochen") - das ist im Moment tatsächlich nur eine Annahme, die aber von jedem "well-formed image" erfüllt werden sollte.

Ich lasse mich also noch davon überzeugen, diesen Test gleich noch (auch in der alten Version) einzubauen, bevor der Block "gedoppelt" wird bzw. zum Erzeugen des Signatur-Headers herhalten muß.

Aber die Lösung, das jetzt an das Verhalten der AVM-Firmware anzupassen, obwohl man dieses als falsch ansieht, macht für mich nicht wirklich Sinn, solange mein Workaround denselben Zweck erfüllt ... das geht bis zu dem Punkt, wo es (meines Erachtens jedenfalls, von meiner mißglückten Recherche habe ich weiter oben berichtet) immer noch ungeklärt ist, seit wann dieser Fehler bei AVM eigentlich genau besteht. Wenn Du das getestet haben solltest, hast Du es nicht erwähnt - die Annahme, daß es schon immer so war, ist damit in meinen Augen noch nicht wirklich untermauert.

Da müssen wir ggf. noch mal "reden", wenn wir nicht wollen, daß die Versionen auseinanderdriften ... zumal ja die Version mit dem Füllblock als (vorläufiger) Abschluß schon vorhanden ist und signierte Images ausgibt, die sowohl von der AVM-Software als auch von meinen zwei Versionen der Prüfung:

https://github.com/PeterPawn/YourFritz/blob/master/signimage/FirmwareImage.ps1#L2575
https://github.com/PeterPawn/YourFritz/blob/master/signimage/check_signed_image

korrekt behandelt werden.

Wenn Du mir ein AVM-Image zeigst, das meine Prüfung nicht besteht (wo also der AVM-Fehler bei der Verifikation auch beim Signieren von AVM selbst berücksichtigt wird), dann reden wir vielleicht noch einmal darüber. Ich kenne aber bisher kein derartiges Image von AVM - warum sollte man jetzt auf Teufel komm raus eines erzeugen wollen, was nur mit der fehlerhaften AVM-Verifikation funktioniert?

Ich verstehe also - angesichts des vorhandenen Workarounds - gar nicht so richtig, warum ich überhaupt etwas zusätzlich ändern sollte, das über die bereits eingebaute Korrektur hinausgeht ... wie gesagt, beim Test auf "./var/" als ersten Eintrag lasse ich "mit mir reden", auch noch für die derzeitige Version.
 
Keine Ahnung, womit ich jetzt _den_ Ton verdient hätte bzw. die an die Klugscheißerei grenzenden Aussagen "Jetzt habe ich den Faden verloren ... daß das an der 10 KB-Grenze (bzw. allen Vielfachen davon) schiefgeht, hatte ich m.E. auch schon geschrieben". Ja, hast Du, bloß hast Du nicht geschrieben, was genau da schiefgeht.

Mein "ich hab's"-Posting bezog sich ausschließlich auf die Freude über die Erkenntnis, es rausgefunden zu haben. Schließlich hast Du selbst es auch versucht, indem Du es mit zero-Blöcken hinten aufgefüllt hast.

Mit den Fragen, seit wann das Problem besteht und ob es besser ist, sich ans AVM-Verhalten zu halten oder es anders zu workarounden, oder vielleicht beides zu unterstützen, oder ob es AVM-Images gibt, die nur die fehlerhafte Verifikation bestehen, habe ich mich gestern Abend nach dem Fußballspiel in der Kürze der Zeit, die mir zur Verfügung stand, gar nicht beschäftigt.

p.s. Der Ton ist es... der Ton... der dann jegliche Motivation weg nimmt...
 
@er13:
Müssen wir das tatsächlich noch einmal aufwärmen, warum ich es nicht verstehe, wenn Du die Lösungen von anderen nahezu krankhaft "nachbesserst" und das auch noch ohne plausible Begründung? Die Du Dir wegen des Fußballspiels nicht überlegt hast - srsly?

Und entgegen Deiner Behauptung in #35 hast Du eben nicht nur Deine Freude über die gewonnene Erkenntnis hinsichtlich des Problems zum Ausdruck gebracht ... lies Dir bitte einfach noch einmal Deinen letzten Absatz in #33 durch.

Die Feststellung "wird dann nicht mehr gebraucht" und "darfst Du gerne übernehmen, ich habe es mal auf der Basis der alten Version selbst geändert" (und auch mal wieder direkt in den Freetz-Trunk eingecheckt, ist ja nicht so, daß wir das nicht auch schon als "no go" hatten, weil man es so "einfach nicht macht", wenn man mit anderen zusammenarbeiten will) finde ich da nur schwer mißzuverstehen - zumindest dann, wenn sich derjenige ein paar Gedanken über sein Vorgehen macht.

Ebenso merkwürdig ist Dein Titel des Commits im SVN: "yourfritz-host: workaround "number of zero blocks going into md5 calculation bug" - einen solchen "workaround" gab es nämlich bereits (wie wäre es denn mit "yet another workaround"?) und die Vorteile Deiner Version gegenüber der bereits vorhandenen kann ich weder erkennen, noch hast Du sie irgendwo nachvollziehbar "beschrieben".

Auch wenn ich das selbst nicht noch weiter ausgeführt hatte, wo konkret sich AVM nun "verrechnet", hatte ich es halt ermittelt (sonst hätte ich nicht so explizit mit dem (symbolischen) Finger in der Öffentlichkeit auf AVM gezeigt, wie ich es in #30 im zweiten Absatz tue) - nur spielt der konkrete Fehler und damit auch seine Beschreibung jenseits von "MD5 wird falsch berechnet" für die hier diskutierte Lösung tatsächlich nur dann überhaupt eine Rolle (deshalb habe ich das auch nicht weiter ausgeführt), wenn man sich - so wie Du - auf das Erstellen "fehlerhafter" Images einlassen will und das wollte und will ich gar nicht - es gibt für mich schlicht keinen ersichtlichen Grund dafür.

Ich kann mich auch nicht entsinnen, daß wir irgendetwas in dieser Richtung per E-Mail diskutiert hätten, was Dich nun dazu veranlassen könnte zu glauben, ich würde es auch nur in Erwägung ziehen, mich dem "AVM-Fehler" anzupassen. Wenn ich das wirklich wollte, warum sollte ich das dann nicht gleich selbst getan haben? Was Du für Freetz dann für das Beste hältst, mußt Du eben selbst einschätzen ... ich habe meine Argumente, warum das für mich Unfug wäre, deutlich dargelegt.

Wenn ich meinerseits in #30 etwas dazu schreibe, daß ich beim "Verlängern" der Image-Datei keine Änderung herbeiführen konnte, dann ist das keine "Ratlosigkeit" ob der Ursache, sondern dann dient das - in meinen Augen auch absolut offensichtlich - der Einleitung einer Erklärung (oder meinetwegen sogar Begründung), warum ich "gezwungen" war, den Beginn der Signatur von dieser 9 KB-Grenze irgendwie zu verschieben (siehe auch mein eigener Commit-Text: https://github.com/PeterPawn/YourFritz/commit/07880f8cad124cbad5781a61ca7449ff1c6c4dad) und das geht nun mal am ehesten, indem man davor Daten einfügt, weil das Entfernen eher schwierig ist und ein "Umsortieren" der Member innerhalb des Archivs (damit die Signatur an einem anderen Offset landet) auch eher unpraktikabel ist.

Mal ganz abgesehen davon, daß für aktuelle Versionen auch nicht so ganz klar ist, ob die Signatur irgendwo in der Mitte stehen darf oder nicht. Bei CVC-Images für DOCSIS-Boxen steht sie tatsächlich am Beginn der Datei:
Code:
vidar:/home/FritzBox/FB6490_Pentest $ tar tvf 6490.en-de-es-it-fr-pl.141.06.50.120308002013.image
drwxr-x--- 0/0               0 2016-03-02 20:40 ./var/
-rw-r----- 0/0             128 2016-03-02 20:40 ./var/signature
-r-xr-x--- 0/0          271036 2016-02-03 18:58 ./var/regelex
-r-xr-x--- 0/0            7308 2016-02-03 18:58 ./var/md5sumext
-r-xr-x--- 0/0            5764 2016-02-03 18:58 ./var/burnimage
-rwxr-x--- 0/0           35863 2016-03-02 20:40 ./var/install
-rwxr-x--- 0/0            2795 2016-03-02 20:40 ./var/info.txt
drwxr-x--- 0/0               0 2016-03-02 20:40 ./var/remote/
drwxr-x--- 0/0               0 2016-03-02 20:40 ./var/remote/var/
drwxr-x--- 0/0               0 2016-03-02 20:40 ./var/remote/var/tmp/
-rw-r----- 0/0        15310037 2016-03-02 20:40 ./var/remote/var/tmp/filesystem.image
-rw-r----- 0/0         1818178 2016-03-02 20:40 ./var/remote/var/tmp/kernel.image
drwxr-x--- 0/0               0 2016-03-02 20:40 ./var/remote/var/tmp/x86/
-rw-r----- 0/0        13379040 2016-03-02 20:40 ./var/remote/var/tmp/x86/filesystem.image
-rw-r----- 0/0         3697296 2016-03-02 20:40 ./var/remote/var/tmp/x86/kernel.image
-r-xr-x--- 0/0          267844 2016-02-03 18:58 ./var/chksum
, aber die müssen m.W. auch nicht mehr durch die Signaturprüfung, weil sie die Zertifikatprüfung bereits bestanden haben sollten. Damit war aber das Umsortieren (mal abgesehen vom notwendigen Aufwand, weil man als nicht-privilegierter Benutzer das auch nicht einfach so entpacken und in anderer Reihenfolge neu packen kann) auch keine Option und es blieb (bleibt) nur die Möglichkeit, die Signatur irgendwie zu verschieben, solange man den Inhalt davor nicht ändern kann oder will.

Auch die Feststellung, daß bei AVM immer 10 KB-Blöcke (bzw. Vielfache für die gesamte Datei) verwendet werden (inkl. der Feststellung per E-Mail, daß es beim GNU-"tar" genauso ist, wenn man nicht weitere Optionen angibt und daß ich darauf aber bewußt verzichtet habe beim Signieren) für eine Image-Datei und es dort damit eigentlich nicht vorkommen kann, daß eine Signatur-Datei an dieser "magischen Grenze" landet, solange man nicht noch einen komplett leeren 10 KB-Block für "end of archive" anhängt, war ja bereits getroffen (per Mail), ebenso die Aussage, daß es bei AVM zuvor schon diesen "off-by-one"-Error gab beim Signieren (nicht mit der Prüfung zu verwechseln), der dann zu den "short read"-Fehlern im "tar" führte - da wurden dann schlicht gar keine EoA-Blöcke mehr ausgegeben, wenn die Signatur genau "an der Kante" endete.

Vielleicht überlegst Du Dir ja auch einfach noch einmal, wo Du meinem Text jetzt entnommen hast, daß das Thema, wie genau sich AVM verrechnet, noch unklar wäre und nun - selbst wenn es so sein sollte - weiter untersucht werden müßte ... und selbst wenn das auch noch so wäre, warum hast Du das dann als Aufforderung an Dich gesehen, da auch wieder "dazwischenzufunken"? Was wäre denn gewesen, wenn ich parallel dazu auch noch weiter an dem Thema gesucht hätte, vorausgesetzt, Deine Annahme hätte gestimmt? Dein Patch im Freetz-Trunk (noch dazu gegen die alte Version) ist ja nun deutlich mehr als ein "Heureka".

Das ist doch hier kein Wettbewerb, wo irgendeiner "Erster" schreien muß ... und wer es dennoch tut, muß sich dann immer noch nicht wundern, wenn die anderen (die davon gar nichts wußten, daß es in einen solchen Wettbewerb mündet) vor die Begeisterung über das Ergebnis (selbst wenn das "neu" gewesen wäre) erst noch ein paar Überlegungen zum Nutzen setzen, bevor sie Deinen "euphorischen" Vorschlägen folgen.

Zumal Du Dich über fehlende Resonanz oder "Mitarbeit" meinerseits ja wohl auch nicht beklagen kannst ... ich habe Deinen Hinweis auf das Problem aufgenommen und mit Dir lang und breit diskutiert (per E-Mail) und versucht, das Problem nachzustellen.

Auch da gab es schon neuerliche "Mißverständnissen", wie Du Dich sicherlich erinnern wirst - vielleicht verstehst Du ja nach meiner Erklärung zum Fehlercode 210 weiter oben (und wann der noch auftritt, denn das habe ich auch lang und breit erklärt und Du wirst das sicherlich überprüft haben) besser, warum ich erst einmal von einem falschen öffentlichen Schlüssel ausgegangen bin (auch weil die "fwsign.log" eben zeigt, daß alle Dateien in Betracht gezogen werden, obwohl bei der passenden zum Entschlüsseln eigentlich Schluß sein sollte mit der Suche), zumal Du ja zu diesem Zeitpunkt auch noch mit zwei unterschiedlichen Schlüsseln hantiert hast.

Da hatte ich dann schlicht Deine Erklärungen nicht verstanden, auf welcher Box, mit welchem Image und mit welchem Key das nun auftrat und es hatte rein nichts damit zu tun, daß ich Dich für nicht fähig halte. "Die gewünschten Tests. Auch, wenn es mich ehrlich gesagt wundert, dass Du mir quasi unterstellst, nicht in der Lage zu sein, festzustellen, ob ich mit dem richtigen Key teste." - das hast Du mir geschrieben, nachdem ich Dich mehrmals darum gebeten hatte, das doch einfach noch einmal zu verifizieren und zwar so, daß es nicht auf "ich weiß schon, was ich mache", sondern auf "ich habe das überprüft" hinauslief.


Es gab also für Dich - nach meiner Ansicht jedenfalls - erneut keinen ersichtlichen Grund, hier als Einzelkämpfer für mich "in die Bresche springen" zu wollen (anstatt sich über die Suche abzustimmen und mal zu fragen, ob sie (a) überhaupt notwendig ist und man (b) nun irgendwelche weiteren Konsequenzen aus dem erkannten Fehler bei AVM ziehen müßte) ... mal ganz abgesehen davon, daß es auch dann noch "politisch korrekt" gewesen wäre, wenn Du für Deine eigenen Patches auf den aktuellen Stand meiner "Vorarbeit" zurückgegriffen hättest (wo ich außerdem noch ein paar Vorschläge von Dir hinsichtlich des Ergebnisses beim Signieren bereits umgesetzt hatte - wenn auch tatsächlich nur hinsichtlich des Ergebnisses und nicht beim Weg dorthin).

Die Frage, ob man seine eigenen Änderungen an fremdem Code direkt in Freetz einchecken sollte oder nicht (hier war es nicht mal notwendig, damit irgendjemand mit Freetz arbeiten konnte, weil die aktuelle Version aus dem YourFritz-Repo auch funktioniert - zumindest wäre mir nichts Gegenteiliges zu Ohren gekommen) und ob man damit schon "vollendete Tatsachen" schafft bzw. ob der Trunk nun mehr "persönliches Repository" für irgendwelche "Vorschläge" ist oder doch ein für die Öffentlichkeit gedachter Stand, haben wir inzwischen auch so oft ventiliert (und trotzdem ist sie auf einen Schlag wieder aktuell - woran liegt das wohl?), daß es vermutlich nichts Neues mehr zu bereden gäbe.

Wenn Du Dich durch meine Reaktion "demotiviert" fühlst, wie es ja das Postskriptum in #35 wohl zum Ausdruck bringen will ... vielleicht überlegst Du Dir ja mal, wie es anderen (konkret mir) dabei gehen könnte und ob nicht schon mehrere Leute (und nicht nur ich) versucht haben, Dir zu erklären, daß man "das einfach nicht so macht". Wenn dann einmal ein "Finger weg" nicht ausreichend war und sich das immer aufs Neue wiederholt, dann muß man sich auch nicht wundern, wenn der Ton der anderen irgendwann echt gereizt ist.

er13 schrieb:
Keine Ahnung, womit ich jetzt _den_ Ton verdient hätte bzw. die an die Klugscheißerei grenzenden Aussagen "Jetzt habe ich den Faden verloren ... daß das an der 10 KB-Grenze (bzw. allen Vielfachen davon) schiefgeht, hatte ich m.E. auch schon geschrieben". Ja, hast Du, bloß hast Du nicht geschrieben, was genau da schiefgeht.
EDIT: Abgesehen davon finde ich bei der "Nachlese" in #34 nicht mal etwas, was Du als "Ton" beanstanden könntest ... ich habe da tatsächlich den Faden verloren oder kannst Du mir eine einzige plausible Begründung dafür liefern, warum Du - parallel zu meinem Patch https://github.com/PeterPawn/YourFritz/commit/3f02831238028e5d37887bab3701f06418634df9 - dann drei Tage später diesen hier in den Freetz-Trunk einspielst: https://github.com/Freetz/freetz/co...ca4a3e6#diff-2d679a338df8e5752d4029de28aa87ee ? Das hat nichts mit "Klugscheißerei" zu tun und Du willst ja sicherlich auch nicht bestreiten, daß ich davor schon geschrieben hatte, daß es an den 10 KB-Grenzen schief geht und sogar schon, warum das genau der Fall ist - nämlich weil der AVM-Code da den falschen Hash ermittelt. Was denkst Du denn, was in der "Rohform" in der Funktion "hash()" in meinem Skript noch enthalten war und nur wieder entfernt wurde, weil es für die "Demonstration" keine Rolle spielte?

Ich habe Dir am 04.09. um 06:10 Uhr diese E-Mail geschrieben und auch hier kann ich nichts entdecken, was die "Annahme" nahelegen würde, ich hätte das nicht "ausermittelt", warum es zu dem Fehler kommt:
ich habe den Fehler in "firmwarecfg stream" (das versteckt sich hinter
den ganzen Prüfungen) auf eine bestimmte Konstellation eingegrenzt ...
m.E. berechnet AVM dann den MD5-Hash über die Datei falsch und dann geht
natürlich auch die Prüfung in die Hose - warum das aber "210" ist, weiß
wohl nur AVM alleine. Vermutlich wird hier verzweifelt versucht, die
Signatur-Datei irgendwie zu entschlüsseln und mit dem vorausberechneten
Hash zu vergleichen und wenn das keine Übereinstimmung gibt, kommt der
(eigentlich falsche) Fehlercode für "Signatur-Key unbekannt". Wenn Dich
die "Demo" interessiert, die den Fehler pointiert aufzeigt ... die Datei
heißt "test_signature_problem" und muß auf der Box laufen, wo natürlich
dann auch Signieren und Verifizieren funktionieren muß (also OpenSSL
gebraucht wird als CLI).

Wie lange der Fehler nun tatsächlich schon enthalten ist oder ob der
erst mit dem Protokollieren von Updates in der "fwupdatetrace.cfg" im
TFFS hinzukam (das dürfte in etwa die Zeit gewesen sein), kann ich nicht
sagen ... beim Versuch, die 7490 auf eine ältere Version zu bringen,
hängt sich der "telefon"-Daemon und in der Folge die gesamte Firmware
weg und auf eine "komplette Neueinrichtung" hatte ich keine rechte Lust.

Wie auch immer ... mit den Änderungen sollten jetzt auch alle Deine
"Problemfälle" ordentlich signiert werden und bei der Gelegenheit habe
ich gleich noch die Verwendung von "tar" (egal in welcher
Geschmacksrichtung) beim Erzeugen des Signatur-Members abgestellt (das
wird aber noch zum Lesen des Inhaltsverzeichnisses benutzt). Da die
Daten für "/var/signature" jetzt 1:1 vom ersten Eintrag im Tarball
kopiert werden (nur der Name, die Größe, der Typ und die Prüfsumme
werden geändert), sollte das auch die von Dir gewünschten
"reproduzierbaren" Image-Dateien nach dem Signieren ergeben und
gleichzeitig jedem potentiellen Problem mit UID/GID auch noch aus dem
Weg gehen.
Du wußtest also zum Zeitpunkt Deines eigenen Patches in Freetz auch schon, daß es eine geänderte Version von mir gab.
----------------------------------------------------------------------------------------------------------------

Abgesehen von allem anderen (um mal wieder zum Thema des Threads zu kommen) ... ich kann #35 jetzt nicht entnehmen, wie Du weiter zu verfahren gedenkst im Hinblick auf die Dateien aus meinem "signimage"-Ordner. Es wäre nett, wenn Du das noch erklären könntest ... auch wenn diese Implementierung nicht von Freetz und der Benutzung dort abhängig ist, denn dafür habe ich natürlich eigene Pläne.

Ich halte meine Argumentation hinsichtlich der Notwendigkeit und des fehlenden Sinns einer "Adaption" an das falsche Verhalten der AVM-Firmware nach wie vor für plausibel - auch wenn es in Freetz keine Prüfung der Firmware gibt (weil die ja gesondert "gelagert" wird und Freetz an die Stelle der Signaturprüfung den Vergleich von Hash-Werten setzt - was bei zwei gültigen AVM-Images mit unterschiedlichen Hashes für dieselbe Version (meinetwegen weil eine der beiden eine geänderte "info.txt" enthält) auch zum Problem werden könnte), könnte sich das in der Zukunft ja mal ändern, woraufhin dann auch für Freetz das "check_signed_image" Bedeutung erlangen könnte. Das sollte man dann - sofern sich die Stände hier tatsächlich trennen sollten - auch im Freetz-Trunk noch anpassen.
 
Zuletzt bearbeitet:
Ich ziehe hier mal für mich ein Fazit: Für diesen Patch: http://freetz.org/changeset/14863/ gibt es gar keine andere, plausible Erklärung mehr als die Absicht, die Versionen von https://github.com/PeterPawn/YourFritz/commit/6b50cebb79c449814199de0541ad7ec55aee2a96 an auseinanderlaufen zu lassen.

Das war's für mich dann - irgendeine dauerhaft vernünftige Kommunikation und/oder Zusammenarbeit ist offenbar nicht möglich und nicht erwünscht. Zuvor gab es vom 23.08. bis 26.08.2018 zwar noch 32 (zweiunddreißig) E-Mails von @er13, die mich zu diesem Thema erreichten und ich schrieb ihm meinerseits 24 (vierundzwanzig) Antworten - aber wehe, man folgt nicht buchstabengetreu den Vorstellungen und "Änderungswünschen" des Hrn. R.

Dann kommt auf seiner Seite nicht etwa das Überlegen, ob die Argumente und Änderungen von anderen vielleicht auch etwas für sich haben könnten ... nein, dann wird einfach auf Durchzug und auf stur geschaltet, die Kommnunikation komplett abgebrochen und es wird genau so gemacht, wie er (und nur er) es sich vorstellt.

---------------------------------------------------------------------------------------------------------------

Für irgendein Argument ist er dann gar nicht mehr erreichbar ... das ist auch kein Einzelfall, das habe ich jetzt mind. dreimal in immer exakt derselben Art und Weise erlebt - von der Anpassung der SquashFS-Tools in Version 4.3 an die AVM-Änderungen (wo er meine als "Vorschau" per E-Mail an ihn gesendeten Quelltexte, trotz ausdrücklicher anderer Bitte im E-Mail-Text, als Grundlage für seine eigenen Anpassungen am "mksquashfs" nahm, bevor ich überhaupt die Chance hatte, das selbst zum Ende zu führen), beim "avm_kernel_config" (https://www.ip-phone-forum.de/threa...urce-paket-von-avm.287995/page-3#post-2215975) und nun auch wieder hier - und das sind nur die "großen" Ärgernisse.

Es gab zum Zeitpunkt von
@PeterPawn: mein Fix basiert noch auf der älteren Version. Darfst den Fix gerne übernehmen (vergiss nicht das check-script, dieses habe ich nicht gefixt) und es beliebig verändern ;) Das Hinzufügen vom dummy-member sollte damit nicht mehr notwendig sein.
bereits einen "Fix" und warum die Änderung von @er13 in dieser Form gar nicht notwendig ist und spätestens bei einer Korrektur auf AVM-Seite keinen Sinn mehr ergibt, habe ich oben versucht zu erklären. Das veranlaßt ihn nicht etwa dazu, sich Gegenargumente zu überlegen (und diese dann auch mitzuteilen) oder seine Änderungen rückgängig zu machen ... nein, da wird 1:1 so weitergemacht, wie sich Hr. R. das vorstellt.

Denn diese letzte Änderung in CS14863 betrifft eine Zeile in meinem Skript, die es in der aktuellen Version gar nicht mehr gibt ... ich hatte ja schon in #30 erklärt, daß ich das Einpacken der Signatur mittels "tar" komplett entfernt und durch die Modifikation des ersten Headers in der Datei ersetzt habe. Das hindert @er13 aber nicht daran, weiter fleißig in Freetz auf die alte Version zu setzen ... obwohl ich bereitwillig auch noch seine Vorschläge zum reproduzierbaren Signieren aufgenommen habe - halt nicht so, wie er es gerne hätte (mit irgendwelchem Durchsuchen der Archiv-Member nach dem höchsten Datum einer Datei), sondern auf einem anderen - aber nicht weniger funktionsfähigen - Weg, der zusätzlich noch andere Vorteile hat (u.a. braucht der kein "sort" und niemand muß sich durch den regex-Dschungel schlagen beim Extrahieren einer Zeit).

Und selbst das könnte man noch einfacher haben ... denn gerade weil das TAR-Format dem Austausch von Daten dient, kann man mit den bereits bekannten Offsets der Member im Archiv (das ist hier von @er13 ja auch noch als zweite Schleife über das Inhaltsverzeichnis implementiert, obwohl es davor schon eine gibt - über das "Theater", wenn das ein anderer so implementiert hätte, denke ich lieber nicht nach) auch problemlos diese Zeitangabe als (oktal kodierte) Unix-Timestamp aus dem betreffenden Header-Block extrahieren und braucht die ganzen "sed"-Aufrufe in der Pipe nicht (https://github.com/Freetz/freetz/bl...-host/patches/020-reproducible_signings.patch) - und auch die Optionen "-E" und "-r" sind wieder das genaue Gegenteil von dem, was ich weiter oben als (zusätzliches) Ziel proklamiert habe:
dann auch gleich POSIX-kompatibel

Es ist auch wenig wahrscheinlich, daß @er13 zum Zeitpunkt seiner Änderung in Freetz keine Kenntnis von meinem Patch hatte, denn neben dem Beitrag hier und meiner E-Mail vom 04.09.2018 an ihn gibt es noch mind. ein weiteres "Indiz" dafür. Die Abfrage in der Zeile: https://github.com/Freetz/freetz/bl...0-signing_zero_blocks_going_into_md5.patch#L9
Code:
if [ $(( ( copy_blocks + 2 ) % 20 )) -eq 0 ]; then
hat vermutlich nur deshalb exakt dasselbe Format (und verwendet dieselbe Berechnung) wie meine in https://github.com/Freetz/freetz/bl...0-signing_zero_blocks_going_into_md5.patch#L9, weil das die einzige Möglichkeit ist zu ermitteln, ob eine Modulo-Division durch 20 das Ergebnis 18 hat.

Und diese Zeile habe ich bei mir erst nach dem Commit eingefügt, gegen den die ganzen Patches in Freetz jetzt arbeiten: https://github.com/PeterPawn/YourFritz/commits/master. Das ist zwar in dem Patch von @er13 eine andere Stelle (wenige Zeilen tiefer), aber die von mir zusätzlich hinzugefügten Kommentare vor der Behandlung dieser Ausnahmenbedingung hätten auch eher nicht zu seiner Änderung gepaßt.

Ich will damit nur verdeutlichen, daß irgendein "habe ich nicht gesehen" oder "habe ich nicht gewußt" schon reichlich unwahrscheinlich ist als "Begründung", warum da tapfer weiter gegen den alten Stand "gearbeitet" wird. Das steht allerdings alles unter GPLv2 und die "schöpferische Höhe" der o.a. Zeile ist nun auch nicht überwältigend - ich will hier also gar nicht auf Urheberrechte o.ä. hinaus, sondern nur aufzeigen, daß hier wieder "aus Prinzip" ein anderer Weg von @er13 eingeschlagen wurde.

Die andere Erklärung dafür wäre, daß der "Programmierstil" von @er13 und mir doch ähnlicher ist, als man es vermuten sollte ... eher unwahrscheinlich angesichts unserer bisherigen Auseinandersetzungen.

Oder hier wurde am Ende dann eben doch einfach nur "abgeschrieben" und das dann eben erneut nur mit dem Ziel, unbedingt auf dem "alten Stand" mit den eigenen Patches und dem dabei eingeschlagenen Weg zu beharren - und die Programme anderer erneut unbedingt mit einem "eigenen Anstrich" zu versehen.

Da bleibt mir dann auch nur noch die Feststellung, daß der Patch https://github.com/Freetz/freetz/bl...tches/035-signing_dd_reading_from_pipes.patch genauso unnötig ist ... in meiner Version des Skripts gibt es nämlich auch schon seit https://github.com/PeterPawn/YourFritz/commit/07880f8cad124cbad5781a61ca7449ff1c6c4dad gar keinen "dd"-Aufruf mehr, der aus einer Pipe liest und dabei eine Blocksize != 1 und eine feste "Blockanzahl" benutzt.

Entweder es wird aus einer Datei gelesen und nicht aus einer Pipe oder es wird eine Blocksize von 1 verwendet (was "iflags=fullblock" überflüssig macht) oder - wie hier: https://github.com/PeterPawn/YourFr...a61ca7449ff1c6c4dad/signimage/sign_image#L429 bei den "printf"-Statements - es gibt keine "Vorgaben" für die Anzahl der zu lesenden Bytes (Blocksize ist 1) und damit ist bei EOF in der Pipe auch tatsächlich Schluß.

Irgendwelche "short reads" (also Leseversuche, bei denen Daten zurückgeliefert werden, die kürzer sind als die "angeforderte" Länge) kann es da gar nicht mehr geben - mithin auch keine Notwendigkeit, sich dagegen irgendwie abzusichern (und schon gar nicht, mit "head" nun noch eine weitere Abhängigkeit vom Vorhandensein eines Kommandos einzuführen, dessen "c"-Option ebenfalls wieder "non-POSIX" ist).

@er13: Wenn Du Code brauchst, an dem Du Dich "austoben" kannst mit Deiner eigenen Kreativität, dann schreib' Dir selber welchen ... wenn andere sich auch Gedanken machen über die Sachen, die sie schreiben und für die eingeschlagenen Wege eigene Gründe und Begründungen haben, dann ist es ganz, ganz schlechter Stil, das einfach zu ignorieren (es reicht ja offensichtlich nicht mal für Gegenargumente oder eine eigene Begründung, warum die eigene Lösung jetzt die "bessere" sein sollte) und unbedingt den eigenen Kopf durchsetzen zu müssen. Ich habe Deiner Bitte entsprochen (per E-Mail: "Ich wäre Dir dankbar, wenn Du sie in Dein neues Tools aufnehmen könntest, das Signieren reproduzierbar zu machen") ... am Ende zählt hier das Ergebnis und ich muß dabei nicht unbedingt dem von Dir "vorgeschriebenen" Weg folgen.

---------------------------------------------------------------------------------------------------------------

Ich weiß nicht so recht, was das alles soll - am Ende läuft es wohl darauf hinaus, daß man seine eigenen Sachen zwar unter GPL stellen möchte, aber tatsächlich noch den Passus "außer beim Freetz-Projekt, da nur in nicht von @er13 'personalisierter' Form" hinzufügen muß? Wenn jemand tatsächlich der Ansicht ist, seine eigenen Änderungen wären "besser", "logischer" oder was auch immer (ich trete aber auch gerne wieder mit Dir in die Diskussion ein, wo Du (EDIT: bei früheren Gelegenheiten) durch Deine Änderungen "verschlimmbessert" hast), dann kann/sollte er das auch mit dem jeweiligen Urheber diskutieren und dann kann man Argumente gegeneinander abwägen. Aber dafür reicht es offenbar auch nie so richtig ...

Das, was Du da - und zwar immer wieder aufs Neue - machst, hat mit Zusammenarbeit nichts, aber auch gar nichts, zu tun und die Tatsache, daß Du den Freetz-Trunk als Dein "privates Repository" dabei zu betrachten scheinst, setzt dem Ganzen nur noch die Krone auf. Ich habe zwar mal vor einiger Zeit in E-Mails zwischen Oliver, Dir und mir davon geschrieben, daß man alles Erdenkliche dagegen tun sollte, daß wegen dieser Querelen ein harter Fork von Freetz gemacht wird ... inzwischen bin ich da fast zu einer anderen Meinung gelangt.

Das, was Du da abziehst, ist nur noch Despotie und hat mit Entwicklungen durch eine Community rein gar nichts mehr zu tun. Wenn die anderen Freetz-Developer Dir nicht auf die Finger hauen und dieses Verhalten wohl auch deshalb klaglos hinnehmen, weil sich dann wenigstens noch jemand um Freetz kümmert (das Verdienst spreche ich Dir nicht ab), dann ist das zwar schade ... aber das heißt eben noch lange nicht, daß Freetz damit nun Dein privates Projekt wäre.

Aber vielleicht hilft ein solcher harter Fork (bei dem man dann den Schritt zu GitHub (bzw. "git") auch tatsächlich vollzieht, der ja ganz offensichtlich von Dir blockiert wird) ja dann auch wieder bei der Gewinnung neuer Mitstreiter ... denn daß einige von denen sich nicht nur wegen Zeitmangels zurückgezogen haben, sondern auch deshalb, weil sie es leid waren, immer wieder diese Diskussionen führen zu müssen, ist ein "offenes Geheimnis" und vielleicht haben sie ja nach einer Neu- oder Ausgründung auch wieder mehr Interesse; zumal das auch eine "schlankere" Alternative sein könnte, mit den Paketen, die für heute aktuelle Boxen und Firmware auch noch Sinn ergeben und von den Leuten tatsächlich gebraucht und genutzt werden.
 
Zuletzt bearbeitet:
Hallo Peter,

du triffst wiederholt Annahmen in Bezug darauf, was den anderen Menschen bewegt haben könnte bzw. was sich der andere Mensch gedacht haben könnte, und tätigst Aussagen auf Basis dieser Annahmen. Versuche mal (zumindest für einen Augenblick) die Alternative in Betracht zu ziehen, dass deine Annahmen nicht zutreffen.

Nun, was ich mir wirklich gedacht habe bzw. was mich bewegt hat und was ich mir gar nicht gedacht habe (der Teil "nicht gedacht habe" ist für deine Annahmen relevant bzw. für dein wiederholtes Reinterpretieren).

In #30 hast du folgendes geschrieben.
Mir ist es jedenfalls auch nicht gelungen, das Problem durch ein "Verlängern" der zu signierenden Daten zu entschärfen, wie man es ggf. annehmen könnte, basierend auf der Feststellung, daß bei AVM da mehr als die zwei geforderten "end of archive"-Blöcke (also 1 KByte aus binären Nullen) am Ende hängen können ... das ändert am Verifikationsproblem mal genau gar nichts.
...
Egal ... mit der neuen Version von "sign_image" wird jetzt bei der unpassenden Position der Signatur-Datei ... einfach der allererste Eintrag aus der Image-Datei (das sollte eigentlich immer ein Verzeichnis-Eintrag für "./var/" sein) noch einmal vor der Signatur in die Ausgabedatei kopiert ...

Meine Interpretation dieser Aussage war die folgende: "das Problem eingegrenzt (%9K), Ursache immer noch ungeklärt ("durchs Verlängern nicht gelungen"), Workaround implementiert". Es ist durchaus vorstellbar, dass diese Interpretation meinerseits falsch ist, es ist aber die Interpretation, die mich in dem Moment bewegt hat.

Daraufhin habe ich #31 eine Vermutung angestellt "die Summe wird über etwas kürzeres gerechnet". Die Vermutung basierte auf deiner Aussage, dass das Verlängern keinen Erfolg brachte, bzw. war für mich die logische Konsequenz davon - wenn nichts längeres, dann eben etwas kürzeres.

In #32 hast du auf #31 geantwortet, ohne dabei allerdings auf meine Vermutung einzugehen. Hättest du es zu dem Zeitpunkt gewusst, was genau das Problem ist bzw. der Meinung gewesen bist, dass das Ermitteln dessen, was genau AVM falsch macht, aus deiner Sicht nicht von Bedeutung ist (wie du dann #36 geschrieben hast), warum hast du es dann in dem Moment nicht gesagt. Für mich bedeutete diese Antwort jedenfalls das folgende - was genau AVM bei dieser Größe anders macht, weiß Peter noch nicht, obwohl er schon viel Zeit darein investiert hat. Dieselbe Anmerkung wie oben - durchaus vorstellbar, dass es die falsche Interpretation meinerseits ist, aber (wie oben) es ist nun mal das, was mich bewegt hat.

Ok, dachte ich mir, dann schaue ich es mir bei Gelegenheit an, vielleicht habe ich etwas mehr Glück. Ob du es glaubst oder nicht, die Motivation war dir zu helfen.

Die Gelegenheit ergab sich dann einen Tag später (zu diesem Zeitpunkt hast du auch nichts neues in Bezug auf meine Vermutung geschrieben) und zwar genau so, wie ich es in #35 geschrieben habe - am späten Abend nach dem Fußballspiel (Deu - Fra). Die Vermutung aus #31 war zwar in Bezug darauf, über was genau AVM die Summe rechnet, falsch, aber im wesentlichen "die Summe wird über etwas kürzeres gerechnet" richtig. Um es herauszufinden und zu testen, habe ich etwa 40 Minuten benötigt. Das Ergebnis war dann der in r14861 committe Code. Der Grund, warum mein Code auf dem zu dem Zeitpunkt älteren Stand basierte, ist auch ganz einfach - dein neuer Code war in Freetz zu dem Zeitpunkt einfach noch nicht enthalten (der war auch zu diesem Zeitpunkt erst einen Tag alt) und mir ging es zur späten Stunde wirklich nur darum, herauszufinden, was AVM falsch macht (oder andersrum ausgedrückt - fürs erst aktualisieren und erst danach die Analyse starten, hatte ich zu der späten Stunde schlicht und ergreifend keine Lust).

Nach dem Commit habe ich dann #33 geschrieben, in dem es mir in erster Linie darum ging, das Herausgefundene mit den anderen, auch mit dir, zu teilen.

Mit den Fragen [Wiederholung aus #35], seit wann das Problem besteht und ob es besser ist, sich ans AVM-Verhalten zu halten oder es anders zu workarounden, oder vielleicht beides zu unterstützen, oder ob es AVM-Images gibt, die nur die fehlerhafte Verifikation bestehen, habe ich mich ... nach dem Fußballspiel in der Kürze der Zeit, die mir zur Verfügung stand, gar nicht beschäftigt - um es nochmal zu betonen, schlicht und ergreifend die Fragen an sich gar nicht gestellt. Aus diesem "nicht gestellt" resultiert auch der letzte Absatz aus #33. Und auch die Tatsache, dass ich die Gründe "fürs warum mein Fix besser sei" in #33 gar nicht (Zitat) "untermauert" habe.

Deine Vermutung, dass es mir darum ging, "erster zu sein" oder "krankhaft deinen Code nachbessern zu wollen", ist insofern traurig, dass nichts davon stimmt und erst dein Reinterpretieren davon und der daraus resultierende Ton letzten Endes zu der erneuten Auseinandersetzung geführt haben.

Auch das heutige
Für diesen Patch: http://freetz.org/changeset/14863/ gibt es gar keine andere, plausible Erklärung mehr als die Absicht, die Versionen von ... auseinanderlaufen zu lassen.
ist wieder ein Beleg dafür, dass du über die Beweggründe der anderen falsche Annahmen triffst und dann auf Basis dieser falschen Annahmen handelst bzw. die Aussagen tätigst.

Der Grund für r14863 ist - man mag es kaum glauben - ein anderer. Du wirst hoffentlich in deiner Inbox die Mail von mir vom 25.08.2018 19:56 Uhr finden können, in der ich ein flush-Problem gemeldet habe. Und auch eine zweite Mail von 23:56 Uhr desselben Tages, in der ich geschrieben habe, dass ich das Problem in busybox tar vermute, das Problem an sich aber vorerst zurückgestellt habe. Gestern kam ich endlich mal dazu, mir das Problem anzuschauen. Da ich zu diesem Zeitpunkt noch nicht wusste, woran es liegt, habe ich bewusst die alte Version von sign_image verwendet, da ich wusste, dass ich mit dieser das Problem reproduzierbar triggern kann. Als es dann feststand, dass es doch kein Problem von busybox tar ist (und dass ich bei busybox gesucht habe belegt r14864), sondern eine wichtige Besonderheit bei der Verwendung von dd mit den (bufferisierten) Pipes ist, habe ich diesen Sachverhalt für mich (und wenn du möchtest auch für dich) mittels eines Commits dokumentiert. Das "auch für dich" ist wie folgt zu verstehen - ich weiß zwar nicht, ob dir das mit fullblock bekannt gewesen ist oder du dich damit erst nach r14863 auseinander gesetzt hast, aber irgendwie hat es diesen Code ohne den notwendigen fullblock seit Juni 2016 gegeben.

Wenn Du Code brauchst, an dem Du Dich "austoben" kannst mit Deiner eigenen Kreativität, dann schreib' Dir selber welchen ...
Ja, schreibe ich auch welchen. Schaue dir die Freetz-Commits an. Nicht alle Freetz-Commits sind die "krankhaften Nachbesserungen" deines Codes.

Auf den Rest von #37 möchte ich nicht eingehen - für diese Art von Auseinandersetzungen habe ich keine Zeit, keine Lust und die Erfahrung zeigt, dass sie sowieso zu nix führen.

Keine Grüße
Gene
 
@er13:
Alle Deine Erklärungsversuche klammern aber die Frage aus, warum es Dir nicht möglich gewesen sein sollte, sich darüber zuvor mit mir zu verständigen bzw. abzustimmen. Das gilt genauso für jeden anderen Autoren irgendeiner Software, die Du in Freetz integrieren willst und die dabei nach Deinen Vorstellungen (die durchaus auch mal echte Bedürfnisse als Hintergrund haben können, auch wenn ich bestreiten würde, daß das tatsächlich für jeden Änderungswunsch Deinerseits gilt) angepaßt wird.

Ich habe nicht unabsichtlich alle vorhergehenden Kontakte in dieser Angelegenheit so akribisch aufgelistet und erklärt - wenn Du einfach an die Stelle der Vermutungen, die nun Deinerseits auf "Annahmen" beruhen:
Meine Interpretation dieser Aussage war die folgende
wenigstens den Versuch der Kommunikation und die Nachfrage: "Und ... hast Du schon genauer ermittelt, was da bei der Berechnung des MD5-Hash an der 10 KB-Grenze schief geht?" gesetzt hättest, wären Dir 40 Minuten Arbeit erspart worden (von der Feststellung, wie genau AVM sich verrechnet, über den Patch bis hin zum Schreiben hier) und es hätte gar keine Chance für ein erneutes(!) "Mißverständnis" gegeben.

Selbst wenn ich Dein "ich wollte doch nur helfen" als Motivation anerkennen wollte, ist dieses "ungefragte bzw. ungebetene 'Helfen'" nach unserer gemeinsamen "Vorgeschichte" ja ohnehin nicht die schlaueste Vorgehensweise und nimmt dann zumindest billigend in Kauf, daß beim Gegenüber erneut derselbe, fatale Eindruck entsteht.

Schon Dein erstes Zitat in #38 ist ja auch einigermaßen merkwürdig. Es greift eine "Einleitung" meinerseits auf, ignoriert die dazwischen stehenden, weiteren Erklärungen in den folgenden drei Absätzen (inkl. der Frage mit den 10 KB-Grenzen, denn am Beginn hatte ich ja tatsächlich noch festgestellt, daß alle Dateien an (hex) 0x800 bzw. 0x000 enden - was auch für 2KB und 4KB sprechen könnte, bis man das tatsächliche Vielfache ermittelt hat) und zitiert dann erst wieder das "Egal ... ", was sich ja eindeutig auf die beschriebenen Probleme mit dem "Blick in die Vergangenheit" im Absatz davor bezieht - sofern man diesen eben nicht "ausblendet".

Die Erklärung, daß Du den dazwischen stehenden Teil beim Lesen übersprungen haben könntest, paßt auch nicht so recht, denn Deine (absolut korrekte) Feststellung, daß ich die Wahrscheinlichkeit für das Problem fälschlicherweise als 1:19 angegeben habe (anstatt die negativen den positiven Fällen gegenüberzustellen), kann ja auch nur auf dem Lesen genau dieser Absätze basieren.

------------------------------------------------------------------------------------

Auch ist es nun mal der übliche Weg, daß man Vorschläge für Änderungen nicht dadurch "einreicht", daß man sie als Patch in Freetz - quasi als "stille Post" - an den Autoren übermittelt (und damit allen anderen Freetz-Usern exakt zu diesem Zeitpunkt bereits "aufs Auge drückt") ... der Freetz-Trunk sollte eben gerade kein privates Repository sein.

Für Änderungsvorschläge bei fremder Software gibt es u.a. Pull-Requests in "git" (bzw. in GitHub), Du hast einen eigenen Fork vom YourFritz-Repository (https://github.com/er13/YourFritz) und solltest wissen, wie man Branches erstellt oder fremde Commits auch in einen älteren Stand mischt, notfalls sogar, wie man einen weiteren Fork am aktuellen Commit erstellt ... und der große Vorteil von GitHub wäre es dann noch, daß man dort auch seine Motivation und/oder Begründung für einen Patch mitteilen kann/sollte/(bis hin zum "muß").

Schon die Feststellung, daß Du Dir zuvor die weiteren Konsequenzen aus der Anpassung des Signaturalgorithmus an den AVM-Fehler gar nicht überlegt hast (so verstehe ich jetzt mal Deine eigenen Worte - wenn das falsch sein sollte, korrigiere mich bitte, wie weit genau Du Dir das überlegt hattest), sollte eigentlich für Dich selbst zu "STOP at this point" werden ... wieso checkst Du in den Freetz-Trunk solche Sachen dann trotzdem ein?

Ich brauche auch gar nicht darüber zu spekulieren, was Dich dazu bewegen mag ... ich brauche nur Deine Reaktionen (und wäre es hier tatsächlich der erste Fall, könnte man mir vielleicht noch etwas mehr "Ruhe" im Umgang mit diesem Thema abverlangen, aber das ist er eben nicht) zu betrachten und die "Fakten", was wirklich geschehen ist.

Auch unverständlich für mich: Auf der einen Seite möchtest Du nicht, daß man zuviel (Negatives) in Deine Reaktionen "hineininterpretiert" und auf der anderen Seite erwartest Du, daß man Deine (positiven) Beweggründe "erraten" soll, während Du selbst auf jeden Hinweis auf dieselben verzichtest? Da rede ich auch noch von Deiner Motivation und noch gar nicht von den - eben auch komplett fehlenden - Begründungen und/oder Überlegungen, warum Du das überhaupt ändern möchtest, was Du da gerade - in Deinen Augen - vorgeschlagen hast.

Schon eine etwas überlegtere Wortwahl (Warum muß es einen "Fix" für etwas geben, was gar nicht mehr länger "kaputt" ist - ja, es eigentlich nie war, wenn man einen AVM-Fehler darin sehen will, was ja auch Du nicht bestreitest?) hätte einiges an Eskalation vermeiden können und auch
fürs erst aktualisieren und erst danach die Analyse starten, hatte ich zu der späten Stunde schlicht und ergreifend keine Lust
ist irgendwie "putzig" ... Du hast keine Lust darauf, Dir die von mir vorgenommenen Änderungen anzusehen und startest stattdessen lieber (ungefragt und ungebeten) eine Analyse für ein Problem (und später für ein zweites, für welches noch einmal dasselbe gilt), was in meiner aktuellen Form Version gar nicht mehr vorkommt?

Und das "korrigierst" Du dann auch gleich noch auf der Basis des alten und überholten Standes? Aber für diese Korrektur des alten Standes verwendest Du dann nicht etwa s irgendeine andere Auswertung der Modulo-Division (wie z.B. "x % 20 == 18"), sondern genau dieselbe Formulierung, die ich in meiner Änderung (nach dem Stand auf dem Freetz-Trunk aber erst) benutzt habe?

Und das dann in der Summe zu allem Überfluß auch noch gleich - alleine im Zusammenhang mit diesem "Vorfall" hier - doppelt ... denn das gilt ja einerseits für Deine Änderung hinsichtlich des Signatur-Algorithmus (bzw. genauer der dort einzubeziehenden Daten, damit keine neuerlichen Mißverständnisse aufkommen) und andererseits auch noch für Deine - nun deutlich später als einen Tag nach meiner Änderung - vorgenommene Änderung bei "short reads" aus einer Pipe.

Hättest Du da einfach auf die neue Version zurückgegriffen (wie es normal gewesen wäre, wenn Du die Absicht hast, künftig wieder auf der Basis "des Originals" zu arbeiten - letztlich ist das ja auch der Punkt, der den Anlaß für meine "Schlußfolgerung" liefert, daß Du weiterhin Deine eigenen Änderungen in Freetz benutzten wirst), wäre Dir auch dort aufgefallen, daß die von Dir geänderte Zeile gar nicht mehr existiert und da liegt dann irgendwie der Schluß nahe, daß es den Patch dann auch nicht braucht.

------------------------------------------------------------------------------------

Was bleibt im Ergebnis (und ist das Einzige, was wirklich zählt)? Ein Freetz-Trunk, der einen alten Stand aus dem YourFritz-Repository benutzt und dazu dann Deine eigenen Patches. Das kannst Du gerne machen - zur (bisherigen) Lizenz habe ich schon genug geschrieben.

Ob das im Sinne der Freetz-Benutzer sein wird bzw. was Du machst, wenn ich Änderungen in das Repository einchecke, die andere Lösungen betreffen (z.B. "eva_tools") und wie Du diese dann "mischen" willst bzw. ob Du dann künftig der Ansprechpartner bei Problemen mit diesem alten Stand sein möchtest, wirst Du Dir sicherlich gründlich überlegt haben.

Es ist halt nur komisch, daß Du immer genau dann "in die Bresche springen" und "helfen" mußt oder willst, wenn irgendjemand anderes sich ein Thema vorgeknöpft hat und da zu ersten Ergebnissen gekommen ist. Das habe ich jetzt mehrfach erlebt (die "großen" Fälle habe ich weiter vorne im Thread schon angeführt) und es hatte durchaus seinen Grund, warum ich beim "decoder"-Projekt zunächst eine "Sperre" für die Verwendung in Freetz eingezogen hatte in der Lizenz: https://github.com/PeterPawn/decoder/blob/773591fdf9655bdbc672f575a577528c2bf3cd16/README.md
Wenn das nicht "Warnung" (und deutlicher Standpunkt meinerseits) genug war, weiß ich auch nicht mehr ... aber ich wollte tatsächlich mal die Chance haben, etwas selbst im Zusammenhang mit FRITZ!Boxen bis zum Ende zu entwickeln (auch wenn der aktuelle Stand noch nicht "das Ende" sein soll), bevor da wieder jemand "dazwischengrätscht" (um mal bei Fußballspiel zu bleiben).

Ich überlege seit einiger Zeit, ob ich nicht einen passenden Daemon oder eine Library schreiben sollte, mit der man auch beim aktuellen FRITZ!OS dynamische Portfreigaben für Dienste auf der Box selbst einrichten kann - wie das gehen könnte, habe ich in irgendeinem anderen Thread (ggf. sogar in zwei) man mal skizziert.

Wenn ich das tatsächlich in Angriff nehmen sollte, stehe ich wieder einmal vor dem Dilemma, ob ich das nun in einem "unfertigen" Zustand veröffentliche und zugänglich mache (was dann auch die Möglichkeit eröffnet, daß man sich über Alternativen und/oder Probleme austauscht(!)) oder ob ich das so lange unter Verschluß halte, bis es endgültig eine nutzbare Form angenommen hat. Ich habe tatsächlich die "Befürchtung", daß bei der erstbesten Gelegenheit, die sich z.B. mit einer "Frage" als Anregung zur Diskussion ergeben könnte, wieder ein anderer auf den fahrenden Zug aufspringt und die Ergebnisse (die ja auch auf Vorarbeiten beruhen, die teils sogar deutlich mehr Zeit in Anspruch nehmen, als solche Umsetzungen) für sich reklamiert - mit "auf Anregung von", wenn's gut läuft.

------------------------------------------------------------------------------------

Ich kann es auch nicht oft genug ansprechen ... erst die vollkommen fehlenden Style-Guides für Freetz ermöglichen es Dir immer wieder, irgendwelche eigenen "Verbesserungen" an fremdem Code vorzunehmen und nach Gutdünken zu schalten und zu walten, weil praktisch niemand irgendeine "Richtschnur" dafür hat, wie das in Freetz aussehen sollte - und zwar auch nicht nur nach Deiner Ansicht, sondern nach der Ansicht aller beteiligten Personen.

Schon die "Stille" von Deiner Seite, wenn es um den (tatsächlichen) Umzug von Freetz auf GitHub geht (was eben die verteilte Arbeit deutlich einfacher macht als das derzeit verwendete SVN), spricht für mich Bände.

Dort ist es nämlich auch deutlich leichter für weitere Interessierte, eigene Ideen umzusetzen und "anzubieten" und wenn diese dann tapfer ignoriert werden (wie es - trotz der zaghaften Versuche mit ein paar Änderungen - auch für die Puma6-Integration von @f666 nach meiner Ansicht immer noch gilt), dann kann ein interessierter Freetz-Benutzer auch mit dem entsprechenden Fork sein Glück versuchen.

Wenn auch @f666 seine Patches ständig nachbessern muß, liegt das einerseits daran, daß Du die notwendigen Änderungen im Trunk auch immer so einbaust, wie es gerade in Deiner eigenen Vorstellung paßt (das mag manchmal sogar zu begründen sein, auch wenn Du darauf auch dort eigentlich fast immer so weit verzichtest, daß nur jemand, der "im Thema steht", das einigermaßen verfolgen kann) und daß er gar keine realistische Chance erhielt, das selbst so zu machen, wie es (für Freetz) "richtig" wäre.

Das kannst nämlich offensichtlich nur Du und dann mußt Du Dich auch nicht wirklich wundern, wenn es gar nicht mehr vorwärts geht und sich Freetz nur noch im Ringelpiez aus aktualisierten Software-Paketen anderer Projekte und neuen AVM-Versionen im Kreise dreht.

------------------------------------------------------------------------------------

Alles das, was man ansonsten verbessern könnte (und sollte - die Zeit ist ja nicht stehengeblieben im Jahr 2013), lohnt sich für einen "Mitarbeiter" gar nicht wirklich, weil es keine wirklich funktionierenden Abstimmungen (genauer Absprachen, weil das nicht unbedingt "votes" sein müssen) für die künftigen Entwicklungsrichtungen gibt.

Wer sich an diesen Stellen engagieren will, kann das entweder für sich selbst machen (da reicht i.d.R. dann auch die "quick & dirty"-Lösung für die eigenen Bedürfnisse) oder er muß das selbst so weit "propagieren" und bekanntmachen, daß die Freetz-User davon Kenntnis erhalten und ggf. "mit den Füßen abstimmen" - das wäre dann der erwähnte "harte Fork" des Projekts, den eigentlich keiner ernsthaft wollen kann.

Ob und wann es irgendwelche "unabhängigen" Entwicklungsarbeiten jemals in den Freetz-Trunk schaffen werden, steht jedenfalls immer wieder aufs Neue vollkommen in den Sternen, wenn man mit solchen Sachen beginnen will - und wer arbeitet schon freiwillig für den Papierkorb bzw. wer macht sich schon gerne zum "Deppen", entwickelt eine passende Lösung und muß dann zusehen, wie diese von jemand anderem "verschönert" (um nicht zu sagen "okkupiert") wird?

Beispiel: Es würde vermutlich keine vier Stunden der Beschäftigung mit dem Thema brauchen, um Freetz so weit umzugestalten, daß es bei neuen Laborversionen von AVM (auf Wunsch) automatisch immer auf die aktuellste Version zurückgreift ... mit "juis_check" und "check_signed_image" wäre es ein Leichtes, die ständig notwendigen "version bumps" beim Labor für bereits unterstützte Modelle zu eliminieren (das macht "modfs" seit fast zwei Jahren so: https://github.com/PeterPawn/modfs/commit/6808d89d332a4351de5d7d7ae4ad8bf9c3bedecd) und die daraus erwachsenden "Gefahren" einer Inkompatibilität durch Änderungen bei AVM sind dann immer noch genauso hoch wie beim derzeitigen Vorgehen (denn wirklich getestet wird so ein Patch ja dann auch nicht).

Dann erst kann man aber hingehen und den Leuten die (bequeme) Auswahl einer bereits vorhandenen, älteren Labor-Version als Basis für ein Freetz-Image überlassen - der bisherige Weg, bei dem der Benutzer erst noch den Hash für das Image ermitteln und es dann mit Namen und Hash-Wert in die Konfiguration eintragen muß, ist reichlich "old school" und für einige tatsächlich schon zu kompliziert (nicht umsonst ist diese Einstellung auch auf "Experten" beschränkt: https://github.com/Freetz/freetz/blob/master/config/mod/download.in#L79).

Und wenn Dich jetzt die Frage plagen sollte, warum ich das dann noch nicht in Angriff genommen habe, wenn es doch so einfach wäre ... ich denke mal, die Antwort darauf liegt auf der Hand. Ich weiß schlicht nicht, wie ich das so umsetzen sollte, daß es nicht hinterher wieder von Dir "korrigiert" wird und alles andere, was ich bisher versucht habe als Diskussion "anzuschieben" (bis hin zu der Frage, wie sich "Freetz" eigentlich selbst sieht, denn meine "Theorie der vier Teile" ist ja nicht wirklich neu), wurde mit dem Vertrösten auf später dann abgewürgt (sofern es überhaupt eine Reaktion gab) ... überflüssig noch zu erwähnen, daß es dieses "später" bisher immer noch nicht gibt.

Das, was da bei Freetz im Moment geschieht, ist jedenfalls mehr das "Verwalten" einer alten Software (der Toolchain-Teil ist tatsächlich das, was aktuellen Ansprüchen standhalten kann und ein paar Pakete) als irgendeine "Vision" dessen, was man mit so einem Router noch machen könnte (und zwar auf sichere, zeitgemäße Art und Weise) und was ggf. sogar dem Hersteller "den Spiegel vorhält" und ihm zeigt, was die Kunden sonst noch haben wollen und was machbar wäre.

Das war mal anders - sicherlich ein Grund für die Popularität von Freetz in der Vergangenheit. Heute ist Freetz - nochmal: abseits der Toolchain - nur noch ein trauriger Abklatsch einstiger Größe ... das mag auch an zu wenigen Mitstreitern liegen (man kann nicht alles alleine machen), aber man muß sich auch mal die Frage stellen, wo diese geblieben sein könnten und warum niemand mehr "nachkommt".

------------------------------------------------------------------------------------

Ich habe zwar in #36 noch ein EDIT vor der letzten Teilung stehen ... aber der danach folgende Text "unter dem Strich" war von Beginn an derselbe und sollte Dir - selbst wenn Du die E-Mail-Benachrichtigung nutzen solltest und diese keine nachträglichen Änderungen enthält - auch inklusive dieser Frage zugegangen sein ... diese steht auch absichtlich unter einer Trennlinie, weil ich die sachliche Frage, wie es weitergeht, von der "Meinung" darüber auch optisch trennen wollte ... als praktisch veranlagter Mensch, der auch sieht, daß es parallel zu einer Diskussion ja irgendwie weitergehen muß - was diese Diskussion aber keineswegs ersetzt oder obsolet werden läßt.

Die dort gestellte Frage, wie Du nun weiter verfahren möchtest, hast Du jedenfalls geflissentlich ignoriert (welche "Kommunikationskanäle" Dir zur Verfügung gestanden hätten, muß ich nicht erneut erläutern) und Deine einzige Reaktion darauf waren bis zum 09.09.2018 22:45 Uhr dann vier Patches in Freetz, wobei sich einer erneut auf den alten Stand von "signimage" bezog.

Hier im Thread war jedenfalls Deinerseits von Freitag, 07.09.2018 09:30 Uhr bis Montag mittag (12:13 Uhr) wieder das große Schweigen eingekehrt und für eine simple Aussage, wie Du weiter zu verfahren gedenkst, hättest Du garantiert nicht mehr Zeit benötigt als für die zusätzliche Änderung mit dem "head" und die drei anderen Patches in Freetz.

Aber wie Du Dir Deine Zeit einteilst und wo Du sie einsetzt, ist tatsächlich Deine Sache ... der Witz ist es halt nur, wenn man auf der einen Seite mit "knapper Zeit" argumentiert und sich auf der anderen Seite Arbeit aufhalst, die man gar nicht machen müßte - ich sehe hier schon ein paar Widersprüche.

Jedenfalls erscheint mir da die "Schlußfolgerung", daß Du Dich hier ebenso verhalten würdest, wie es in der Vergangenheit der Fall war, nicht so sehr aus der Luft gegriffen und nicht umsonst beginnt #37 mit dem Satz:
Ich ziehe hier mal für mich ein Fazit:

Du kannst/wirst ja Deine Position dann ebenfalls darstellen und da wir beide uns ohnehin nicht mehr einigen werden, können sich dann wenigstens andere anhand der hier vorgebrachten Argumente ein eigenes Bild machen ... solange beide Seiten bei der Wahrheit bleiben und Du wirst hoffentlich nicht bestreiten, daß ich hier nur Dinge angeführt habe (wenn auch ggf. aus meinem eigenen, nach Deiner Ansicht falschen, Blickwinkel), die tatsächlich stattgefunden haben.

Hätte ich jetzt auch nicht erwartet ... immerhin ist es kein "mit vorzüglichem Abscheu" geworden. :D

Nachtrag: Entgegen sonstiger Gewohnheiten suche ich oben jetzt nicht nach Tippfehlern - mir fehlt gerade die Zeit dafür und die Periode, in der mein Kabel-Anschluß wieder in die Knie geht, naht - damit muß ich den Text jetzt irgendwann auch mal loswerden und werde ihn ggf. später noch korrigieren (inhaltlich aber nicht wesentlich, soviel kann ich schon mal sagen).

------------------------------------------------------------------------------------

EDIT:
Ich muß auch noch mal kurz auf die "Frage" eingehen, warum ich auf Deine Frage in #31 nicht geantwortet hätte ... ich kann in diesem Beitrag gar keine gezielte Frage erkennen, die sich an mich gerichtet hätte.

Ich wüßte jetzt auch gar keine andere "Fehlerklasse" als einen "off-by-one bug", die plausibel ein Fehlerbild bewirken sollte, das dem von mir geschilderten Verhalten entspricht und damit ist das wohl eher eine rhetorische, denn eine ernsthafte (und obendrein irgendwie erkennbar an mich gerichtete) Frage.

Auch die Feststellung, daß ich in #30 schreibe:
ist die Vermutung naheliegend
kann kaum als Anlass für den eigenen "Verdacht" herhalten, ich hätte das gar nicht weiter untersucht ... denn wie man schon in #1 lesen kann:
Also liegt die Vermutung nahe, daß tr069fwupdate (welches wir ja aufgerufen haben) seinerseits firmwarecfg aufruft.
gehört dieser "Erzählstil" nun mal zu dem Mitteln, mit denen ich solche Lösungen beschreibe (als Prozess und nicht nur als Ergebnis) und da ich davon ausgehen darf, daß jemand, der mit mir über die "signimage"-Lösung diskutieren will, diesen Beitrag auch gelesen haben sollte, kann man auch die Kenntnis dieses Umstandes voraussetzen.

Und auch eine solche "offene Frage" erklärt dann ja immer noch nicht, warum Du an die Stelle der reinen "Feststellung", wo das Problem nun liegt, den eigenen Patch direkt im Freetz-Trunk setzt - und das auch noch, ohne über dessen Konsequenzen bis zum Ende nachgedacht zu haben, weil Du "keine Lust" hattest (oder keine Zeit oder was auch immer - Fakt ist ja, daß Du es nach eigenen Worten nicht getan hast).

Alles das erfolgte also nur aufgrund meiner fehlenden "Antwort" auf Deine Frage, ob das ein "off-by-one"-Fehler sein könnte ... es gibt schon merkwürdige Zufälle im echten Leben.
 
Zuletzt bearbeitet:
Eventuell solltet ihr mal gemeinsam ein Bier trinken gehen.
Aus persönlicher Erfahrung kann ich sagen: Virtuelle Teams funktionieren besser, wenn die Leute sich persönlich schon getroffen haben.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.