[Info] Update-Check über den neuen AVM-Service

Hier sind noch die HWs, die bei Versionsangabe 000.00.00-0000 den Exitcode 1 zurückliefern...

157: Ging vor einiger Zeit mal vorübergehend und lieferte eine Datei "FRITZ.Box_6360_Cable.85.06.51-35033.image".

162, 171, 191, 224 und 228: Müssen mit avme anstatt avm abgefragt werden, dann geht es auch mit 0.0.0-0.

187 und 213: Sind "zickig", benötigt mehr als nur die HW-Rev., dann geht es aber.

197: Die Box ist imo nicht auf dem Markt erschienen (angeblich Providerversion einer 3270v3).

220: Geht mit 0.0.0-0, man benötigt allerdings ein geändertes juis_check Script (das Flag "cable_retail" muss dabei sein), mit diesem kann man dann (bis jetzt zumindest) auch alle anderen Modelle abfragen, man benötigt also dennoch nur eine Variante von juis_check.
 
  • Like
Reaktionen: eisbaerin
Weil hier gerade mit den Exit-Codes automatisiert wird ... ich habe eine geänderte Version in Arbeit, bei der sich auch daran etwas ändern kann, also bitte flexibel gestalten, wenn man vielleicht die neue Version verwenden möchte (man kann ja auch bei der alten bleiben).

Meine (neue) Planung war eigentlich folgende:

0 - neue Firmware gefunden
1 - Fehler beim Aufruf (gar keine "Box" definiert, ungültige Parameter, fehlende Programme)
2 - keine neue Firmware gefunden
3 - unvollständige Parameter (als Folge einer nicht erreichbaren "Box")
4 - falsche Parameter-Kombination in der resultierenden Abfrage (als "Schlußfolgerung" aus einer Antwort von AVM, die keine SOAP-Response bzw. einen anderen Statuscode als "200" lieferte)

Die neue Version braucht nicht mehr zwingend eine Konfigurationsdatei, denn wenn diese fehlt, wird als Äquivalent die bisherige Form mit
Code:
Box=$1
shift
angenommen.

Da das (eigentlich mal nur als Demonstration geplante) Skript nun doch mehr Aufmerksamkeit erhielt, als ich erwartet hätte, wird es auch mit deutschen Meldungen arbeiten können (über "LC_ALL" oder "LANG" entschieden) und auch die Erkennung für fehlende Programme bzw. falsche Shell-Versionen werde ich ausführlicher umsetzen. Es bleibt aber dabei, daß ich so wenig "exotische" Programme wie möglich verwenden will - also werde ich auch weiterhin die XML-Ausgaben mit "sed" parsen und notfalls sogar "base64" emulieren lassen, wenn es als Binary nicht verfügbar ist.

Dabei gehen künftig dann alle Ausgaben (mit Ausnahme von "URL=" und einer neuen Zeile "DelayDownload=" mit einer (offenbar für statistische Lastverteilung von AVM genutzten) Zufallsangabe) nach STDERR und man kann STDOUT mit "eval" einfach zum Setzen von Variablen verwenden und hinterher z.B. mit
Code:
[ -z "$URL" ] || wget -q -O /tmp/new_firmware.image "$URL"
die gefundene Datei gleich laden lassen (den Namen kann man natürlich auch anders wählen, wenn man "archivieren" will).

Wenn das Skript eine "bash" auf dem System findet (es ruft sich dann selbst noch einmal unter "bash" auf, wenn es über den SheBang mit "/bin/sh" eine andere Version erwischt hat), verzichtet es auch auf die Verwendung von 'netcat' (also 'nc') und verwendet gleich '/dev/tcp' für den Netzwerk-Zugriff. Bei 'nc' sollten auch schon mit der aktuellen Version beide "Geschmacksrichtungen" ("traditional" und "openbsd") funktionieren, weil auf die Angabe spezieller Optionen komplett verzichtet wird.

Neben der "jason_boxinfo.xml" (bzw. genauer vor dieser) wird auch versucht, die "juis_boxinfo.xml" zu lesen - inzwischen gibt es genug Geräte mit neuer Firmware, wo die auch vorhanden sein sollte. Ist die verfügbar, fällt die Auswertung der "jason_boxinfo.xml" weg - wenn sie fehlt (und nicht die Box gar nicht erreicht wird), muß die ältere Datei herhalten.

Auch die Prüfung der Signatur der Antwort von AVM will ich einbauen, wenn auf dem System ein passendes "openssl"-Binary vorhanden ist - weniger für diejenigen, die das "von Hand" aufrufen als für die automatische Verwendung (falls doch mal jemand über DNS-Poisoning zu "jws.avm.de" mutiert, auch wenn die Firmware ja selbst noch einmal über die Signatur validiert werden kann).

Weil dabei natürlich auch die Logik der Abläufe komplizierter wird, wird auch das finale Ergebnis unübersichtlicher werden und damit vielleicht nicht mehr für jeden zum "Nachlesen" taugen ... diese Kröte schlucke ich aber bewußt. Einen Tod muß man sterben und für mehr "Automatismen" beim Erraten der Absichten des Benutzers braucht man halt auch mehr Code.
 
Danke für Deine Scripts Peter. (Auch für das, was uns erwartet)

Ich freue mich zu sehen, was da alles ins Rollen kommt, sobald mal jmd. sein Vorhaben (wenn auch erst mal für private Zwecke) Kund tut.

Es ist toll, dass auch in ein komplexeres Script mit sämtlichen automatismen für jeden erdenklichen Fall geschrieben wird (ich kann es leider nicht und auf mich zu gekommen ist auch keiner, aber ich gönne jedem seinen Ruhm.) und dafür dank ich.

Meine Version ist für den Anfänger (die breite Masse, welche somit auch die Möglichkeit hat sich zu probieren, da nichts in Variablen übergeben wird) gedacht gewesen, mit einfachsten (nachvollziehbaren) Mitteln.

Wer Interesse hat kann sich gerne via Unterhaltung melden
 
Zuletzt bearbeitet:
@PeterPawn: Das hört sich doch gut an, die Exitcodes hab ich eh schon so verschachtelt, daß eine Änderung ein Klacks wäre.
...so muss ich nur die Zahl hinter dem "-eq" ändern.
Und innerhalb des umschliessenden if-Blocks [ ${erg} != 0 ] einfach ein oder zwei if's zusätzlich einbauen kann.

Was mich persönlich wurmt ist, dass keinerlei INTERN Firmware für die 7560 ( HW=221 ) gefunden wird.
...obwohl ich sie händisch mit "Bastellink" herunterladen kann.
( bspw.: FRITZ.Box_7560.149.06.52-41087.image )
Was hat es denn nur damit auf sich ?
Hat da AVM vielleicht was vergessen ?
 
...obwohl ich sie händisch mit "Bastellink" herunterladen kann.
( bspw.: FRITZ.Box_7560.149.06.52-41087.image )
Die ist doch viel zu alt um noch als aktuelles INTERN Image angeboten werden zu können.

Aber es gibt durchaus auch andere neuere Firmware-Images auf dem FTP-Server "update.avm.de" die vom AVM Update-Check (z.B. per juis_check abgefragt) nicht mitgeteilt werden, z.B. für die 7582 und 6890 LTE.
 
War als Beispiel gedacht, wusste noch nicht mal das die ein "Verfallsdatum" haben.
Eine...
FRITZ.Box_7560.149.06.83.image
...bekomme ich über Bastellink auch runtergeladen, aber weil ich auf 6.92 bin, leider nicht installiert (alle Beide).
Auch optisch sieht die irgendwie nicht nach einer INTERN aus.
 
Der Ausgangspunkt für die neue Version war ja auch die Notwendigkeit, da mit passenden "Flags" zu arbeiten. Die gibt es ja erst seit JUIS und offenbar wertet AVM da doch einiges zusätzlich aus bei den Boxen, deren Firmware erst nach dem Wechsel auf JUIS überhaupt erstmals veröffentlicht wurde ... die können dann ja keine "jason"-basierten Abfragen mehr von sich aus produzieren. Dieses "Flags" wird in der neuen Version auch frei konfigurierbar und durch die Umstellung auf "juis_boxinfo.xml" werden da auch für eine vorhandene Box dann die korrekten Angaben automatisch ausgelesen.

Daß dieser ganze JUIS ohnehin etwas komplexer aufgezogen wurde und AVM da wahrscheinlich sogar für einzelne Boxen (anhand von "Serial") spezielle Antworten generieren kann, sieht man u.a. schon daran, daß es ja für jedes Modell zumindest mal einen eigenen DNS-Eintrag (oder ein spezielles Handling von Abfragen durch den SOA bei AVM) geben muß, denn die HWRevision ist ja Bestandteil des Hostnamens für den JUIS - selbst wenn das am Ende vielleicht nur virtuelle Server auf einer gemeinsamen Maschine sind bzw. wohl eher eine passende "business logic" auf einem "application server" - vermutlich in Java, wenn man sich einige Fehlermeldungen so ansieht.
 
Ohne jetzt den juis_check code komplett zu durchforsten...
Meinst du, es ist OK/unbedenklich das Skript mit den Variablen/Argumenten so zu starten...
Code:
./checkall Box=fritz.box Public=0 HW=221 u.s.w.
# ...und in checkall
env -i ${@} ./juis_check
...?
( unflexibel, ich weiss, aber als Beispiel gedacht, ohne .cfg )
Die 7560er juis_boxinfo.xml Infos werd ich mal auf die Tour übergeben, bin gespannt was dann zurückkommt.
 
Zuletzt bearbeitet:
... wusste noch nicht mal das die ein "Verfallsdatum" haben.
Eine...

Logisch wäre es zumindest. Der Zweck von "INTERN" Versionen dürfte es sicher sein in einem sehr engen Kreis (intern) neue Firmware-Versionen (Alpha-Status?) zu testen (noch bevor das als Public-Beta getestet wird) und das dürfte bei der 7560 mit einer FritzOS-Ver. 6.5x nicht mehr notwendig sein, da ist man mittlerweile schon bei FritzOS 6.9x angelangt. Von daher muss man per Update-Check sicherlich auch keine uralte interne Testversion mehr bekannt geben (obwohl das bei der 7560 per juis imo sowieso noch nie funktioniert hat).
 
@koyaanisqatsi:
Falls die Frage mir galt ... ich sehe bei den Variablen kein so riesiges Problem. Auf welchem Weg die Variablen am Ende gesetzt sind (ob über das Environment generell, über "lokales Environment" durch Angabe vor dem auszuführenden Kommando oder als "verbleibendes" KV-Paar beim Aufruf auf der Kommandozeile), spielt hoffentlich keine Rolle (höchstens bei der Reihenfolge der Auswertung, wo die Angabe als Parameter beim Aufruf dann alles andere schlägt, daher auch dieser "Zusatz" beim Aufwand, obwohl es über Environment- oder Shell-Variablen ja auch zu setzen ist) - entscheidend dürfte sein (aus Security-Sicht), daß im Code bei der Verwendung von "eval" am Ende keine Statements entstehen, die (z.B. mit Leerzeichen irgendwo in einem Wert) zur Ausführung unerwünschter Kommandos ("command injection") führen.

Das muß mit passendem Escaping verhindert werden und ich hoffe einfach mal, daß ich (in freigegebenen Versionen) sämtliche Statements passend abgesichert haben werde - fällt jemandem eine Stelle auf, an der das nicht der Fall ist, nehme ich entsprechende Hinweise dankend an.

Wobei ein Sicherheitsrisiko ja schon durch die Konfigurationsdatei entsteht ... die darf ja beliebige Kommandos enthalten und man sollte ein Auge auf den Inhalt und die Schreibrechte für diese Datei haben - ebenso auf mögliche Symlinks für das Skript, da der "Basisname" für so eine Konfigurationsdatei ja vom Aufrufnamen abgeleitet wird (absichtlich). Wenn hier jemand etwas "unterschieben" kann, führt man schnell auch mal fremde Kommandos (unabsichtlich) aus.

Daher wird in der neuen Version (WIP, nur zur Ansicht) bei "--debug" auch einfach mal der Inhalt der Konfigurationsdatei vor deren Verarbeitung angezeigt (allerdings ohne "Verhinderungsmöglichkeit" wie eine Pause/Abfrage, das macht dann wieder keinen Sinn), damit das nicht klammheimlich geschehen kann. Andererseits bleibt das (auf einem "normalen" System) ja im Kontext des Benutzers und da gibt es noch genug andere Möglichkeiten für solche Angriffe - man muß es auch nicht dramatisieren.
 
Waere es evt. auch moeglich per Update Script an die Dect Firmware zu kommen, die an die Fritzbox FW gebunden ist?
 
Waere es evt. auch moeglich per Update Script an die Dect Firmware zu kommen, die an die Fritzbox FW gebunden ist?
Siehe #131 - da man aus den Geräten aber nicht einfach eine aktuelle Version per Netzwerk auslesen kann (da müßte man die FRITZ!OS-Firmware befragen, mit der diese Geräte kommunizieren und dazu wohl am ehesten einen eigenen "Abfrageservice" auf der Box einrichten - was schon mal eine modifizierte Firmware braucht), ist so etwas eher "in Handarbeit" und nach dem Zusammensuchen der notwendigen Parameter möglich - ein automatisches Setzen von Parametern wird dort eher nicht funktionieren bzw. es lohnt den Aufwand nicht, das irgendwie zu verallgemeinern.
 
Falls jemand Interesse an meiner Aufbauweise und der Behandlung der Configs hat und gerne Beta-Tester ein mag, bitte via Unterhaltung melden.

Aktueller Stand
Entpacken: tar xfv juc_beta-x.x.x.tar

./juis_check by PeterPawn https://github.com/PeterPawn/YourFritz


Aufruf:
./check-alles > dl.log.txt | fragt alle Modelle welche in "check-alles" nicht auskommentiert "#" sind ab und läd diese herrunter, falls noch nicht vorhanden.

./check-alles | fragt nur ab, legt keinen aktuellen log an, sondern gibt die URLs auf der Console aus.

Weitere Infos in der Datei "check-alles" selbst.

Es wird unter ./dl.list.txt eine Liste (welche jedes mal neu erstellt wird) der Download Links (falls vorhanden und nötig incl. Benutzer und Kennwort) abgelegt.

Unter ./dl/ findet ihr die herruntergeladenen FW Images (vorhandene werden übersprungen)

Unter ./dl/public findet ihr die Public FW Images OHNE xxx.xx.xx"-123456".image
Unter ./dl/beta-inhouse findet ihr die FW Images MIT xxx.xx.xx"-123456".image

Vorraussetzungen:
dd, sed, base64, nc, mknode
(#! /bin/sh)

getestet auf:
BananaPiM2U 2017-08-24-ubuntu-16.04-mate-desktop-beta-bpi-m2u-sd-emmc (es mussten keine weiteren Pakete nachinstalliert werden)

freetzVM 1.4.1


wird noch getestet:
BananaPiM2U 2017-08-25-raspbian-stretch-preview-bpi-m2u-sd-emmc

BananaPiM2U 2017-08-24-raspbian-jessie-beta-bpi-m2u-sd-emmc

BananaPiM2U BPI-M2U_M2B_Android_HDMI_V1

RPI3
Raspbian Stretch with desktop
Version: November 2017
Release date: 2017-11-29
Kernel version: 4.9

RPI3
Raspbian Stretch Lite
Version: November 2017
Release date: 2017-11-29
Kernel version: 4.9

Ubuntu Mate 16.04.2 Desktop armhf-raspberry-pi

juc-beta-0.1.0$ $ tree
.
├── 1160 -> juis_check
├── 1160.cfg
├── 1240E -> juis_check
├── 1240E.cfg
├── 1260E -> juis_check
├── 1260E.cfg
├── 1750E -> juis_check
├── 1750E.cfg
├── 310 -> juis_check
├── 310B -> juis_check
├── 310B.cfg
├── 310.cfg
├── 3272 -> juis_check
├── 3272.cfg
├── 3490 -> juis_check
├── 3490.cfg
├── 4020 -> juis_check
├── 4020.cfg
├── 4040 -> juis_check
├── 4040.cfg
├── 450E -> juis_check
├── 450E.cfg
├── 540E -> juis_check
├── 540E.cfg
├── 546E -> juis_check
├── 546E.cfg
├── 5490 -> juis_check
├── 5490.cfg
├── 6490 -> juis_check
├── 6490.cfg
├── 6590 -> juis_check
├── 6590.cfg
├── 6890 -> juis_check
├── 6890.cfg
├── 7362sl -> juis_check
├── 7362sl.cfg
├── 7369 -> juis_check
├── 7369.cfg
├── 7390 -> juis_check
├── 7390.cfg
├── 7412 -> juis_check
├── 7412.cfg
├── 7430 -> juis_check
├── 7430.cfg
├── 7490 -> juis_check
├── 7490.cfg
├── 7560 -> juis_check
├── 7560.cfg
├── 7580 -> juis_check
├── 7580.cfg
├── 7581 -> juis_check
├── 7581.cfg
├── 7582 -> juis_check
├── 7582.cfg
├── 7590 -> juis_check
├── 7590.cfg
├── check-alles
├── dl
│ ├── beta-inhouse
│ │ ├── FRITZ.Box_6890_LTE_LabBETA.en-de-es-it-fr-pl-nl.162.06.83-47699.image
│ │ ├── FRITZ.Box_7490.113.06.98-48226.image
│ │ ├── FRITZ.Box_7582_LabBETA.en-de-es-it-fr-pl.156.06.80-44551.image
│ │ └── FRITZ.Box_7590.154.06.98-48221.image
│ ├── FRITZ.Box_3272.126.06.83.image
│ ├── FRITZ.Box_3490.140.06.83.image
│ ├── FRITZ.Box_4020.de-en-es-it-fr-pl.147.06.83.image
│ ├── FRITZ.Box_4040.en-de-es-it-fr-pl.155.06.83.image
│ ├── FRITZ.Box_5490.de-en-es-it-fr-pl.151.06.84.image
│ ├── FRITZ.Box_6490_Cable.de-en-es-it-fr-pl.141.06.85.image
│ ├── FRITZ.Box_6590_Cable.de-en-es-it-fr-pl.148.06.85.image
│ ├── FRITZ.Box_6890_LTE_LabBETA.en-de-es-it-fr-pl-nl.162.06.83-47699.image
│ ├── FRITZ.Box_7362_SL.131.06.83.image
│ ├── FRITZ.Box_7369.en-de-es-it-fr-pl.119.06.32.image
│ ├── FRITZ.Box_7412.137.06.83.image
│ ├── FRITZ.Box_7430.146.06.83.image
│ ├── FRITZ.Box_7490.113.06.98-48226.image
│ ├── FRITZ.Box_7560.149.06.92.image
│ ├── FRITZ.Box_7580.153.06.92.image
│ ├── FRITZ.Box_7581.en-de-es-it-fr-pl.152.06.85.image
│ ├── FRITZ.Box_7582_LabBETA.en-de-es-it-fr-pl.156.06.80-44551.image
│ ├── FRITZ.Box_7590.154.06.92.image
│ ├── FRITZ.Box_7590.154.06.98-48221.image
│ ├── FRITZ.Box_Fon_WLAN_7390.AnnexB.84.06.83.image
│ ├── FRITZ.Box_WLAN_Repeater_1160.144.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_1750E.134.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_310.122.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_310_.143.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_450E.128.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_DVB_C.133.06.92.image
│ ├── FRITZ.Powerline_1240E.06.92.image
│ ├── FRITZ.Powerline_1260E.157.06.92.image
│ ├── FRITZ.Powerline_540E.06.92.image
│ ├── FRITZ.Powerline_546E.118.06.92.image
│ └── public
│ ├── FRITZ.Box_3272.126.06.83.image
│ ├── FRITZ.Box_3490.140.06.83.image
│ ├── FRITZ.Box_4020.de-en-es-it-fr-pl.147.06.83.image
│ ├── FRITZ.Box_4040.en-de-es-it-fr-pl.155.06.83.image
│ ├── FRITZ.Box_5490.de-en-es-it-fr-pl.151.06.84.image
│ ├── FRITZ.Box_6490_Cable.de-en-es-it-fr-pl.141.06.85.image
│ ├── FRITZ.Box_6590_Cable.de-en-es-it-fr-pl.148.06.85.image
│ ├── FRITZ.Box_7362_SL.131.06.83.image
│ ├── FRITZ.Box_7369.en-de-es-it-fr-pl.119.06.32.image
│ ├── FRITZ.Box_7412.137.06.83.image
│ ├── FRITZ.Box_7430.146.06.83.image
│ ├── FRITZ.Box_7560.149.06.92.image
│ ├── FRITZ.Box_7580.153.06.92.image
│ ├── FRITZ.Box_7581.en-de-es-it-fr-pl.152.06.85.image
│ ├── FRITZ.Box_7590.154.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_1160.144.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_1750E.134.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_310.122.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_310_.143.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_450E.128.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_DVB_C.133.06.92.image
│ ├── FRITZ.Powerline_1260E.157.06.92.image
│ └── FRITZ.Powerline_546E.118.06.92.image
├── dl.alles.txt
├── dl.list.txt
├── dl.log.txt
├── DVB-C -> juis_check
├── DVB-C.cfg
├── juis_check
└── !WICHTIG-LESEN!

3 directories, 121 files

juis_beta-0.1.0$ tree
.
├── 1160 -> juis_check
├── 1160.cfg
├── 1240E -> juis_check
├── 1240E.cfg
├── 1260E -> juis_check
├── 1260E.cfg
├── 1750E -> juis_check
├── 1750E.cfg
├── 310 -> juis_check
├── 310B -> juis_check
├── 310B.cfg
├── 310.cfg
├── 3272 -> juis_check
├── 3272.cfg
├── 3490 -> juis_check
├── 3490.cfg
├── 4020 -> juis_check
├── 4020.cfg
├── 4040 -> juis_check
├── 4040.cfg
├── 450E -> juis_check
├── 450E.cfg
├── 540E -> juis_check
├── 540E.cfg
├── 546E -> juis_check
├── 546E.cfg
├── 5490 -> juis_check
├── 5490.cfg
├── 6490 -> juis_check
├── 6490.cfg
├── 6590 -> juis_check
├── 6590.cfg
├── 6890 -> juis_check
├── 6890.cfg
├── 7362sl -> juis_check
├── 7362sl.cfg
├── 7369 -> juis_check
├── 7369.cfg
├── 7390 -> juis_check
├── 7390.cfg
├── 7412 -> juis_check
├── 7412.cfg
├── 7430 -> juis_check
├── 7430.cfg
├── 7490 -> juis_check
├── 7490.cfg
├── 7560 -> juis_check
├── 7560.cfg
├── 7580 -> juis_check
├── 7580.cfg
├── 7581 -> juis_check
├── 7581.cfg
├── 7582 -> juis_check
├── 7582.cfg
├── 7590 -> juis_check
├── 7590.cfg
├── check-alles
├── DVB-C -> juis_check
├── DVB-C.cfg
├── juis_check
└── !WICHTIG-LESEN!

0 directories, 61 files

### Zusammenführung ###

juc_beta-0.3.0 ist verfügbar (siehe Signatur)

ab sofort werden alle Links in ein einer extra "Linksammlung" ebenso wie die Images archiviert.
soll heißen, es gibt nach wie vor, eine Liste der aktuellen Links (welche nach jedem erneuen Aufruf überschrieben wird) sowie eine Sammelliste welche ergänzt wird.

Die Datei > !WICHTIG-LESEN! < sollte jedes mal ebenso nach jedem Update eingesehen werden!
###
juc_beta-0.2.0 vom 10.12.2017

* 7272 hinzugefügt (de/int)
* International Abfragen hinzugefügt
* AVM (deutsch) + AVME (international) in einem Abruf
* HW/OS Kompatibilität eingefügt (siehe !WICHTIG-LESEN)
* Verzeichnisbaum / tree als .txt erstellt und eingefügt

###
juc_beta-0.2.1 vom 10.12.2017

* fixes bei den int. Versionen

###

juc_beta-0.2.2 vom 11.12.2017

* entschuldigt, mir ist da ein Datenstand zum Upload gekommen, welcher so nicht als Release kommen sollte.

###

juc_beta-0.3.0 vom 18.12.2017

* Die Datei !WICHTIG-LESEN! BEACHTEN > Aufrufe haben sich geändert

NEU: LinkSammelListe wird erstellt und aktualisiert, falls es einen neuen Link gibt, somit hat mit Images + Links von dem was juis findet :)
Diese findet ihr im dl und dl/international Ornder

###
Entpacken: tar xfv juc_beta-x.x.x.tar

Aufruf über (wir gehen immer davon aus, dass wir uns im Hauptverzeichnis befinden)

+++ Console stumm machen +++ an alle Befehle lässt sich ' "leerzeichen">/dev/null 2>&1 ' anhängen zB ' ./check-deutsch-dl >/dev/null 2>&1 ' die Consolenzeile bleibt bis zum Ende "eingefroren"

+ ./check-deutsch-dl | es erfolgt das Loggen der Links sowie das Herunterladen der deutschen public/intern FWs, falls noch nicht vorhanden [und fügt neue Links zur Linksammlung hinzu]
+ ./check-deutsch | Links der deutschen FWs wird auf der Console angezeigt - es wird nichts geloggt sowie heruntergeladen.
+ ./check-international-dl | es erfolgt das Loggen der Links sowie das Herunterladen der internationalen public/intern FWs, falls noch nicht vorhanden [und fügt neue Links zur Linksammlung hinzu]
+ ./check-international | Links der deutschen/internationalen FWs wird auf der Console angezeigt - es wird nichts geloggt sowie heruntergeladen
+ ./check-alles-dl | es erfolgt das Loggen der Links sowie das Herunterladen deutscher sowie internationaler FWs public/intern, falls noch nicht vorhanden [und fügt neue Links zur Linksammlung hinzu]
+ ./check-alles | Links aller FWs deutsch/international sowie public/intern werden im Terminal angezeigt - es wird nichts geloggt sowie heruntergeladen.
= ./MODELL Public=0/1 | Link deutsche FW für das Modell "xx" wird in der Console ausgegeben
= ./international/MODELL-int Public=0/1 | Link internationale FW für das Modell "xx" wird in der Console ausgegeben



- ./check-deutsch > dl.log.txt | es erfolgt das Loggen der Links sowie das Herunterladen der deutschen public/intern FWs, falls noch nicht vorhanden.
- ./check-deutsch | Links der deutschen FWs wird auf der Console angezeigt - es wird nichts geloggt sowie heruntergeladen.
- ./check-international > dl.log.txt | es erfolgt das Loggen der Links sowie das Herunterladen der internationalen public/intern FWs, falls noch nicht vorhanden.
- ./check-international | Links der deutschen/internationalen FWs wird auf der Console angezeigt - es wird nichts geloggt sowie heruntergeladen
- ./check-alles > dl.log.txt | es erfolgt das Loggen der Links sowie das Herunterladen deutscher sowie internationaler FWs public/intern, falls noch nicht vorhanden.
- ./check-alles | Links aller FWs deutsch/international sowie public/intern werden im Terminal angezeigt - es wird nichts geloggt sowie heruntergeladen.

= ./MODELL Public=0/1 | Link deutsche FW für das Modell "xx" wird in der Console ausgegeben
= ./international/MODELL-int Public=0/1 | Link internationale FW für das Modell "xx" wird in der Console ausgegeben

############################################################################################################
# Weitere Infos unter: https://groups.google.com/forum/#!forum/juis_update_check / https://goo.gl/V5kH2A #
# Hilfe findet Ihr unter: https://groups.google.com/forum/#!forum/juis_update_talk / https://goo.gl/DxdStZ #
############################################################################################################

----------------------------------------
Versionsübersicht:
juc_beta-0.1.0 https://goo.gl/8XE5TC
juc_beta-0.2.0 https://goo.gl/gieAnC
juc_beta-0.2.1 https://goo.gl/2rCyPP
juc_beta-0.2.2 https://goo.gl/qnjYhX
juc_beta-0.3.0 diese Version
----------------------------------------


Die folgenden Modelle benötigen zwingend die Versionsnummer:

310
6590
6890
7560


getestet auf:
(es musste bei keinem System irgendetwas nachinstalliert werden, also BS installieren, Tool entpacken und aufrufen, fertig)

##############
#BananaPiM2U #
##############
###
BananaPiM2U 2017-08-24-ubuntu-16.04-mate-desktop-beta-bpi-m2u-sd-emmc
#
BananaPiM2U "Raspbian GNU/Linux 8 (jessie)" 2017-08-24-raspbian-jessie-beta-bpi-m2u-sd-emmc
#
BananaPiM2U Ubuntu Mate 16.04.2 Desktop armhf-raspberry-pi
#

###

#################
# Raspberry Pi3 #
#################

"RaspbianPi - Jessie " vom 2017-01-1 latest Update
#
RPi3 "Raspbian GNU/Linux 9 (stretch)"
#
RPi3 ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi

#############################
# Raspberry Pi3 @ berryboot #
#############################

fedora_LXDE_desktop_24_rpi2_rpi3_2016.06.14_berryboot
#
q4os_orion_v1809_rpi2_rpi3_2017.08.18_berryboot
#
solydx_rpi2_rpi3_2017.01.19_berryboot
#
raspex_ubuntu_16.10_LXDE_rpi2_rpi3_network_fixed_2017.02.21_berryboot

########
## VM ##
########

freetzVM 1.4.1
#
openSUSE-Leap-42.3
#
CentOS-7-x86_64-DVD-1708 GNOME-Desktop OHNE Erweiterungen
#
CentOS-7-x86_64-DVD=1708 KDE Plasma Workspaces OHNE Erweiterungen
#
Ubuntu 16.04.3
#
Ubuntu 17.10

###############
# Sonstige(s) #
###############

QNAP TS451+ aks Virtuell
Debian GNU/Linux 9
Linux version 4.9.0-3-amd64 ([email protected]) (gcc version 6.3.0 20170516 (Debian 6.3.0-18) ) #1 SMP Debian 4.9.30-2+deb9u5 (2017-09-19)
#####
juc_beta-0.3.0/
├── 1160 -> juis_check
├── 1160.cfg
├── 1240E -> juis_check
├── 1240E.cfg
├── 1260E -> juis_check
├── 1260E.cfg
├── 1750E -> juis_check
├── 1750E.cfg
├── 310 -> juis_check
├── 310B -> juis_check
├── 310B.cfg
├── 310.cfg
├── 3272 -> juis_check
├── 3272.cfg
├── 3490 -> juis_check
├── 3490.cfg
├── 4020 -> juis_check
├── 4020.cfg
├── 4040 -> juis_check
├── 4040.cfg
├── 450E -> juis_check
├── 450E.cfg
├── 540E -> juis_check
├── 540E.cfg
├── 546E -> juis_check
├── 546E.cfg
├── 5490 -> juis_check
├── 5490.cfg
├── 6490 -> juis_check
├── 6490.cfg
├── 6590 -> juis_check
├── 6590.cfg
├── 6890 -> juis_check
├── 6890.cfg
├── 7272 -> juis_check
├── 7272.cfg
├── 7362sl -> juis_check
├── 7362sl.cfg
├── 7369 -> juis_check
├── 7369.cfg
├── 7390 -> juis_check
├── 7390.cfg
├── 7412 -> juis_check
├── 7412.cfg
├── 7430 -> juis_check
├── 7430.cfg
├── 7490 -> juis_check
├── 7490.cfg
├── 7560 -> juis_check
├── 7560.cfg
├── 7580 -> juis_check
├── 7580.cfg
├── 7581 -> juis_check
├── 7581.cfg
├── 7582 -> juis_check
├── 7582.cfg
├── 7590 -> juis_check
├── 7590.cfg
├── changelog.txt
├── check-alles
├── check-deutsch
├── check-deutsch-dl
├── check-international
├── check-international-dl
├── DVB-C -> juis_check
├── DVB-C.cfg
├── international
│ ├── 1160-int -> juis_check
│ ├── 1160-int.cfg
│ ├── 1240E-int -> juis_check
│ ├── 1240E-int.cfg
│ ├── 1260E-int -> juis_check
│ ├── 1260E-int.cfg
│ ├── 1750E-int -> juis_check
│ ├── 1750E-int.cfg
│ ├── 310B-int -> juis_check
│ ├── 310B-int.cfg
│ ├── 310-int -> juis_check
│ ├── 310-int.cfg
│ ├── 3272-int -> juis_check
│ ├── 3272-int.cfg
│ ├── 3490-int -> juis_check
│ ├── 3490-int.cfg
│ ├── 4020-int -> juis_check
│ ├── 4020-int.cfg
│ ├── 4040-int -> juis_check
│ ├── 4040-int.cfg
│ ├── 450E-int -> juis_check
│ ├── 450E-int.cfg
│ ├── 540E-int -> juis_check
│ ├── 540E-int.cfg
│ ├── 546E-int -> juis_check
│ ├── 546E-int.cfg
│ ├── 5490-int -> juis_check
│ ├── 5490-int.cfg
│ ├── 7272-int -> juis_check
│ ├── 7272-int.cfg
│ ├── 7390-int -> juis_check
│ ├── 7390-int.cfg
│ ├── 7430-int -> juis_check
│ ├── 7430-int.cfg
│ ├── 7490-int -> juis_check
│ ├── 7490-int.cfg
│ ├── 7560-int -> juis_check
│ ├── 7560-int.cfg
│ ├── 7590-int -> juis_check
│ ├── 7590-int.cfg
│ ├── DVB-C-int -> juis_check
│ ├── DVB-C-int.cfg
│ └── juis_check
├── juis_check
└── !WICHTIG-LESEN!

1 directory, 111 files
juc_beta-0.3.0/
├── 1160 -> juis_check
├── 1160.cfg
├── 1240E -> juis_check
├── 1240E.cfg
├── 1260E -> juis_check
├── 1260E.cfg
├── 1750E -> juis_check
├── 1750E.cfg
├── 310 -> juis_check
├── 310B -> juis_check
├── 310B.cfg
├── 310.cfg
├── 3272 -> juis_check
├── 3272.cfg
├── 3490 -> juis_check
├── 3490.cfg
├── 4020 -> juis_check
├── 4020.cfg
├── 4040 -> juis_check
├── 4040.cfg
├── 450E -> juis_check
├── 450E.cfg
├── 540E -> juis_check
├── 540E.cfg
├── 546E -> juis_check
├── 546E.cfg
├── 5490 -> juis_check
├── 5490.cfg
├── 6490 -> juis_check
├── 6490.cfg
├── 6590 -> juis_check
├── 6590.cfg
├── 6890 -> juis_check
├── 6890.cfg
├── 7272 -> juis_check
├── 7272.cfg
├── 7362sl -> juis_check
├── 7362sl.cfg
├── 7369 -> juis_check
├── 7369.cfg
├── 7390 -> juis_check
├── 7390.cfg
├── 7412 -> juis_check
├── 7412.cfg
├── 7430 -> juis_check
├── 7430.cfg
├── 7490 -> juis_check
├── 7490.cfg
├── 7560 -> juis_check
├── 7560.cfg
├── 7580 -> juis_check
├── 7580.cfg
├── 7581 -> juis_check
├── 7581.cfg
├── 7582 -> juis_check
├── 7582.cfg
├── 7590 -> juis_check
├── 7590.cfg
├── changelog.txt
├── check-alles
├── check-deutsch
├── check-deutsch-dl
├── check-international
├── check-international-dl
├── dl
│ ├── deutsch
│ │ ├── Beta-Inhouse
│ │ │ ├── FRITZ.Box_6890_LTE_LabBETA.en-de-es-it-fr-pl-nl.162.06.83-47699.image
│ │ │ ├── FRITZ.Box_7490.113.06.98-48476.image
│ │ │ ├── FRITZ.Box_7582_LabBETA.en-de-es-it-fr-pl.156.06.80-44551.image
│ │ │ └── FRITZ.Box_7590.154.06.98-48443.image
│ │ ├── dl.deutsch.txt
│ │ ├── FRITZ.Box_3272.126.06.83.image
│ │ ├── FRITZ.Box_3490.140.06.83.image
│ │ ├── FRITZ.Box_4020.de-en-es-it-fr-pl.147.06.83.image
│ │ ├── FRITZ.Box_4040.en-de-es-it-fr-pl.155.06.83.image
│ │ ├── FRITZ.Box_5490.de-en-es-it-fr-pl.151.06.84.image
│ │ ├── FRITZ.Box_6490_Cable.de-en-es-it-fr-pl.141.06.85.image
│ │ ├── FRITZ.Box_6590_Cable.de-en-es-it-fr-pl.148.06.85.image
│ │ ├── FRITZ.Box_6890_LTE_LabBETA.en-de-es-it-fr-pl-nl.162.06.83-47699.image
│ │ ├── FRITZ.Box_7272.120.06.83.image
│ │ ├── FRITZ.Box_7362_SL.131.06.83.image
│ │ ├── FRITZ.Box_7369.en-de-es-it-fr-pl.119.06.32.image
│ │ ├── FRITZ.Box_7412.137.06.83.image
│ │ ├── FRITZ.Box_7430.146.06.83.image
│ │ ├── FRITZ.Box_7490.113.06.92.image
│ │ ├── FRITZ.Box_7490.113.06.98-48476.image
│ │ ├── FRITZ.Box_7560.149.06.92.image
│ │ ├── FRITZ.Box_7580.153.06.92.image
│ │ ├── FRITZ.Box_7581.en-de-es-it-fr-pl.152.06.85.image
│ │ ├── FRITZ.Box_7582_LabBETA.en-de-es-it-fr-pl.156.06.80-44551.image
│ │ ├── FRITZ.Box_7590.154.06.92.image
│ │ ├── FRITZ.Box_7590.154.06.98-48443.image
│ │ ├── FRITZ.Box_Fon_WLAN_7390.AnnexB.84.06.83.image
│ │ ├── FRITZ.Box_WLAN_Repeater_1160.144.06.92.image
│ │ ├── FRITZ.Box_WLAN_Repeater_1750E.134.06.92.image
│ │ ├── FRITZ.Box_WLAN_Repeater_310.122.06.92.image
│ │ ├── FRITZ.Box_WLAN_Repeater_310_.143.06.92.image
│ │ ├── FRITZ.Box_WLAN_Repeater_450E.128.06.92.image
│ │ ├── FRITZ.Box_WLAN_Repeater_DVB_C.133.06.92.image
│ │ ├── FRITZ.Powerline_1240E.06.92.image
│ │ ├── FRITZ.Powerline_1260E.157.06.92.image
│ │ ├── FRITZ.Powerline_540E.06.92.image
│ │ ├── FRITZ.Powerline_546E.118.06.92.image
│ │ ├── linksammlung.deutsch.txt
│ │ └── Release
│ │ ├── FRITZ.Box_3272.126.06.83.image
│ │ ├── FRITZ.Box_3490.140.06.83.image
│ │ ├── FRITZ.Box_4020.de-en-es-it-fr-pl.147.06.83.image
│ │ ├── FRITZ.Box_4040.en-de-es-it-fr-pl.155.06.83.image
│ │ ├── FRITZ.Box_5490.de-en-es-it-fr-pl.151.06.84.image
│ │ ├── FRITZ.Box_6490_Cable.de-en-es-it-fr-pl.141.06.85.image
│ │ ├── FRITZ.Box_6590_Cable.de-en-es-it-fr-pl.148.06.85.image
│ │ ├── FRITZ.Box_7272.120.06.83.image
│ │ ├── FRITZ.Box_7362_SL.131.06.83.image
│ │ ├── FRITZ.Box_7369.en-de-es-it-fr-pl.119.06.32.image
│ │ ├── FRITZ.Box_7412.137.06.83.image
│ │ ├── FRITZ.Box_7430.146.06.83.image
│ │ ├── FRITZ.Box_7490.113.06.92.image
│ │ ├── FRITZ.Box_7560.149.06.92.image
│ │ ├── FRITZ.Box_7580.153.06.92.image
│ │ ├── FRITZ.Box_7581.en-de-es-it-fr-pl.152.06.85.image
│ │ ├── FRITZ.Box_7590.154.06.92.image
│ │ ├── FRITZ.Box_WLAN_Repeater_1160.144.06.92.image
│ │ ├── FRITZ.Box_WLAN_Repeater_1750E.134.06.92.image
│ │ ├── FRITZ.Box_WLAN_Repeater_310.122.06.92.image
│ │ ├── FRITZ.Box_WLAN_Repeater_310_.143.06.92.image
│ │ ├── FRITZ.Box_WLAN_Repeater_450E.128.06.92.image
│ │ ├── FRITZ.Box_WLAN_Repeater_DVB_C.133.06.92.image
│ │ ├── FRITZ.Powerline_1260E.157.06.92.image
│ │ └── FRITZ.Powerline_546E.118.06.92.image
│ └── international
│ ├── Beta-Inhouse
│ ├── dl.international.txt
│ ├── FRITZ.Box_3272.en-de-es-it-fr-pl.126.06.83.image
│ ├── FRITZ.Box_3490.en-de-es-it-fr-pl.140.06.83.image
│ ├── FRITZ.Box_4020.de-en-es-it-fr-pl.147.06.83.image
│ ├── FRITZ.Box_4040.en-de-es-it-fr-pl.155.06.83.image
│ ├── FRITZ.Box_5490.de-en-es-it-fr-pl.151.06.84.image
│ ├── FRITZ.Box_7272.120.06.83.image
│ ├── FRITZ.Box_7430.en-de-es-it-fr-pl.146.06.83.image
│ ├── FRITZ.Box_7490.en-de-es-it-fr-pl.113.06.83.image
│ ├── FRITZ.Box_7560.en-de-es-it-fr-pl.149.06.83.image
│ ├── FRITZ.Box_7590.en-de-es-it-fr-pl-nl.154.06.83.image
│ ├── FRITZ.Box_Fon_WLAN_7390.en-de-es-it-fr.84.06.83.image
│ ├── FRITZ.Box_WLAN_Repeater_1160.en-de-es-it-fr-pl.144.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_1750E.en-de-es-it-fr-pl.134.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_310.en-de-es-it-fr-pl.122.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_310_.en-de-es-it-fr-pl.143.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_450E.en-de-es-it-fr-pl.128.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_DVB_C.133.06.92.image
│ ├── FRITZ.Powerline_1240E.06.92.image
│ ├── FRITZ.Powerline_1260E.157.06.92.image
│ ├── FRITZ.Powerline_540E.06.92.image
│ ├── linksammlung.international.txt
│ └── Release
│ ├── FRITZ.Box_3272.en-de-es-it-fr-pl.126.06.83.image
│ ├── FRITZ.Box_3490.en-de-es-it-fr-pl.140.06.83.image
│ ├── FRITZ.Box_4020.de-en-es-it-fr-pl.147.06.83.image
│ ├── FRITZ.Box_4040.en-de-es-it-fr-pl.155.06.83.image
│ ├── FRITZ.Box_5490.de-en-es-it-fr-pl.151.06.84.image
│ ├── FRITZ.Box_7272.120.06.83.image
│ ├── FRITZ.Box_7430.en-de-es-it-fr-pl.146.06.83.image
│ ├── FRITZ.Box_7490.en-de-es-it-fr-pl.113.06.83.image
│ ├── FRITZ.Box_7560.en-de-es-it-fr-pl.149.06.83.image
│ ├── FRITZ.Box_7590.en-de-es-it-fr-pl-nl.154.06.83.image
│ ├── FRITZ.Box_WLAN_Repeater_1160.en-de-es-it-fr-pl.144.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_1750E.en-de-es-it-fr-pl.134.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_310.en-de-es-it-fr-pl.122.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_310_.en-de-es-it-fr-pl.143.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_450E.en-de-es-it-fr-pl.128.06.92.image
│ ├── FRITZ.Box_WLAN_Repeater_DVB_C.133.06.92.image
│ └── FRITZ.Powerline_1260E.157.06.92.image
├── DVB-C -> juis_check
├── DVB-C.cfg
├── international
│ ├── 1160-int -> juis_check
│ ├── 1160-int.cfg
│ ├── 1240E-int -> juis_check
│ ├── 1240E-int.cfg
│ ├── 1260E-int -> juis_check
│ ├── 1260E-int.cfg
│ ├── 1750E-int -> juis_check
│ ├── 1750E-int.cfg
│ ├── 310B-int -> juis_check
│ ├── 310B-int.cfg
│ ├── 310-int -> juis_check
│ ├── 310-int.cfg
│ ├── 3272-int -> juis_check
│ ├── 3272-int.cfg
│ ├── 3490-int -> juis_check
│ ├── 3490-int.cfg
│ ├── 4020-int -> juis_check
│ ├── 4020-int.cfg
│ ├── 4040-int -> juis_check
│ ├── 4040-int.cfg
│ ├── 450E-int -> juis_check
│ ├── 450E-int.cfg
│ ├── 540E-int -> juis_check
│ ├── 540E-int.cfg
│ ├── 546E-int -> juis_check
│ ├── 546E-int.cfg
│ ├── 5490-int -> juis_check
│ ├── 5490-int.cfg
│ ├── 7272-int -> juis_check
│ ├── 7272-int.cfg
│ ├── 7390-int -> juis_check
│ ├── 7390-int.cfg
│ ├── 7430-int -> juis_check
│ ├── 7430-int.cfg
│ ├── 7490-int -> juis_check
│ ├── 7490-int.cfg
│ ├── 7560-int -> juis_check
│ ├── 7560-int.cfg
│ ├── 7590-int -> juis_check
│ ├── 7590-int.cfg
│ ├── DVB-C-int -> juis_check
│ ├── DVB-C-int.cfg
│ └── juis_check
├── juis_check
└── !WICHTIG-LESEN!

8 directories, 213 files

Bei genügend Interesse eröffne ich einen extra Thread, anderenfalls bin ich auf das "neue juis von Peter" erst mal gespannt und verbleibe somit mit diesem "Helper" hier.
 
  • Like
Reaktionen: Cobold
Falls jemand Interesse an meiner Aufbauweise und der Behandlung der Configs hat und gerne Beta-Tester ein mag, bitte via Unterhaltung melden.


Hi!
Deine bereitgestellten files haben die falsche Dateiendung

Code:
root@debian:~# tar -xjf juc_beta-0.3.1.tar.bz2
bzip2: (stdin) is not a bzip2 file.
tar: Child returned status 2
tar: Error is not recoverable: exiting now

root@debian:~# file juc_beta-0.3.1.tar.bz2
juc_beta-0.3.1.tar.bz2: gzip compressed data, from Unix, last modified: Tue Dec 19 21:31:45 2017
 
Danke für den Hinweis - habe es neu gepackt und hochgeladen

Code:
tar xfz juc_beta-0.3.1.tar.gz
 
  • Like
Reaktionen: TomTomNavigator
Bei mir erscheint diese Fehlermeldung zum Abschluss:

Geholt: 20 Dateien, 365M in 3m 56s (1,55 MB/s)
cp: der Aufruf von stat für „F*.???.??.??-*image“ ist nicht möglich: Datei oder Verzeichnis nicht gefunden

Sowohl auf einem Linux Rechner als auch auf einem Raspberry Pi3.

Ausgeführt hatte ich den Befehl: ./check-alles-dl in dem angelgten Unterverzeichnis. Die herunter geladenen Dateien liegen in: ./dl/deutsch bzw ./dl/international
 
Das liegt daran, dass es keine Beta/Inhouse für die internationalen FW gibt, werde ich in der nächsten Version, erst mal standartmäßig deaktivieren.

Aber für jetzt als Workaround bzw so war es ansich gedacht (wenn man die Dateien öffnen, sollte sich das meiste eig. erschließen)

Code:
check-international
Zeile 76: cp -l F*.???.??.??-*image Beta-Inhouse/
ändern: #cp -l F*.???.??.??-*image Beta-Inhouse/
 
  • Like
Reaktionen: _fbfuser_
Sooo ... am 05.12.2017 hatte ich den Plan einer neuen Version angekündigt, dann kam (außer einem neuen Branch im Repository, wo der damalige Stand mit ersten Änderungen zu sehen war) erst mal eine Weile nichts.

Um das nun aber nicht auch noch als "guten Vorsatz" mit ins neue Jahr zu nehmen, habe ich den - für mich in dieser Runde auch finalen - Stand noch im vergangenen Jahr eingecheckt (die Korrekturen in diesem Jahr waren nur minimal) und am Ende auch das bisherige "tools/juis_check" durch einen Symlink auf das neue Verzeichnis "juis" und die dort dann enthaltene neue Version von "juis_check" ersetzt.

Aus knapp 400 Zeilen und ~ 25 KByte wurden jetzt mehr als 1350 Zeilen und mehr als 70 KByte - darunter hat sicherlich die Lesbarkeit gelitten, dafür ist am Ende der "Bedienkomfort" (hoffentlich jedenfalls) höher bzw. es gibt ein paar mehr Möglichkeiten, das Skript ohne weitere Änderungen für eigene Projekte zu nutzen.

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

Wer die alte Version will, muß halt einen alten Stand auschecken, ansonsten wären die URLs für die aktuelle Version ab sofort die folgenden:

- das gesamte GitHub-Repository (z.B. für das Klonen, falls jemand mit "git" arbeiten möchte):

https://github.com/PeterPawn/YourFritz

- "juis_check" im GitHub-Repository, zur "Ansicht":

https://github.com/PeterPawn/YourFritz/blob/master/juis/juis_check

- direkter Download, diese Datei muß dann nur noch irgendwo gespeichert und ausführbar gemacht werden:

https://raw.githubusercontent.com/PeterPawn/YourFritz/master/juis/juis_check

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

Was hat sich denn jetzt geändert und warum?

Gegenüber dem Vorgänger hat die neue Version folgende Vorteile (in meinen Augen zumindest):

  • Sie ist sowohl mit der "dash" (oder irgendeiner anderen POSIX-kompatiblen Shell) als auch mit der "bash" (der wohl bekanntesten Shell unter Linux und BSD-Systemen) verwendbar und das Skript läuft auf fast jedem System, selbst in der "bash" unter Windows 10. Allerdings immer unter der Voraussetzung, daß ein paar Basiskommandos vorhanden sind, von denen "realpath" schon das exotischste wäre, wenn man mal "netcat" (bzw. "nc") nicht mitzählt, welches bei anderen Shells als der "bash" halt für die Netzwerkzugriffe benötigt würde. Es werden keine weiteren Dateien (z.B. aus meiner Skript-Bibliothek) benötigt, der komplette Shell-Code ist in der einzelnen Datei "juis_check" enthalten und an externen Kommandos und "Referenzen" werden nur die folgenden benötitigt:
    Code:
    cat
    cmp
    date
    mkdir
    mkfifo oder mknod
    mktemp (das wird emuliert, wenn es nicht vorhanden sein sollte)
    nc (also "netcat", was nur dann benötigt wird, wenn die Shell keine "bash" (mit Netzwerk-Support) ist - es sollten praktisch alle "netcat-Dialekte" funktionieren, da gar keine Optionen beim Aufruf verwendet werden)
    realpath (wenn vorhanden, ansonsten bleiben Dateinamen halt ungekürzt und relativ)
    rm
    sed
    touch
    wc
    /tmp (hier muß ein beschreibbares Dateisystem vorhanden sein, wenn nicht mit der Variablen "TMPDIR" ein anderer Pfad dafür festgelegt wurde)
    Das Skript testet auch bereits am Beginn selbst, ob alle notwendigen Voraussetzungen vorhanden sind ... ist das nicht der Fall, sollte eine passende Fehlernachricht auf diesen Umstand aufmerksam machen und nicht erst der Fehler, der sich aus dem Fehlen irgendeiner Voraussetzung am Ende ergibt.
    Läuft das Skript wegen des SheBang "/bin/sh" beim Aufruf nicht in einer "bash"-Instanz (das wird anhand von "$BASH_VERSION" entschieden), startet es sich selbst noch einmal neu unter einer solchen "bash", wenn diese dann gefunden wird. Will man das verhindern, kann man eine entsprechende Option angeben, welche das Skript auch selbst beim zweiten Aufruf verwendet, um sich nicht in eine Endlos-Schleife beim "respawning" zu stürzen, falls die vermeintliche "bash" auch keine "BASH_VERSION"-Variable bereitstellt.
  • Das neue Skript ist wesentlich "geschwätziger", wenn man es mit der "debug"-Option aufruft. Die Protokollierung wurde massiv ausgebaut und sollte damit jedem Einzelnen die selbständige Fehlersuche deutlich einfacher machen und auch bei Fragen hier im Board sollte es selbstverständlich sein, daß man diese Debug-Ausgabe der eigenen Frage (möglichst unaufgefordert) hinzufügt (wenigstens künftig).
  • Die neue Version ist mit englischen und deutschen Hilfetexten und Nachrichten ausgestattet. Die Auswahl erfolgt ausschließlich anhand der Variablen "LC_ALL" bzw. "LANG" (in dieser Reihenfolge) und der erste gesetzte Wert entscheidet. Ist dort kein "de" vorhanden im Wert, bleibt es bei der Standardeinstellung "en" und die Ausgaben erfolgen in Englisch. Andere Sprachen sind nicht implementiert. Wenn sich jemand betätigen will ... die Nachrichten sind alle an einer Stelle in der Datei versammelt und das Ergänzen weiterer Sprachen sollte mit wenig Zusatzaufwand (im Code) möglich sein.
  • Die neue Version versucht zuerst, die notwendigen Daten aus der "juis_boxinfo.xml" zu lesen, diese Datei ist erst in neueren Firmware-Versionen verfügbar, enthält aber "passendere" Parameter für die Abfragen bei AVM. Wird diese Datei in älterer Firmware nicht gefunden, wird weiterhin die "jason_boxinfo.xml" verwendet.
  • Beim Handling der Konfigurationsdatei geht die neue Version flexibler vor ... sie braucht nicht mehr unbedingt eine solche Datei (dann kommen "Standardkommandos" zum Einsatz, die der bisher bereitgestellten Konfigurationsdatei entsprechen), der Name der Konfigurationsdatei kann jetzt optional frei gewählt werden (über eine Environment-Variable - das "erspart" ggf. das Vorhalten mehrerer Symlinks für unterschiedliche Konfigurationen) und wenn man die notwendigen Parameter auf anderen Wegen zur Verfügung stellen will (z.B. vorneweg über das Environment), kann man mit einer Option auch komplett auf die Konfigurationsdatei verzichten.
  • Die SOAP-Antwort von AVM (die letzte Zeile daraus, denn bisher steht das bei AVM alles in einer Zeile und wenn sich das ändern sollte, muß man auch im Skript noch einmal korrigieren) kann man sich jetzt abspeichern lassen und dann selbst irgendwie weiterverarbeiten (z.B. mit "xmllint", das damit aber eben keine Voraussetzung für dieses Skript sein muß).
Wie installiere ich das jetzt bei mir?

So etwas ist pauschal ja schlecht zu beantworten, aber zwei mögliche Wege greife ich mal heraus.

Das wäre als erstes der Download der Skript-Datei als "raw file" von GitHub - das ist dann eben der "Text" aus der Skript-Datei und da das Ganze ja nur aus dieser einen Text-Datei besteht, braucht es keine Kommandos zum Entpacken oder ähnlichem. Es reicht vollkommen, die gespeicherte Datei noch als "ausführbar" zu markieren und schon kann man sie aufrufen:
Code:
peh@Bragi:~$ wget https://raw.githubusercontent.com/PeterPawn/YourFritz/master/juis/juis_check
--2018-01-01 22:44:37--  https://raw.githubusercontent.com/PeterPawn/YourFritz/master/juis/juis_check
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.112.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.112.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 71298 (70K) [text/plain]
Saving to: ‘juis_check’

100%[===============================================================>] 71,298      --.-K/s   in 0.05s

2018-01-01 22:44:37 (1.36 MB/s) - ‘juis_check’ saved [71298/71298]

peh@Bragi:~$ chmod u+x juis_check
peh@Bragi:~$ ./juis_check 192.168.178.1
juis_check: No newer version found, check was made with source version '153.06.92-47571'.
peh@Bragi:~$
- sollte sich das Verzeichnis, in dem man die Datei gespeichert hat, in der PATH-Variablen befinden, kann man das "./" vor dem Namen halt auslassen.

Die zweite Möglichkeit wäre das Klonen des kompletten Repos von GitHub, natürlich am besten in ein Dateisystem, welches native Linux-Zugriffsrechte unterstützt:
Code:
vidar:~ # cd /tmp
vidar:/tmp # git clone https://github.com/PeterPawn/YourFritz
Cloning into 'YourFritz'...
remote: Counting objects: 2240, done.
remote: Compressing objects: 100% (57/57), done.
remote: Total 2240 (delta 52), reused 102 (delta 47), pack-reused 2129
Receiving objects: 100% (2240/2240), 11.87 MiB | 6.10 MiB/s, done.
Resolving deltas: 100% (1389/1389), done.
vidar:/tmp # cd YourFritz/juis/
vidar:/tmp/YourFritz/juis # ./juis_check 192.168.178.1
juis_check: No newer version found, check was made with source version '153.06.92-47571'.
vidar:/tmp #
Da beim Klonen auch die Zugriffsrechte korrekt gesetzt werden, braucht es hier kein "chmod", nur den Wechsel in das richtige Unterverzeichnis, bevor man das Skript dann aufrufen kann.

Wer das auf anderen Wegen "installieren" will (das ist ja ohnehin viel zu hochtrabend für das Speichern einer Text-Datei und das Setzen von Zugriffsrechten), der wird sicherlich auch die notwendigen Schritte und Kommandos auf seinen eigenen System kennen, die er dafür braucht.

Wo kann ich das Skript überall benutzen?

Kurz gesagt ... das Skript sollte fast überall zum Laufen zu bewegen sein - manchmal muß man sich vielleicht erst noch eine passende(!) BusyBox mit allen benötigten Applets besorgen, wenn man ein sehr exotisches (und von sich aus sehr beschränktes) System verwenden möchte.

Wie verwende ich das Skript bei meiner eigenen Box?

Das Skript kann problemlos mit der Option "--help" (oder kurz auch "-h") aufgerufen werden, dann zeigt es einen (eher längeren) Text an, wie man es aufrufen kann und welche Angaben es versteht. Diese Hilfe-Seite(n) werden - wenn das Ausgabegerät ein Terminal ist und das Programm "less" (das ist ein "terminal pager", also ein Programm zur seitenweisen Anzeige einer Datei) vorhanden ist - auf dem Terminal mit genau diesem "less" angezeigt, ansonsten ohne "less". (Wer sich mit "less" nicht auskennt: Mit einem einfachen "q" kann man das Programm wieder verlassen.)

Dieselbe Information (nur etwas anders formatiert) findet man auch im Repository und zwar sowohl in Deutsch als auch in Englisch. Es wäre nett, wenn man sich einfach dort (GitHub oder Hilfetext) erst einmal informiert und dann - wenn man wirklich etwas nicht verstanden hat und auch mit (mehr oder weniger mutigem) Probieren nicht mehr weiterkommt (es kann ja absolut nichts passieren, hier wird nicht ein Bit an der Box wirklich geändert und eigene Erfahrungen sind meist durch nichts Gleichwertiges zu ersetzen), aber wirklich erst dann, mit einer eigenen Frage hier aufläuft - wobei man dann idealerweise auch noch ein paar Seiten in diesem Thread rückwärts gelesen hat, damit die eigene Frage nicht einfach auf der vorherigen Seite schon (möglichst noch mehrfach) beantwortet wurde.

Ansonsten reicht es tatsächlich aus, das (korrekt installierte) Skript mit der Angabe des Namens oder der IP-Adresse einer lokal erreichbaren FRITZ!Box aufzurufen:
Code:
vidar:~/GitHub/YourFritz/juis # ./juis_check 192.168.13X.1
juis_check: No newer version found, check was made with source version '113.06.92-47565'.
vidar:~/GitHub/YourFritz/juis # ./juis_check 192.168.13X.1
juis_check: Found newer version: 141.06.87
URL=http://download.avm.de/firmware/(...)/FRITZ.Box_6490_Cable.de-en-es-it-fr-pl.141.06.87.image
DelayDownload=1551
vidar:~/GitHub/YourFritz/juis # ./juis_check 192.168.178.1
juis_check: No newer version found, check was made with source version '153.06.92-47571'.
vidar:~/GitHub/YourFritz/juis #
So sähe das für drei verschiedene Boxen (eine 7490, eine 6490 und eine 7580 - die habe ich gerade herumstehen) aus ... alle spezifischen Angaben für die Abfrage bei AVM werden aus der jeweils angegebenen Box ausgelesen.

Wer das lieber etwas ausführlicher haben möchte, der gibt dann beim Aufruf noch die "debug"-Option mit an, das sieht dann etwa so aus:
Code:
vidar:~/GitHub/YourFritz/juis # ./juis_check -d 192.168.178.1
debug: -------------------------------------------------------
debug: Reading values from '192.168.178.1:80/juis_boxinfo.xml': .
debug: Read response from device:
debug: -------------------------------------------------------
       HTTP/1.1 200 OK
       Cache-Control: max-age=120
       Connection: close
       Content-Type: text/xml;charset=utf-8
       Date: Mon, 01 Jan 2018 17:23:36 GMT
       ETag: "274DB0DAB57462D8F"
       Expires: Mon, 01 Jan 2018 17:25:36 GMT
       Last-Modified: Thu, 01 Jan 1970 00:00:38 GMT
       Mime-Version: 1.0


       <e:BoxInfo xmlns:e="http://juis.avm.de/updateinfo" xmlns:q="http://juis.avm.de/request">
       <q:Name>FRITZ!Box 7580 (UI)</q:Name>
       <q:HW>225</q:HW>
       <q:Major>153</q:Major>
       <q:Minor>6</q:Minor>
       <q:Patch>92</q:Patch>
       <q:Buildnumber>47571</q:Buildnumber>
       <q:Buildtype>1</q:Buildtype>
       <q:Serial>E0286DCAFEDE</q:Serial>
       <q:OEM>1und1</q:OEM>
       <q:Lang>de</q:Lang>
       <q:Country>049</q:Country>
       <q:Annex>B</q:Annex>
       <q:Flag></q:Flag>
       <q:UpdateConfig>2</q:UpdateConfig>
       <q:Provider></q:Provider></e:BoxInfo>
debug: Compound version number used for request: '153.06.92-47571'
debug: -------------------------------------------------------
debug: Variables set:
debug: -------------------------------------------------------
debug: Serial="E0286DCAFEDE"
debug: Name="FRITZ!Box 7580 (UI)"
debug: HW="225"
debug: OEM="1und1"
debug: Lang="de"
debug: Annex="B"
debug: Country="049"
debug: Major="153"
debug: Minor="6"
debug: Patch="92"
debug: Buildnumber="47571"
debug: Flag=""
debug: Public="1"
debug: type="1001"
debug: hostname="225.jws.avm.de"
debug: nonce="koZ6WAPqqtPwwvTvnVbrRQ=="
debug: -------------------------------------------------------
debug: Sent request:
debug: -------------------------------------------------------
       POST /Jason/UpdateInfoService HTTP/1.1
       Host: 225.jws.avm.de:80
       Content-Length: 1175
       Content-Type: text/xml; charset="utf-8"
       Connection: close

       <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:e="http://juis.avm.de/updateinfo" xmlns:q="http://juis.avm.de/request">
         <soap:Header/>
         <soap:Body>
           <e:BoxFirmwareUpdateCheck>
             <e:RequestHeader>
               <q:Nonce>koZ6WAPqqtPwwvTvnVbrRQ==</q:Nonce>
               <q:UserAgent>Box</q:UserAgent>
               <q:ManualRequest>true</q:ManualRequest>
             </e:RequestHeader>
             <e:BoxInfo>
               <q:Name>FRITZ!Box 7580 (UI)</q:Name>
               <q:HW>225</q:HW>
               <q:Major>153</q:Major>
               <q:Minor>6</q:Minor>
               <q:Patch>92</q:Patch>
               <q:Buildnumber>47571</q:Buildnumber>
               <q:Buildtype>1001</q:Buildtype>
               <q:Serial>E0286DCAFEDE</q:Serial>
               <q:OEM>1und1</q:OEM>
               <q:Lang>de</q:Lang>
               <q:Country>049</q:Country>
               <q:Annex>B</q:Annex>
               <q:Flag></q:Flag>
               <q:UpdateConfig>1</q:UpdateConfig>
               <q:Provider>oma_lan</q:Provider>
             </e:BoxInfo>
           </e:BoxFirmwareUpdateCheck>
         </soap:Body>
       </soap:Envelope>
debug: -------------------------------------------------------
debug: Reading response from '225.jws.avm.de:80': .
debug: Received response:
debug: -------------------------------------------------------
       HTTP/1.1 200 OK
       Server: nginx
       Content-Type: text/xml;charset=UTF-8
       Content-Length: 1949
       Connection: close
       Download-Delay: 3346
       Date: Mon, 01 Jan 2018 17:23:39 GMT
       Access-Control-Allow-Origin: http://scope.avm.de
       Access-Control-Allow-Headers: content-type

       <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"></SOAP-ENV:Header><soap:Body ID="Body"><ns2:BoxFirmwareUpdateCheckResponse xmlns:ns2="http://juis.avm.de/updateinfo" xmlns:ns3="http://juis.avm.de/response" xmlns:ns4="http://juis.avm.de/request"><ns2:ResponseUpdateInfo><ns3:ResponseHeader><ns3:Nonce>koZ6WAPqqtPwwvTvnVbrRQ==</ns3:Nonce></ns3:ResponseHeader><ns3:UpdateInfo><ns3:CheckInterval>24</ns3:CheckInterval><ns3:Found>false</ns3:Found><ns3:Version></ns3:Version><ns3:DownloadURL></ns3:DownloadURL><ns3:InfoURL></ns3:InfoURL><ns3:InfoText></ns3:InfoText><ns3:HintURL></ns3:HintURL><ns3:Priority>1</ns3:Priority><ns3:AutoUpdateStartTime>0</ns3:AutoUpdateStartTime><ns3:AutoUpdateEndTime>0</ns3:AutoUpdateEndTime><ns3:AutoUpdateKeepServices>true</ns3:AutoUpdateKeepServices></ns3:UpdateInfo></ns2:ResponseUpdateInfo></ns2:BoxFirmwareUpdateCheckResponse><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></CanonicalizationMethod><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></SignatureMethod><Reference URI="#Body"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod><DigestValue>rzkkfNmDW/9HSPiyMsflZX5QLL2ofhYJFgoiTa/Kwqc=</DigestValue></Reference></SignedInfo><SignatureValue>TsGD1IVmQIKBfEbuHoR+VU5iPR9s/yZJ3VpK4gXcnnuPVCfG4TsUBBCj4pADK7Bh0kvbsQs5P1G9rgkKJPFm8MkqGelNQEfR1XK/EWNwYWDrsIYzf0/d85P+fP1iA7XmVhOzffIvK0igqTWNxpXdeD4FMuKT2sYP1lteLes1hiDFfxrpqKd8d1OJjU/wQtH/FST6P4+LZDEVgq9sT4Upvex3hBodIedUcUYQW8xYjYx3YhjFRv4fhhMuulr3TC88m6e6EiXjUg+SBhy2SYnl0BNi/6ZyHOhFz58hDQMuIvskzcp+tbxq8CykrgLNQMNMokzog1h8/C7QSsONeXvoJQ==</SignatureValue></Signature></soap:Body></soap:Envelope>
debug: -------------------------------------------------------
juis_check: No newer version found, check was made with source version '153.06.92-47571'.
vidar:~/GitHub/YourFritz/juis #
Im einfachsten Fall fragt man aber auch bloß den Exit-Code des Skripts ab, bei "2" gibt es keine neue Firmware und bei "0" kriegt man auf STDOUT die URL geliefert, von der man die neue Firmware laden könnte.

Wie kann ich Firmware für eine andere FRITZ!Box finden, die ich vielleicht nicht einmal selbst besitze?

Was genau AVM jetzt an Parametern für eine Antwort auswertet, variiert (zumindest dem Anschein nach) wohl von Modell zu Modell und hängt u.a. auch davon ab, welche "Geschmacksrichtung" der Firmware man nun eigentlich sucht.

Was offensichtlich auf jeden Fall zum abgefragten Modell passen muß, ist der Wert von "HW", was als "HWRevision" im Gerät hinterlegt ist. Das ist deshalb so offensichtlich, weil der Servername bei AVM, an den man den SOAP-Request senden muß, diese Nummer als ersten Bestandteil enthält, danach folgt dann erst ".jws.avm.de" - für eine 7490 mit "HWRevision 185" ist dann der Servername bei AVM also "185.jws.avm.de".

Alle anderen Parameter werden bei einigen Modellen berücksichtigt und bei anderen wieder nicht ... eine echte Systematik scheint dort nicht zu existieren und wenn man mit nur wenigen passenden Angaben gar keine Antwort (sondern einen Server-Fehler) oder immer wieder eine "falsche Antwort" erhält, muß man eben so lange die Parameter variieren und mit den richtigen Angaben für die gewünschte Box ergänzen, bis die Abfrage dann doch mal klappt. Wer richtig schlau ist, merkt sich diese Parameter-Kombination dann für das nächste Mal ... :D

Für eine 6590 reicht es z.B. bereits aus, wenn man nur die richtige "HW"-Angabe verwendet und noch ein zusätzliches "Flag", was so auch nur bei den DOCSIS-Modellen existiert und bei der 6490 wieder ignoriert wird (Beispiele im nächsten Abschnitt).

Für eine 7490 wäre z.B. das die minimale Bestückung mit Parametern, bei der ich noch eine sinnvolle Antwort vom AVM-Service erhalten kann:
Code:
vidar:~/GitHub/YourFritz/juis # juis_check -d -i HW=185 Version=000.00.00-00000 Serial=12 Name=7490 OEM=avm Lang=empty Annex=empty Country=empty Flag=empty
debug: Skipping configuration file processing ...
debug: Setting 'HW' to '185' from command line parameter
debug: Setting 'Version' to '000.00.00-00000' from command line parameter
debug: Setting 'Serial' to '12' from command line parameter
debug: Setting 'Name' to '7490' from command line parameter
debug: Setting 'OEM' to 'avm' from command line parameter
debug: Setting 'Lang' to 'empty' from command line parameter
debug: Setting 'Annex' to 'empty' from command line parameter
debug: Setting 'Country' to 'empty' from command line parameter
debug: Setting 'Flag' to 'empty' from command line parameter
debug: Splitting compound version number '000.00.00-00000' to:
debug: Major=000
debug: Minor=00
debug: Patch=00
debug: Buildnumber=00000
debug: Compound version number used for request: '0.00.00-00000'
debug: -------------------------------------------------------
debug: Variables set:
debug: -------------------------------------------------------
debug: Serial="12"
debug: Name="7490"
debug: HW="185"
debug: OEM="avm"
debug: Lang=""
debug: Annex=""
debug: Country=""
debug: Major="000"
debug: Minor="00"
debug: Patch="00"
debug: Buildnumber="00000"
debug: Flag=""
debug: Public="1"
debug: type="1001"
debug: hostname="185.jws.avm.de"
debug: nonce="W4l61AWn8cB5XTlVGX9VtA=="
debug: -------------------------------------------------------
debug: Sent request:
debug: -------------------------------------------------------
       POST /Jason/UpdateInfoService HTTP/1.1
       Host: 185.jws.avm.de:80
       Content-Length: 1143
       Content-Type: text/xml; charset="utf-8"
       Connection: close

       <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:e="http://juis.avm.de/updateinfo" xmlns:q="http://juis.avm.de/request">
         <soap:Header/>
         <soap:Body>
           <e:BoxFirmwareUpdateCheck>
             <e:RequestHeader>
               <q:Nonce>W4l61AWn8cB5XTlVGX9VtA==</q:Nonce>
               <q:UserAgent>Box</q:UserAgent>
               <q:ManualRequest>true</q:ManualRequest>
             </e:RequestHeader>
             <e:BoxInfo>
               <q:Name>7490</q:Name>
               <q:HW>185</q:HW>
               <q:Major>000</q:Major>
               <q:Minor>00</q:Minor>
               <q:Patch>00</q:Patch>
               <q:Buildnumber>00000</q:Buildnumber>
               <q:Buildtype>1001</q:Buildtype>
               <q:Serial>12</q:Serial>
               <q:OEM>avm</q:OEM>
               <q:Lang></q:Lang>
               <q:Country></q:Country>
               <q:Annex></q:Annex>
               <q:Flag></q:Flag>
               <q:UpdateConfig>1</q:UpdateConfig>
               <q:Provider>oma_lan</q:Provider>
             </e:BoxInfo>
           </e:BoxFirmwareUpdateCheck>
         </soap:Body>
       </soap:Envelope>
debug: -------------------------------------------------------
debug: Reading response from '185.jws.avm.de:80': .
debug: Received response:
debug: -------------------------------------------------------
       HTTP/1.1 200 OK
       Server: nginx
       Content-Type: text/xml;charset=UTF-8
       Content-Length: 2251
       Connection: close
       Download-Delay: 343
       Date: Wed, 03 Jan 2018 00:35:09 GMT
       Access-Control-Allow-Origin: http://scope.avm.de
       Access-Control-Allow-Headers: content-type

       <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"></SOAP-ENV:Header><soap:Body ID="Body"><ns2:BoxFirmwareUpdateCheckResponse xmlns:ns2="http://juis.avm.de/updateinfo" xmlns:ns3="http://juis.avm.de/response" xmlns:ns4="http://juis.avm.de/request"><ns2:ResponseUpdateInfo><ns3:ResponseHeader><ns3:Nonce>W4l61AWn8cB5XTlVGX9VtA==</ns3:Nonce></ns3:ResponseHeader><ns3:UpdateInfo><ns3:CheckInterval>48</ns3:CheckInterval><ns3:Found>true</ns3:Found><ns3:Name>_EXTERN Release IQ17p1 NL1+Produnktion</ns3:Name><ns3:Version>113.06.93</ns3:Version><ns3:Type>1</ns3:Type><ns3:DownloadURL>http://download.avm.de/fritzbox/fritzbox-7490/deutschland/fritz.os/FRITZ.Box_7490.113.06.93.image</ns3:DownloadURL><ns3:InfoURL>http://download.avm.de/fritzbox/fritzbox-7490/deutschland/fritz.os/info_de.txt</ns3:InfoURL><ns3:InfoText>RELEASE</ns3:InfoText><ns3:HintURL></ns3:HintURL><ns3:IconURL></ns3:IconURL><ns3:Priority>1</ns3:Priority><ns3:AutoUpdateStartTime>0</ns3:AutoUpdateStartTime><ns3:AutoUpdateEndTime>21600</ns3:AutoUpdateEndTime><ns3:AutoUpdateKeepServices>true</ns3:AutoUpdateKeepServices></ns3:UpdateInfo></ns2:ResponseUpdateInfo></ns2:BoxFirmwareUpdateCheckResponse><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></CanonicalizationMethod><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></SignatureMethod><Reference URI="#Body"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod><DigestValue>qMEsGZSAdT71mSEaQRIIeSabbN1fWSKm/3T4+N6y1Z4=</DigestValue></Reference></SignedInfo><SignatureValue>n9czc2umgnAtxSiyBxuWM9MKYrTPxivJXtMhNmaJwULqubfWYiKb37BIMB+YvTlQQY0MBBPjI6IuNZ7BC4XcQo3hADPVrwkD/bSiC6hpablDpAtpHAd2KBh+0UOwcngywJtQupFIIrIhH3VyOI5xuO+/EW5Mf+0gOYb/3YCf+CrMPQBgz8ozsfZK0gb6UhqK0BSk0/Mv1IICO3R4mP1Hv6C17BUFuZ3KIEa5WbFOYmpNM0k6GsUq5Y5TeWmPy3Tv/hUwFJdkc3q0ApcrGw8jbF+UIA9hTpjui3B+wChf2ktDSlSLTW0Wr76RSlfAT7FfI4Vmw6PFwn5oM1X3jt7CNQ==</SignatureValue></Signature></soap:Body></soap:Envelope>
debug: -------------------------------------------------------
root/bin/juis_check: Found newer version: 113.06.93
URL=http://download.avm.de/fritzbox/fritzbox-7490/deutschland/fritz.os/FRITZ.Box_7490.113.06.93.image
DelayDownload=343
vidar:~/GitHub/YourFritz/juis #
Anhand der ansonsten in der Antwort sichtbaren Exceptions kann man beim Probieren ableiten, daß der Service dort auf der Angabe von "Name" besteht (dessen Länge muß größer als Null sein) und auch bei "Serial" will er irgendeinen Wert, der auf die Maske aus dieser Gültigkeitsprüfung paßt:
Code:
<faultstring>
  cvc-pattern-valid: Value '' is not facet-valid with respect to pattern '[A-Za-z0-9]([A-Za-z0-9 ]*[A-Za-z0-9])?' for type '#AnonType_SerialBoxInfo'.
</faultstring>
was also auch noch nicht unbedingt der Maske nach eine MAC-Adresse sein muß - es reicht bereits, wenn es mind. ein alphanumerisches Zeichen ist ... dazwischen könnten sogar Leerzeichen auftauchen neben den alphanumerischen Zeichen, solange das letzte keines ist. Meine Angabe "12" oben paßt jedenfalls auf diese Maske.

Weiß man also nicht genau, welche Angaben AVM für die eigene Box erwartet und welche davon ggf. auch noch stimmen sollten, selbst wenn man ein Modell abfragen will, auf welches man selbst keinen Zugriff hat und damit auch die richtigen Werte weder von Hand nachschlagen noch von diesem Skript automatisch auslesen lassen kann, dann tastet man sich halt solange mit weiteren Angaben vor, bis einem die Antwort irgendwann mal gefällt.

Dabei darf man auch keine Scheuklappen aufhaben, weil nicht immer ein direkter Zusammenhang zwischen einem Parameter und einer "ablehnenden Antwort" ersichtlich ist ... die oben gezeigte Abfrage für die 7490 liefert z.B. die Information "keine neue Firmware", wenn man den OEM-Wert nicht angibt:
Code:
vidar:~/GitHub/YourFritz/juis # juis_check -i HW=185 Version=000.00.00-00000 Serial=12 Name=7490 OEM=empty Lang=empty Annex=empty Country=empty Flag=empty
root/bin/juis_check: No newer version found, check was made with source version '0.00.00-00000'.
vidar:~/GitHub/YourFritz/juis #

Es gibt also kein echtes "Rezept" dafür, was an Parametern jeweils passend sein muß ... es kann aber auch nichts passieren bei einem eigenen Test. Vielleicht springt AVM etwas im Dreieck, aber so ein öffentlich erreichbarer Service sollte auch gegen echte Angriffe gewappnet sein und da ist das, was wir hier machen, eher Kinderkram. Man darf also auch nicht zu schüchtern sein (die Debug-Ausgabe ist natürlich auch hilfreich, wenn man ein Problem finden will) - notfalls fragt man dann andere hier im IPPF, die so ein Gerät besitzen und die richtigen Werte auslesen lassen können.

Denn natürlich gilt auch hier die Regel, daß es kein Problem darstellt, wenn man einen von AVM nicht wirklich ausgewerteten Parameter trotzdem richtig und vollständig angibt - es gibt keine "Pflicht zur Lücke" und nicht einmal die Angabe der eigenen, korrekten MAC-Adresse der Box sollte ein Problem darstellen ... denn das, was das Skript hier macht, ist keinesfalls illegal oder sonst irgendwie "anrüchig".

Es gibt auf diesem AVM-Service keine weitere Zugangssicherung für eine Abfrage (nicht einmal eine "symbolische", die vermutlich auch nicht als rechtliche Handhabe ausreichen würde) - damit muß da auch nichts überwunden werden und man darf bei so einem Service tatsächlich erwarten, daß er auch gegen Fehl"eingaben" bestens gehärtet ist.

Solange jetzt also nicht Millionen von Abfragen in kurzer Folge stattfinden, die nicht von den FRITZ!Boxen stammen, sollte das bei AVM in den Server-Logs auch kaum auffallen. Ich würde aber auch darum bitten, daß man das Skript mit Sinn und Verstand anwendet ... wer regelmäßig nach neuer Firmware sucht, sollte das selbst in den Zeiten einer Labor-Reihe in einem vernünftigen Intervall machen (mind. 60 Minuten erscheinen mir angemessen). Wer das nur benutzt (und zwar mit sehr kleinen Intervallen), um immer mal wieder "Erster" zu sein beim Finden einer neuen Firmware, konterkariert meine eigenen Intentionen mit diesem Skript auf recht hässliche Weise.

Wie wäre es mal mit ein paar Beispielen?

Ausnahmsweise ... hier z.B. die Abfrage für die 6590, bei der alles auf der Kommandozeile angegeben wird:
Code:
vidar:~/GitHub/YourFritz/juis # juis_check -i HW=220 Version=000.00.00-00000 Serial=12 Name=6590 OEM=avm Lang=empty Annex=empty Country=empty Flag=cable_retail
root/bin/juis_check: Found newer version: 148.06.85
URL=http://download.avm.de/firmware/6590/(...)/FRITZ.Box_6590_Cable.de-en-es-it-fr-pl.148.06.85.image
DelayDownload=1049
vidar:~/GitHub/YourFritz/juis # juis_check -i HW=220 Version=000.00.00-00000 Serial=12 Name=6590 OEM=avm Lang=empty Annex=empty Country=empty Flag=empty
root/bin/juis_check: No newer version found, check was made with source version '0.00.00-00000'.
vidar:~/GitHub/YourFritz/juis #
Die funktioniert (wie schon mal erwähnt) eben ohne das "Flag=cable_retail" nicht, wie man oben sehen kann ... bei der 6490 ist das hingegen nicht erforderlich:
Code:
vidar:~/GitHub/YourFritz/juis # juis_check -i HW=213 Version=000.00.00-00000 Serial=12 Name=6490 OEM=avm Lang=empty Annex=empty Country=empty Flag=empty
root/bin/juis_check: No newer version found, check was made with source version '0.00.00-00000'.
vidar:~/GitHub/YourFritz/juis # juis_check -i HW=213 Version=141.06.00-00000 Serial=12 Name=6490 OEM=avm Lang=empty Annex=empty Country=empty Flag=empty
root/bin/juis_check: No newer version found, check was made with source version '141.06.00-00000'.
vidar:~/GitHub/YourFritz/juis # juis_check -i HW=213 Version=141.06.60-00000 Serial=12 Name=6490 OEM=avm Lang=empty Annex=empty Country=empty Flag=empty
root/bin/juis_check: Found newer version: 141.06.87
URL=http://download.avm.de/firmware/6490/(...)/FRITZ.Box_6490_Cable.de-en-es-it-fr-pl.141.06.87.image
DelayDownload=2459
Dafür muß man hier, wie man oben in den letzten beiden Aufrufen sehen kann, wenigstens die Versionsnummer bis zum Wert von "Patch" angeben, ansonsten ist die Antwort nicht die richtige.

Am bequemsten ist es natürlich, wenn man einfach nur die IP-Adresse der eigenen Box angeben muß - oder auch "fritz.box", wenn man den aktiven Router abfragen will. Der löst i.d.R. "fritz.box" als DNS-Server auf seine eigene Adresse auf. Das ist aber oben bei "eigene Box" ausreichend gezeigt.

Was hat es denn jetzt mit diesen "internen Versionen" auf sich?

Das ist auch schnell erklärt ... offenbar verwenden auch andere "externe Tester" (oder gar die AVM-Mitarbeiter selbst bei sich daheim) FRITZ!Boxen mit einer Firmware, die noch nicht offiziell verfügbar ist, also weder als Release- noch als offizielle Labor- oder Beta-Version. Auch diese muß ja irgendwie mal aktualisiert werden (es macht sicherlich wenig Sinn, wenn die AVM-Mitarbeiter zuhause mit Versionen arbeiten müssen, die gar nicht mehr dem aktuellen Stand entsprechen) und so suchen wohl auch diese Boxen über den AVM-Service nach Updates für ihre Firmware.

Diese ist dann auch gerne mal mit "Zusatzfunktionen" ausgestattet, z.B. mit einer Shell-In-A-Box-Version, die mit dem Box-Zertifikat über eine TLS-Verbindung sogar einen sicheren Shell-Zugang (sogar von der WAN-Seite) bereitstellen kann oder auch mit ein paar zusätzlichen Debug-Skripts und anderen Programmen, die von AVM in den offiziellen Versionen entsorgt wurden, weil sie ein Sicherheitsproblem darstellen.

Unter anderem deshalb sind diese Versionen eigentlich wirklich nichts zum Spielen und wer sie sich nur installiert, weil er es kann, möge sich hinterher weder darüber aufregen, wenn die Box gar nicht mehr geht und er sie irgendwie wieder zum Leben erwecken muß oder wenn durch diese Zusatzprogramme am Ende wieder Lücken gerissen werden, die in offizieller Firmware gar nicht vorhanden sind und er darüber irgendwie angegriffen wurde (für "webcm" braucht man nur eine gültige SID und die dazugehörige IP-Adresse - das geht notfalls auch im Browser über ein Advertising mit passendem JS-Code als Malware).

Wie auch immer ... man kann auch für diese Versionen mit dem Skript eine Abfrage an den AVM-Service richten und wenn AVM das wirklich in ernsthaftem Maße stören sollte, kann man dort ja problemlos den Service weiter abdichten - entweder auf der Serverseite, die nur noch bestimmte Abfragen beantwortet oder auf der Client-Seite, indem man einen anderen Server verwendet (also das "jws.avm.de" durch etwas anderes ersetzt). Insofern habe ich auch hier wenig "Herzdrücken" - wer so etwas nicht mit einer Zugangssicherung versieht, wird sich eher nicht wundern (bzw. darf sich nicht wundern), wenn es von anderen genutzt wird.

Jedenfalls kann man mit der Angabe von "Public=0" beim Aufruf auch versuchen, eine "nicht-öffentliche" Firmware-Version zu ergattern ... dabei werden aber (so zumindest meine bisherigen Ergebnisse) noch ein paar mehr Angaben berücksichtigt, die dann zur angeblichen Box passen müssen. Wer die Box tatsächlich besitzt, sollte aber wenig Probleme haben, von AVM eine sinnvolle Antwort zu erhalten ... aber es gibt diese "inhouse"-Versionen lange nicht für alle Modelle.
Code:
vidar:~/GitHub/YourFritz/juis # juis_check -d 192.168.13X.1 Public=0
debug: Setting 'Public' to '0' from command line parameter
debug: -------------------------------------------------------
debug: Reading values from '192.168.13X.1:80/juis_boxinfo.xml': .
debug: Read response from device:
debug: -------------------------------------------------------
       HTTP/1.1 200 OK
       Cache-Control: max-age=120
       Connection: close
       Content-Type: text/xml;charset=utf-8
       Date: Wed, 03 Jan 2018 01:27:19 GMT
       ETag: "FD5545BAFF7CCA002"
       Expires: Wed, 03 Jan 2018 01:29:19 GMT
       Last-Modified: Thu, 28 Dec 2017 17:44:40 GMT
       Mime-Version: 1.0


       <e:BoxInfo xmlns:e="http://juis.avm.de/updateinfo" xmlns:q="http://juis.avm.de/request">
       <q:Name>FRITZ!Box 7490</q:Name>
       <q:HW>185</q:HW>
       <q:Major>113</q:Major>
       <q:Minor>6</q:Minor>
       <q:Patch>92</q:Patch>
       <q:Buildnumber>47565</q:Buildnumber>
       <q:Buildtype>0</q:Buildtype>
       <q:Serial>0896D7CAFEDE</q:Serial>
       <q:OEM>avm</q:OEM>
       <q:Lang>de</q:Lang>
       <q:Country>049</q:Country>
       <q:Annex>B</q:Annex>
       <q:Flag></q:Flag>
       <q:UpdateConfig>1</q:UpdateConfig>
       <q:Provider></q:Provider></e:BoxInfo>
debug: Compound version number used for request: '113.06.92-47565'
debug: -------------------------------------------------------
debug: Variables set:
debug: -------------------------------------------------------
debug: Serial="0896D7CAFEDE"
debug: Name="FRITZ!Box 7490"
debug: HW="185"
debug: OEM="avm"
debug: Lang="de"
debug: Annex="B"
debug: Country="049"
debug: Major="113"
debug: Minor="6"
debug: Patch="92"
debug: Buildnumber="47565"
debug: Flag=""
debug: Public="0"
debug: type="1000"
debug: hostname="185.jws.avm.de"
debug: nonce="m5JAxzPgw6VouS2ldA+1EQ=="
debug: -------------------------------------------------------
debug: Sent request:
debug: -------------------------------------------------------
       POST /Jason/UpdateInfoService HTTP/1.1
       Host: 185.jws.avm.de:80
       Content-Length: 1168
       Content-Type: text/xml; charset="utf-8"
       Connection: close

       <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:e="http://juis.avm.de/updateinfo" xmlns:q="http://juis.avm.de/request">
         <soap:Header/>
         <soap:Body>
           <e:BoxFirmwareUpdateCheck>
             <e:RequestHeader>
               <q:Nonce>m5JAxzPgw6VouS2ldA+1EQ==</q:Nonce>
               <q:UserAgent>Box</q:UserAgent>
               <q:ManualRequest>true</q:ManualRequest>
             </e:RequestHeader>
             <e:BoxInfo>
               <q:Name>FRITZ!Box 7490</q:Name>
               <q:HW>185</q:HW>
               <q:Major>113</q:Major>
               <q:Minor>6</q:Minor>
               <q:Patch>92</q:Patch>
               <q:Buildnumber>47565</q:Buildnumber>
               <q:Buildtype>1000</q:Buildtype>
               <q:Serial>0896D7CAFEDE</q:Serial>
               <q:OEM>avm</q:OEM>
               <q:Lang>de</q:Lang>
               <q:Country>049</q:Country>
               <q:Annex>B</q:Annex>
               <q:Flag></q:Flag>
               <q:UpdateConfig>1</q:UpdateConfig>
               <q:Provider>oma_lan</q:Provider>
             </e:BoxInfo>
           </e:BoxFirmwareUpdateCheck>
         </soap:Body>
       </soap:Envelope>
debug: -------------------------------------------------------
debug: Reading response from '185.jws.avm.de:80': .
debug: Received response:
debug: -------------------------------------------------------
       HTTP/1.1 200 OK
       Server: nginx
       Content-Type: text/xml;charset=UTF-8
       Content-Length: 2191
       Connection: close
       Download-Delay: 1084
       Date: Wed, 03 Jan 2018 01:27:22 GMT
       Access-Control-Allow-Origin: http://scope.avm.de
       Access-Control-Allow-Headers: content-type

       <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"></SOAP-ENV:Header><soap:Body ID="Body"><ns2:BoxFirmwareUpdateCheckResponse xmlns:ns2="http://juis.avm.de/updateinfo" xmlns:ns3="http://juis.avm.de/response" xmlns:ns4="http://juis.avm.de/request"><ns2:ResponseUpdateInfo><ns3:ResponseHeader><ns3:Nonce>m5JAxzPgw6VouS2ldA+1EQ==</ns3:Nonce></ns3:ResponseHeader><ns3:UpdateInfo><ns3:CheckInterval>4</ns3:CheckInterval><ns3:Found>true</ns3:Found><ns3:Name>_INTERN Inhaustest IQ17p2</ns3:Name><ns3:Version>113.06.98-48590 Inhaus</ns3:Version><ns3:Type>1</ns3:Type><ns3:DownloadURL>ftp://(...)@update.avm.de/labor/(...)/FRITZ.Box_7490.113.06.98-48590.image</ns3:DownloadURL><ns3:InfoURL></ns3:InfoURL><ns3:InfoText>INTERN IQ17p2 Inhaustest</ns3:InfoText><ns3:HintURL></ns3:HintURL><ns3:IconURL></ns3:IconURL><ns3:Priority>1</ns3:Priority><ns3:AutoUpdateStartTime>7200</ns3:AutoUpdateStartTime><ns3:AutoUpdateEndTime>18000</ns3:AutoUpdateEndTime><ns3:AutoUpdateKeepServices>true</ns3:AutoUpdateKeepServices></ns3:UpdateInfo></ns2:ResponseUpdateInfo></ns2:BoxFirmwareUpdateCheckResponse><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></CanonicalizationMethod><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></SignatureMethod><Reference URI="#Body"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod><DigestValue>FzHdhlZczlRWV0iOvAFodnGKnyh40X4E6jL8eWLG7Ks=</DigestValue></Reference></SignedInfo><SignatureValue>Cr99tL1KvmWrVUCATjOBVXz/YhBBlK2Xts7KqhFpZNr1objTG0VFJx465pHRKuM4x6wtIeg4Glnlu4ethp2MZgJDMfdoG3q13LGU7I4YXgyP2GREPsdk5yhwNWK+GFjZRgrDAHAvSYlH5ZzmVJKXjlonkug4WUCJkDmD0QmUxCaj8BdtCRetejNZ3ZpX83dRR4w18CtyoEWUWPeSAVq2qvb2UZH3AyBQ39zCc/w1DyL3yOOofaOJrEJAeDINnITDTPxr9mZsTpS6PjFOpRBv0lqq15SS7x8mJdUbhpv3iPcIgF9XLl4ashTVlPf0SjKmvw1xog6gNclYXeSJ6LRnXQ==</SignatureValue></Signature></soap:Body></soap:Envelope>
debug: -------------------------------------------------------
root/bin/juis_check: Found newer version: 113.06.98-48590 Inhaus
URL=ftp://(...)@update.avm.de/labor/(...)/FRITZ.Box_7490.113.06.98-48590.image
DelayDownload=1084
vidar:~/GitHub/YourFritz/juis #
Wie man sehen kann (zumindest wenn man sich damit auskennt), ist die Ausgangsversion auf der verwendeten Box eine ganz normale Release-Version 113.06.92, die bis gestern auch noch die aktuellste Version war. Trotzdem wird mit "Public=0" dann nicht die seit gestern aktuelle 113.06.93 gefunden (weiter oben in einem Beispiel hingegen schon), sondern eine vollkommen andere Version, die als Name dann "_INTERN Inhaustest IQ17p2" hat ("17p1" war sicherlich die 06.9x-Release, wenn man nach den URLs für die Online-Hilfe geht).

Was fehlt dem Skript noch?

Ganz klar: eine Überprüfung der Signatur der Antwort von AVM. Schließlich würde die Firmware (bei passenden Einstellungen zum automatischen Update) bei einer neuen Firmware jetzt hingehen und diese von der angegebenen Adresse laden. Das Laden an sich wäre ja noch nicht weiter schlimm ... aber die wird hinterher dann entpackt und wenn es ganz schlecht läuft, kann schon dieses Entpacken für einen Angriff benutzt werden.

Zwar wird wohl auch diese Firmware dem ganz normalen Signatur-Test unterzogen, der seit 06.5x auch für Firmware-Images beim Upload im GUI gilt, aber auch da gibt es schon mal die eine oder andere Lücke (auch wenn sie in aktueller Firmware hoffentlich alle dicht sind), über die man dann doch noch eine Attacke starten könnte. Klingt auch erst einmal wenig spektakulär, schließlich sind die in neuer Firmware ja abgedichtet ... das Problem ist nur, daß die Abfrage und der Download eben von der alten Firmware erledigt werden und da könnten eben noch einige Lücken vorhanden sein, je nachdem, wieviele "Zwischenupdates" der installierten Version am Ende fehlen.

Es ist mir aber absolut nicht gelungen, die Digest-Werte in der SOAP-Antwort von AVM irgendwie zu reproduzieren ... allerdings ist dieser ganze Vorgang der Signatur einer SOAP-Message (mit einer "embedded signature") alles andere als simpel.

Ich bin bisher eigentlich immer davon ausgegangen, daß die Antwort von AVM gar keine großartige "canonicalization" braucht (mit Ausnahme der Transformation, welche die eingeschlossene Signatur aus dem DOM entfernt - auch easy, weil die einfach bloß herausfallen sollte und nicht mal irgendwelche Zeilenumbrüche übrig bleiben), weil die nicht großartig formatiert ist (damit auch "whitespaces" eher kein Thema sind) und auch die leeren Entities in der Antwort bereits nach den Regeln für "xml-exc-c14n" normalisiert sind (mit getrenntem Start- und Ende-Tag).

Aber wie ich es auch anfange, ich bekomme für den "Body" der Antwort (das Reference-Element bezieht sich nur auf die URI "#Body" und das ist sinnigerweise auch die ID, welche das Body-Element hat) vom ersten "<" bis zum letzten ">" einfach nicht denselben SHA256-Hash heraus, der in "DigestValue" (in Base64-Kodierung) steht.

Damit kann ich eine wirklich simple Verifikation vergessen und daher habe ich es aufgegeben, diese in das Skript einzubauen. Das macht es auf der anderen Seite auch wieder leichter, auf weitere Abhängigkeiten zu verzichten (wie "xmllint" oder "openssl" oder "sha256sum"), die es ansonsten für eine Funktion bräuchte, die wohl ohnehin nur die wirklich Hartgesottenen jemals nutzen würden. Daher habe ich mich dann entschlossen, dem Skript einfach eine Option zu spendieren, mit der man die Server-Antwort (also nur die SOAP-Response, nicht die Header) abspeichern kann, damit man sie hinterher selbst irgendwie weiterverarbeiten kann. Was man damit dann macht, bleibt der eigenen Phantasie überlassen ... man kann z.B. mit "xmllint" und passender XPath-Abfrage noch weitere Daten extrahieren oder die ansonsten sehr unübersichtliche Antwort einfach mal sauber formatieren lassen:
Code:
vidar:~/GitHub/YourFritz/juis # juis_check -s 7490_answer.xml 192.168.130.1 Public=0
root/bin/juis_check: Found newer version: 113.06.98-48590 Inhaus
URL=ftp://(...)@update.avm.de/labor/(...)/FRITZ.Box_7490.113.06.98-48590.image
DelayDownload=1226
vidar:~/GitHub/YourFritz/juis # xmllint --format 7490_answer.xml
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/>
  <soap:Body ID="Body">
    <ns2:BoxFirmwareUpdateCheckResponse xmlns:ns2="http://juis.avm.de/updateinfo" xmlns:ns3="http://juis.avm.de/response" xmlns:ns4="http://juis.avm.de/request">
      <ns2:ResponseUpdateInfo>
        <ns3:ResponseHeader>
          <ns3:Nonce>Ro9zrpGXvVafbWjdY8XNHw==</ns3:Nonce>
        </ns3:ResponseHeader>
        <ns3:UpdateInfo>
          <ns3:CheckInterval>4</ns3:CheckInterval>
          <ns3:Found>true</ns3:Found>
          <ns3:Name>_INTERN Inhaustest IQ17p2</ns3:Name>
          <ns3:Version>113.06.98-48590 Inhaus</ns3:Version>
          <ns3:Type>1</ns3:Type>
          <ns3:DownloadURL>ftp://(...)@update.avm.de/labor/(...)/FRITZ.Box_7490.113.06.98-48590.image</ns3:DownloadURL>
          <ns3:InfoURL/>
          <ns3:InfoText>INTERN IQ17p2 Inhaustest</ns3:InfoText>
          <ns3:HintURL/>
          <ns3:IconURL/>
          <ns3:Priority>1</ns3:Priority>
          <ns3:AutoUpdateStartTime>7200</ns3:AutoUpdateStartTime>
          <ns3:AutoUpdateEndTime>18000</ns3:AutoUpdateEndTime>
          <ns3:AutoUpdateKeepServices>true</ns3:AutoUpdateKeepServices>
        </ns3:UpdateInfo>
      </ns2:ResponseUpdateInfo>
    </ns2:BoxFirmwareUpdateCheckResponse>
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
      <SignedInfo>
        <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
        <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
        <Reference URI="#Body">
          <Transforms>
            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
          </Transforms>
          <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
          <DigestValue>zxk2MRF3klL0qtgt4Hi0ou/FhFtDtHMkEZL4mE+wq/U=</DigestValue>
        </Reference>
      </SignedInfo>
      <SignatureValue>GeCk1zTq1RvxnLAhlyuC1qIlbYDonphaKt/QkHUfllMQCj3t7yK++21k1LNusQKLpt/Us1tKk6WqUFSEskfgpE4o+jYInsRDSiZDDE7PEmqnKZGWVYOtYhm2cLoYTdEULWf+ziaTg1e0vtbOhu7y7OOrZFMmb/xeKmZuLMZ/fbcbF23NQ33xw6Hwah3p8JAfzaIHRjq7GoLlmB5Is+uHaqKKXsunBj3NstMLbgr0QZm3FCIM3kPW7bwdxWUfC7a5eTyqIUsd/SzRFL0BVjK2dzc4rINDv7QEjYXxqTrDSYNDpX+xj+nmi2oKFofLAWWw3TCLJkLamBGTsS5NC+W3Gw==</SignatureValue>
    </Signature>
  </soap:Body>
</soap:Envelope>
vidar:~/GitHub/YourFritz/juis #
Ob ich irgendwann noch mal zu einem passenden Skript "außen herum" komme, welches dann erfolgreich die Signatur prüfen kann, weiß ich nicht ... aber damit die Antwort von AVM tatsächlich jedesmal neu signiert werden muß, kann man ja beim Request eine "nonce" mitsenden, die dann in der Antwort enthalten ist (s.o.) und in die Berechnung des Hash-Wertes mit eingeht.

Da eine erfolgreiche Signaturprüfung natürlich nur möglich ist, wenn dieser "nonce"-Wert auch dem "Prüfer" bekannt ist, gibt es die Möglichkeit, den als Parameter beim Aufruf selbst anzugeben, mittels "Nonce=..." - wobei der Wert vom Skript nicht geprüft wird und auch AVM wohl den Wert nur 1:1 in die Antwort kopiert und gar nicht von Base64 in irgendeine Binärdarstellung überführt. Jedenfalls wird der Service auch nicht davon beeindruckt, wenn man da 32 Byte in Base64 angibt ... ab welcher Datengröße dann irgendwelche Puffer überlaufen bzw. ob das überhaupt passiert, habe ich nie getestet.

Da ich wieder mal an der max. Beitragsgröße von 50.000 Zeichen anschlage (einen Teil habe ich schon verworfen), reicht das nun auch ... vielleicht hätte es ein Beispiel weniger auch getan, aber die muß man ja auch nicht in Gänze bis zum letzten Zeichen lesen.
 
Zuletzt bearbeitet:
Danke!
Aber was mach' ich falsch?:
Code:
7362SL:# juis_check_v3 -d 192.168.3.1
debug: -------------------------------------------------------
debug: Reading values from '192.168.3.1:80/juis_boxinfo.xml': .
debug: Error reading 'juis_boxinfo.xml' from FRITZ!Box device with address '192.168.3.1:80'.
debug: -------------------------------------------------------
debug: Reading values from '192.168.3.1:80/jason_boxinfo.xml': .
var/media/ftp/juis_check_v3: Error reading 'jason_boxinfo.xml' from FRITZ!Box device with address '192.168.3.1:80'.
7362SL:#

Im Browser geht es mit "192.168.3.1:80/jason_boxinfo.xml".
Code:
7362SL:# wget 192.168.3.1:80/jason_boxinfo.xml
Connecting to 192.168.3.1:80 (192.168.3.1:80)
jason_boxinfo.xml    100% |************************************************************************|   355   0:00:00 ETA
7362SL:#
geht auch.

Ich habe 4 verschiedene FB getestet und auch "fritz.box".

EDIT:
Die FB 7362SL hat eine deutsche FW, aber bei "juis_check -h" kommt es auf englisch.
 
Zuletzt bearbeitet:
Code:
git clone https://github.com/PeterPawn/YourFritz
cd YourFritz
cd juis
./juis_check -d fritz.box

./juis_check -d fritz.box
debug: Neustart des Skripts mit einer Bash-Shell mit dem Kommando: command bash ./juis_check --debug --no-respawn fritz.box
debug: -------------------------------------------------------
debug: Lesen der Parameter von 'fritz.box:80/juis_boxinfo.xml': .
debug: Antwort vom Gerät:
debug: -------------------------------------------------------
HTTP/1.1 200 OK
Cache-Control: max-age=120
Connection: close
Content-Type: text/xml;charset=utf-8
Date: Mon, 01 Jan 2018 20:06:29 GMT
ETag: "05A24DAA7E085C1D0"
Expires: Mon, 01 Jan 2018 20:08:29 GMT
Last-Modified: Thu, 01 Jan 1970 00:00:52 GMT
Mime-Version: 1.0


<e:BoxInfo xmlns:e="http://juis.avm.de/updateinfo" xmlns:q="http://juis.avm.de/request">
<q:Name>FRITZ!Box 7490</q:Name>
<q:HW>185</q:HW>
<q:Major>113</q:Major>
<q:Minor>6</q:Minor>
<q:patch>98</q:patch>
<q:Buildnumber>48630</q:Buildnumber>
<q:Buildtype>1001</q:Buildtype>
<q:Serial>c80e1414514c</q:Serial>
<q:OEM>avm</q:OEM>
<q:Lang>de</q:Lang>
<q:Country>049</q:Country>
<q:Annex>B</q:Annex>
<q:Flag></q:Flag>
<q:UpdateConfig>2</q:UpdateConfig>
<q:provider>tonline</q:provider></e:BoxInfo>
debug: Zusammengesetzte Versionsnummer für die Prüfung: '113.06.98-48630'
debug: -------------------------------------------------------
debug: Werte der Variablen:
debug: -------------------------------------------------------
debug: Serial="c80e1414514c"
debug: Name="FRITZ!Box 7490"
debug: HW="185"
debug: OEM="avm"
debug: Lang="de"
debug: Annex="B"
debug: Country="049"
debug: Major="113"
debug: Minor="6"
debug: Patch="98"
debug: Buildnumber="48630"
debug: Flag=""
debug: Public="1"
debug: type="1001"
debug: hostname="185.jws.avm.de"
debug: nonce="PldbNF519NYiTQpDC9lEcw=="
debug: -------------------------------------------------------
debug: Gesendete Abfrage:
debug: -------------------------------------------------------
POST /Jason/UpdateInfoService HTTP/1.1
Host: 185.jws.avm.de:80
Content-Length: 1168
Content-Type: text/xml; charset="utf-8"
Connection: close

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:e="http://juis.avm.de/updateinfo" xmlns:q="http://juis.avm.de/request">
<soap:Header/>
<soap:Body>
<e:BoxFirmwareUpdateCheck>
<e:RequestHeader>
<q:Nonce>PldbNF519NYiTQpDC9lEcw==</q:Nonce>
<q:UserAgent>Box</q:UserAgent>
<q:ManualRequest>true</q:ManualRequest>
</e:RequestHeader>
<e:BoxInfo>
<q:Name>FRITZ!Box 7490</q:Name>
<q:HW>185</q:HW>
<q:Major>113</q:Major>
<q:Minor>6</q:Minor>
<q:patch>98</q:patch>
<q:Buildnumber>48630</q:Buildnumber>
<q:Buildtype>1001</q:Buildtype>
<q:Serial>c80e1414514c</q:Serial>
<q:OEM>avm</q:OEM>
<q:Lang>de</q:Lang>
<q:Country>049</q:Country>
<q:Annex>B</q:Annex>
<q:Flag></q:Flag>
<q:UpdateConfig>1</q:UpdateConfig>
<q:provider>oma_lan</q:provider>
</e:BoxInfo>
</e:BoxFirmwareUpdateCheck>
</soap:Body>
</soap:Envelope>
debug: -------------------------------------------------------
debug: Lesen der Antwort von '185.jws.avm.de:80': .
debug: Empfangene Antwort:
debug: -------------------------------------------------------
HTTP/1.1 200 OK
Server: nginx
Content-Type: text/xml;charset=UTF-8
Content-Length: 1949
Connection: close
Download-Delay: 2397
Date: Mon, 01 Jan 2018 20:06:32 GMT
Access-Control-Allow-Origin: http://scope.avm.de
Access-Control-Allow-Headers: content-type

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"></SOAP-ENV:Header><soap:Body ID="Body"><ns2:BoxFirmwareUpdateCheckResponse xmlns:ns2="http://juis.avm.de/updateinfo" xmlns:ns3="http://juis.avm.de/response" xmlns:ns4="http://juis.avm.de/request"><ns2:ResponseUpdateInfo><ns3:ResponseHeader><ns3:Nonce>PldbNF519NYiTQpDC9lEcw==</ns3:Nonce></ns3:ResponseHeader><ns3:UpdateInfo><ns3:CheckInterval>48</ns3:CheckInterval><ns3:Found>false</ns3:Found><ns3:Version></ns3:Version><ns3:DownloadURL></ns3:DownloadURL><ns3:InfoURL></ns3:InfoURL><ns3:InfoText></ns3:InfoText><ns3:HintURL></ns3:HintURL><ns3:priority>1</ns3:priority><ns3:AutoUpdateStartTime>0</ns3:AutoUpdateStartTime><ns3:AutoUpdateEndTime>0</ns3:AutoUpdateEndTime><ns3:AutoUpdateKeepServices>true</ns3:AutoUpdateKeepServices></ns3:UpdateInfo></ns2:ResponseUpdateInfo></ns2:BoxFirmwareUpdateCheckResponse><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></CanonicalizationMethod><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></SignatureMethod><Reference URI="#Body"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod><DigestValue>+fHtcW8gs4fBdupjlCosjiiEDPh+A2NL3WKl59dXnHM=</DigestValue></Reference></SignedInfo><SignatureValue>LSUyicu8eUHCCVKnxdWwIS2XLRtcGKpJp7nNe9rtOlRjGsRVo8lYKhGcISBG3hB6o5PXYwPS1UzVXIRAT0PREkzlXW9QuyOpDJ0+8Kldtxl3HSTf5RoIsV7COgUnQ7fF7SppxAGrDNTCbPy7jxYTRV9oZob2Fe5VmijZ/VTUA2sIlTXYYrucCZD7tMYyRc4hCALPCiWFiblF4pizBb+TKyIpQ81zLWTtgB+UErUXKVUTMRJZchVhg/xpn9xRLkVIHHbu+6EEzpOvwufLEyu2fC8pmVo/or1vzFFVTcYmkpR1JjM6+FUVWXH5EjxSsXP4UbBYCj5Q+KKY12Ja+po0Pw==</SignatureValue></Signature></soap:Body></soap:Envelope>
debug: -------------------------------------------------------
juis_check: Es wurde keine neue Version gefunden, die Prüfung erfolgte ausgehend von der Version '113.06.98-48630'.

./juis_check -d 192.168.10.1debug: Neustart des Skripts mit einer Bash-Shell mit dem Kommando: command bash ./juis_check --debug --no-respawn 192.168.10.1
debug: -------------------------------------------------------
debug: Lesen der Parameter von '192.168.10.1:80/juis_boxinfo.xml': .
debug: Antwort vom Gerät:
debug: -------------------------------------------------------
HTTP/1.1 200 OK
Cache-Control: max-age=120
Connection: close
Content-Type: text/xml;charset=utf-8
Date: Mon, 01 Jan 2018 20:07:07 GMT
ETag: "05A24DAA7E085C1D0"
Expires: Mon, 01 Jan 2018 20:09:07 GMT
Last-Modified: Thu, 01 Jan 1970 00:00:52 GMT
Mime-Version: 1.0


<e:BoxInfo xmlns:e="http://juis.avm.de/updateinfo" xmlns:q="http://juis.avm.de/request">
<q:Name>FRITZ!Box 7490</q:Name>
<q:HW>185</q:HW>
<q:Major>113</q:Major>
<q:Minor>6</q:Minor>
<q:patch>98</q:patch>
<q:Buildnumber>48630</q:Buildnumber>
<q:Buildtype>1001</q:Buildtype>
<q:Serial>c80e1414514c</q:Serial>
<q:OEM>avm</q:OEM>
<q:Lang>de</q:Lang>
<q:Country>049</q:Country>
<q:Annex>B</q:Annex>
<q:Flag></q:Flag>
<q:UpdateConfig>2</q:UpdateConfig>
<q:provider>tonline</q:provider></e:BoxInfo>
debug: Zusammengesetzte Versionsnummer für die Prüfung: '113.06.98-48630'
debug: -------------------------------------------------------
debug: Werte der Variablen:
debug: -------------------------------------------------------
debug: Serial="c80e1414514c"
debug: Name="FRITZ!Box 7490"
debug: HW="185"
debug: OEM="avm"
debug: Lang="de"
debug: Annex="B"
debug: Country="049"
debug: Major="113"
debug: Minor="6"
debug: Patch="98"
debug: Buildnumber="48630"
debug: Flag=""
debug: Public="1"
debug: type="1001"
debug: hostname="185.jws.avm.de"
debug: nonce="0U+dgYO5odeMZAsFifntaQ=="
debug: -------------------------------------------------------
debug: Gesendete Abfrage:
debug: -------------------------------------------------------
POST /Jason/UpdateInfoService HTTP/1.1
Host: 185.jws.avm.de:80
Content-Length: 1168
Content-Type: text/xml; charset="utf-8"
Connection: close

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:e="http://juis.avm.de/updateinfo" xmlns:q="http://juis.avm.de/request">
<soap:Header/>
<soap:Body>
<e:BoxFirmwareUpdateCheck>
<e:RequestHeader>
<q:Nonce>0U+dgYO5odeMZAsFifntaQ==</q:Nonce>
<q:UserAgent>Box</q:UserAgent>
<q:ManualRequest>true</q:ManualRequest>
</e:RequestHeader>
<e:BoxInfo>
<q:Name>FRITZ!Box 7490</q:Name>
<q:HW>185</q:HW>
<q:Major>113</q:Major>
<q:Minor>6</q:Minor>
<q:patch>98</q:patch>
<q:Buildnumber>48630</q:Buildnumber>
<q:Buildtype>1001</q:Buildtype>
<q:Serial>c80e1414514c</q:Serial>
<q:OEM>avm</q:OEM>
<q:Lang>de</q:Lang>
<q:Country>049</q:Country>
<q:Annex>B</q:Annex>
<q:Flag></q:Flag>
<q:UpdateConfig>1</q:UpdateConfig>
<q:provider>oma_lan</q:provider>
</e:BoxInfo>
</e:BoxFirmwareUpdateCheck>
</soap:Body>
</soap:Envelope>
debug: -------------------------------------------------------
debug: Lesen der Antwort von '185.jws.avm.de:80': .
debug: Empfangene Antwort:
debug: -------------------------------------------------------
HTTP/1.1 200 OK
Server: nginx
Content-Type: text/xml;charset=UTF-8
Content-Length: 1949
Connection: close
Download-Delay: 749
Date: Mon, 01 Jan 2018 20:07:10 GMT
Access-Control-Allow-Origin: http://scope.avm.de
Access-Control-Allow-Headers: content-type

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"></SOAP-ENV:Header><soap:Body ID="Body"><ns2:BoxFirmwareUpdateCheckResponse xmlns:ns2="http://juis.avm.de/updateinfo" xmlns:ns3="http://juis.avm.de/response" xmlns:ns4="http://juis.avm.de/request"><ns2:ResponseUpdateInfo><ns3:ResponseHeader><ns3:Nonce>0U+dgYO5odeMZAsFifntaQ==</ns3:Nonce></ns3:ResponseHeader><ns3:UpdateInfo><ns3:CheckInterval>48</ns3:CheckInterval><ns3:Found>false</ns3:Found><ns3:Version></ns3:Version><ns3:DownloadURL></ns3:DownloadURL><ns3:InfoURL></ns3:InfoURL><ns3:InfoText></ns3:InfoText><ns3:HintURL></ns3:HintURL><ns3:priority>1</ns3:priority><ns3:AutoUpdateStartTime>0</ns3:AutoUpdateStartTime><ns3:AutoUpdateEndTime>0</ns3:AutoUpdateEndTime><ns3:AutoUpdateKeepServices>true</ns3:AutoUpdateKeepServices></ns3:UpdateInfo></ns2:ResponseUpdateInfo></ns2:BoxFirmwareUpdateCheckResponse><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></CanonicalizationMethod><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></SignatureMethod><Reference URI="#Body"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod><DigestValue>mpWKS5Rk7lR7V/vi+sGexEnuePKmsMLjuT/wBhtbdOE=</DigestValue></Reference></SignedInfo><SignatureValue>kT6LvKPz58zPMc+Tc/dZT8f69yygu26DwQ+8LjnnSxLurwuInsrFYsGoR0fmlrh3Vt69bskFid1Ym17OJcl8oF9ZPqPU9t56OK2nuZ3qjqcIBzGRUH1ZoVOgevfJj9xgOnsiJ8R/NGrVm+AIwf3Nt5zh03elDw8Xo4VbQVFjncc526oy4OtisoJ/ajqafda7CxHbFxp5ipSfaGeB3+RcE/e+eaIIvgxTgB2c6uf/rzVetJQaMw5P0AqRzQMJhBRRWHzf/qAr5S/D2X9RScnoSlb4+AmMfxS2yc136BzAtlblDK/HucEia3fSOZ/AkYXm3Kcm2GJlosDU5bPYzWYGYQ==</SignatureValue></Signature></soap:Body></soap:Envelope>
debug: -------------------------------------------------------
juis_check: Es wurde keine neue Version gefunden, die Prüfung erfolgte ausgehend von der Version '113.06.98-48630'.

./juis_check -d 192.168.10.3debug: Neustart des Skripts mit einer Bash-Shell mit dem Kommando: command bash ./juis_check --debug --no-respawn 192.168.10.3
debug: -------------------------------------------------------
debug: Lesen der Parameter von '192.168.10.3:80/juis_boxinfo.xml': .
debug: Antwort vom Gerät:
debug: -------------------------------------------------------
HTTP/1.1 200 OK
Cache-Control: max-age=120
Connection: close
Content-Type: text/xml;charset=utf-8
Date: Mon, 01 Jan 2018 20:07:39 GMT
ETag: "3A2BB43B0EE159C65"
Expires: Mon, 01 Jan 2018 20:09:39 GMT
Last-Modified: Tue, 05 Dec 2017 08:19:11 GMT
Mime-Version: 1.0


<e:BoxInfo xmlns:e="http://juis.avm.de/updateinfo" xmlns:q="http://juis.avm.de/request">
<q:Name>FRITZ!Box 7580</q:Name>
<q:HW>225</q:HW>
<q:Major>153</q:Major>
<q:Minor>6</q:Minor>
<q:patch>92</q:patch>
<q:Buildnumber>47571</q:Buildnumber>
<q:Buildtype>1</q:Buildtype>
<q:Serial>3431C49E9C73</q:Serial>
<q:OEM>avm</q:OEM>
<q:Lang>de</q:Lang>
<q:Country>049</q:Country>
<q:Annex>B</q:Annex>
<q:Flag></q:Flag>
<q:UpdateConfig>2</q:UpdateConfig>
<q:provider></q:provider></e:BoxInfo>
debug: Zusammengesetzte Versionsnummer für die Prüfung: '153.06.92-47571'
debug: -------------------------------------------------------
debug: Werte der Variablen:
debug: -------------------------------------------------------
debug: Serial="3431C49E9C73"
debug: Name="FRITZ!Box 7580"
debug: HW="225"
debug: OEM="avm"
debug: Lang="de"
debug: Annex="B"
debug: Country="049"
debug: Major="153"
debug: Minor="6"
debug: Patch="92"
debug: Buildnumber="47571"
debug: Flag=""
debug: Public="1"
debug: type="1001"
debug: hostname="225.jws.avm.de"
debug: nonce="UWH+Bp5EQE1d+LZu07vq6Q=="
debug: -------------------------------------------------------
debug: Gesendete Abfrage:
debug: -------------------------------------------------------
POST /Jason/UpdateInfoService HTTP/1.1
Host: 225.jws.avm.de:80
Content-Length: 1168
Content-Type: text/xml; charset="utf-8"
Connection: close

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:e="http://juis.avm.de/updateinfo" xmlns:q="http://juis.avm.de/request">
<soap:Header/>
<soap:Body>
<e:BoxFirmwareUpdateCheck>
<e:RequestHeader>
<q:Nonce>UWH+Bp5EQE1d+LZu07vq6Q==</q:Nonce>
<q:UserAgent>Box</q:UserAgent>
<q:ManualRequest>true</q:ManualRequest>
</e:RequestHeader>
<e:BoxInfo>
<q:Name>FRITZ!Box 7580</q:Name>
<q:HW>225</q:HW>
<q:Major>153</q:Major>
<q:Minor>6</q:Minor>
<q:patch>92</q:patch>
<q:Buildnumber>47571</q:Buildnumber>
<q:Buildtype>1001</q:Buildtype>
<q:Serial>3431C49E9C73</q:Serial>
<q:OEM>avm</q:OEM>
<q:Lang>de</q:Lang>
<q:Country>049</q:Country>
<q:Annex>B</q:Annex>
<q:Flag></q:Flag>
<q:UpdateConfig>1</q:UpdateConfig>
<q:provider>oma_lan</q:provider>
</e:BoxInfo>
</e:BoxFirmwareUpdateCheck>
</soap:Body>
</soap:Envelope>
debug: -------------------------------------------------------
debug: Lesen der Antwort von '225.jws.avm.de:80': .
debug: Empfangene Antwort:
debug: -------------------------------------------------------
HTTP/1.1 200 OK
Server: nginx
Content-Type: text/xml;charset=UTF-8
Content-Length: 1949
Connection: close
Download-Delay: 2300
Date: Mon, 01 Jan 2018 20:07:42 GMT
Access-Control-Allow-Origin: http://scope.avm.de
Access-Control-Allow-Headers: content-type

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"></SOAP-ENV:Header><soap:Body ID="Body"><ns2:BoxFirmwareUpdateCheckResponse xmlns:ns2="http://juis.avm.de/updateinfo" xmlns:ns3="http://juis.avm.de/response" xmlns:ns4="http://juis.avm.de/request"><ns2:ResponseUpdateInfo><ns3:ResponseHeader><ns3:Nonce>UWH+Bp5EQE1d+LZu07vq6Q==</ns3:Nonce></ns3:ResponseHeader><ns3:UpdateInfo><ns3:CheckInterval>24</ns3:CheckInterval><ns3:Found>false</ns3:Found><ns3:Version></ns3:Version><ns3:DownloadURL></ns3:DownloadURL><ns3:InfoURL></ns3:InfoURL><ns3:InfoText></ns3:InfoText><ns3:HintURL></ns3:HintURL><ns3:priority>1</ns3:priority><ns3:AutoUpdateStartTime>0</ns3:AutoUpdateStartTime><ns3:AutoUpdateEndTime>0</ns3:AutoUpdateEndTime><ns3:AutoUpdateKeepServices>true</ns3:AutoUpdateKeepServices></ns3:UpdateInfo></ns2:ResponseUpdateInfo></ns2:BoxFirmwareUpdateCheckResponse><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></CanonicalizationMethod><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></SignatureMethod><Reference URI="#Body"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod><DigestValue>pqOX5XP88nuduixB4hQTgJgdGz1p9yChmxCljFuZe7M=</DigestValue></Reference></SignedInfo><SignatureValue>NR18eFpvgx20FnTXawPDahkWHNBSekYWhaeRPzzV6H+6eDe255lkuqZZpI0sg/PjSTpUAsW2lRx3Pd8piemfNFPpGnN+vI49wr2ljta254t2zMvo4IZccZ8WMrIMjk5AEO0Kxj9zEXJWA2e3F9IWALn8mCCY96lrmvuNQvvMIV7qyk/VPIMc5k2SxTUtDttbeFXiotxoLl6s1HoonZY9JbT3UVq4mIpzEmJMLLrxc+wpMb4R5VganbVj6veZz2jv0fnQoxVOaxPQ2ZhHR02CFNR6vF1j6KetJwm1fcI7xlIAfg8eTjlGnuKN61klMGaH8lHJnRGY7TsyD3X59W/XdA==</SignatureValue></Signature></soap:Body></soap:Envelope>
debug: -------------------------------------------------------
juis_check: Es wurde keine neue Version gefunden, die Prüfung erfolgte ausgehend von der Version '153.06.92-47571'.
 
Zuletzt bearbeitet:
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.