$ curl -d "xhr=1&page=support&twofactor=1&sid=981d550133e6a448" http://fritz.box/data.lua
<style>
.handleSupportData {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-flex-direction: row;
-moz-box-flex-direction: row;
-webkit-flex-direction: row;
-ms-flex-direction: row;
flex-direction: row;
-webkit-box-flex-wrap: wrap;
-moz-box-wrap: wrap;
-webkit-flex-wrap: wrap;
-ms-flexbox-wrap: wrap;
flex-wrap:wrap;
}
.handleSupportData div {
-webkit-box-flex: 1 1 32rem;
-moz-box-flex: 1 1 32rem;
-webkit-flex: 1 1 32rem;
-ms-flex: 1 1 32rem;
flex: 1 1 32rem;
}
.handleSupportData div:nth-child(2) {
-webkit-box-flex: 1 1 15rem;
-moz-box-flex: 1 1 15rem;
-webkit-flex: 1 1 15rem;
-ms-flex: 1 1 15rem;
flex: 1 1 15rem;
text-align: right;
}
@media (max-width: 31.1875em) {
.handleSupportData div:nth-child(2) {
text-align: left;
padding: 0.5rem 0 0 0;
}
}
label.disabledLabelActiveLink {
color: #9fa2a5;
}
label.disabledLabelActiveLink > a {
color: var(--color-link);
}
</style>
<!-- @VInputs -->
<h4>Service-Portal</h4>
<p>Auf unserer Internetseite erhalten Sie im Service-Portal Ihrer FRITZ!Box umfangreiche Informationen zu häufig gestellten Fragen, Neuigkeiten, Produktinformationen und Tipps ebenso wie Unterstützung durch unseren Support.</p>
<p><a href="/secure_link.lua?sid=981d550133e6a448&lnk=https%3A%2F%2Fwww.avm.de%2Ffritzbox-service-portal.php%3Fhardware%3D185%26oem%3Davm%26language%3Dde%26country%3D049%26version%3D113.07.57%26subversion%3D" target="_blank">zum Service-Portal</a></p>
<hr><h4>Support-Daten</h4>
<div >
<p>Support-Daten können dem AVM-Support helfen, Ihr Problem genauer zu analysieren. Falls sie benötigt werden, wird das AVM-Support Team Sie bitten, Support-Daten zu erstellen und an den Support zu senden. Die Support-Daten enthalten sämtliche Einstellungen Ihrer FRITZ!Box, jedoch keine Kennwörter.</p>
<form method="POST" name="getSupportData" action="/support.lua"><input value="981d550133e6a448" type="hidden" name="sid"><div><input type="radio" disabled value="send" id="uiSendData" name="get_support_data"><label for="uiSendData" class="disabledLabelActiveLink">Support-Daten an AVM senden (Diagnose und Wartung ist deaktiviert. <a class="to-enable-support">Aktivieren</a>?)</label></div><div id="uiSendSupportBlock" class="formular"><input type="radio" checked value="support_data" id="uiSendSupport" name="send_support_data"><label for="uiSendSupport">Support-Daten</label><div><input type="radio" value="mesh_support_data" id="uiMeshSupportData" name="send_support_data"><label for="uiMeshSupportData">Support-Daten des gesamten Mesh-Systems</label><p id="uiSendMeshExplain" class="form_checkbox_explain">Aktivieren Sie diese Option, wenn die Informationen von allen FRITZ! Produkten gesendet werden sollen, die in Ihrem WLAN-Mesh-System eingebunden sind.</p></div><input type="radio" value="enhanced_support_data" id="uiSendEnhanced" name="send_support_data"><label for="uiSendEnhanced">Erweiterte Support-Daten</label><p id="uiSendEnhancedExplain" class="form_checkbox_explain">In die erweiterten Support-Daten werden zusätzliche Daten eingefügt: Ereignis-Protokolle, VPN-Logs, SIP-Pakete, Anrufliste der letzten Wochen sowie ältere Zustände der FRITZ!Box-Konfiguration. Die Support-Daten enthalten in diesem Fall auch Kennwörter in verschlüsselter Form. Wählen Sie diese Option nur, wenn Sie von AVM darum gebeten werden.</p></div><div><input type="radio" checked value="download" id="uiDownloadData" name="get_support_data"><label for="uiDownloadData">Support-Daten speichern</label></div><div id="uiDownloadSupportBlock" class="formular"><input type="radio" checked value="support_data" id="uiDownloadSupport" name="download_support_data"><label for="uiDownloadSupport">Support-Daten</label><br><input type="radio" value="enhanced_support_data" id="uiDownloadEnhanced" name="download_support_data"><label for="uiDownloadEnhanced">Erweiterte Support-Daten</label><p id="uiDownloadEnhancedExplain" class="form_checkbox_explain">In die erweiterten Support-Daten werden zusätzliche Daten eingefügt: Ereignis-Protokolle, VPN-Logs, SIP-Pakete, Anrufliste der letzten Wochen sowie ältere Zustände der FRITZ!Box-Konfiguration. Die Support-Daten enthalten in diesem Fall auch Kennwörter in verschlüsselter Form. Wählen Sie diese Option nur, wenn Sie von AVM darum gebeten werden.</p></div><div id="uiBtnBlockSendSupport"><p id="uiSendingSupport" style="display: none;">Support-Daten werden erstellt und für den Versand vorbereitet.</p><div><button id="uiBtnSendSupport" type="button">Support-Daten senden</button></div></div><div><button id="uiBtnDownloadSupport" type="button">Support-Daten speichern</button></div></form>
<form name="supportDown" method="POST" action="/cgi-bin/firmwarecfg" enctype="multipart/form-data">
<input type="hidden" name="sid" value="981d550133e6a448">
<input type="hidden" name="SupportData">
</form>
<form name="enhancedSupportDown" method="POST" action="/cgi-bin/firmwarecfg" enctype="multipart/form-data">
<input type="hidden" name="sid" value="981d550133e6a448">
<input type="hidden" name="SupportDataEnhanced">
</form>
</div>
[..]
<input id="oldPageXhrSid" type="hidden" value="981d550133e6a448"><input id="fdhidedata" type="hidden" value="{"shareUsb":true,"dslSpectrum":true,"faxSet":true,"dectRdio":true,"rrd":true,"ssoSet":true,"liveImg":true,"dslStat":true,"dslSet":true,"liveTv":true,"dectMoni":true,"provServ":true,"dectMoniEx":true,"rss":true,"mobile":true,"dslFeed":true,"dslOv":true,"dslGraph":true,"dectMail":true}"><input id="oldpageactive" type="hidden" value="/support.lua"><input id="oldPageTimeTillLogout" type="hidden" value="1200"><input id="oldPageTitle" type="hidden" value="FRITZ!Box Support"><input id="oldPageIsWiz" type="hidden" value="1"><input id="gHelpPage" type="hidden" value="hilfe_support.html"><div id="domReady" style="display:none"></div>
<scr*pt type="module">
import ajaxValidation from "/js/validation.js";
function submitForm(name) {
if (("enhancedSupportDown" === name ||
"twoFactorDisableForm" === name ||
"getSupportData" === name && jsl.getRadioValue("send_support_data", "getSupportData") === "enhanced_support_data")
&& false) {
twofactor.startAndRun(function () { jsl.submitForm(name); });
return false;
} else {
jsl.submitForm(name);
}
return true;
}
function downloadSupport() {
var val = jsl.getRadioValue("get_support_data", "getSupportData");
var formToSubmit;
if (val === "download") {
val = jsl.getRadioValue("download_support_data", "getSupportData");
if (val === "enhanced_support_data") {
formToSubmit = "enhancedSupportDown";
} else {
formToSubmit = "supportDown";
}
} else {
formToSubmit = "getSupportData";
}
main.resetInputChanges(false);
submitForm(formToSubmit);
}
function onSpeedtestClick(evt) {
if (jsl.getChecked("uiSpeedtest")) {
jsl.enable("uiSpeedtestWan");
jsl.enable("uiSpeedtestUdpBidi");
} else {
jsl.setChecked("uiSpeedtestUdpBidi", false);
jsl.disable("uiSpeedtestUdpBidi");
jsl.setChecked("uiSpeedtestWan", false);
jsl.disable("uiSpeedtestWan");
}
}
function onDslSpeedClick(evt) {
jsl.disableNode("uiDslSpeedBlock",!jsl.getChecked("uiDslSpeed"));
}
function onTACKClick(evt) {
jsl.disableNode("uiTackBlock",!jsl.getChecked("uiTack"));
}
function onClickAvm_pa(evt) {
jsl.find(".enableif-avm_pa_enable").forEach(function (el) {
jsl.enableNode(el, jsl.getChecked("uiAvm_pa_enable"));
});
}
function onClickGamingOption(evt) {
jsl.find(".enableif-use_gaming_option_enabled").forEach(function (el) {
jsl.enableNode(el, jsl.getChecked("uiGamingOption"));
});
}
function onChangeSupportData(evt) {
var radioVal = evt && evt.target.value;
if (radioVal === "send" || !radioVal && jsl.getEnabled("uiSendData")) {
jsl.hide("uiBtnDownloadSupport");
jsl.hide("uiDownloadSupportBlock");
jsl.show("uiBtnBlockSendSupport");
jsl.show("uiSendSupportBlock");
} else if (radioVal === "download" || !radioVal && jsl.getEnabled("uiDownloadData")) {
jsl.hide("uiBtnBlockSendSupport");
jsl.hide("uiSendSupportBlock");
jsl.show("uiBtnDownloadSupport");
jsl.show("uiDownloadSupportBlock");
}
}
function onChangeSendSupport(evt) {
var radioVal = evt && evt.target.value;
if (radioVal === "support_data" || !radioVal) {
jsl.hide("uiSendMeshExplain");
jsl.hide("uiSendEnhancedExplain");
} else if (radioVal === "mesh_support_data") {
jsl.hide("uiSendEnhancedExplain");
jsl.show("uiSendMeshExplain");
} else if (radioVal === "enhanced_support_data") {
jsl.hide("uiSendMeshExplain");
jsl.show("uiSendEnhancedExplain");
}
}
function onChangeDownloadSupport(evt) {
var radioVal = evt && evt.target.value;
if (radioVal === "support_data" || !radioVal) {
jsl.hide("uiDownloadEnhancedExplain");
} else if (radioVal === "enhanced_support_data") {
jsl.show("uiDownloadEnhancedExplain");
}
}
function showSentSupportInfoPopup(sentData) {
let internet_connected = true;
let errorTxt;
if (!internet_connected) {
errorTxt = "Senden der Support-Daten an AVM ist nicht möglich, überprüfen Sie die Internetverbindung";
} else if (sentData.state === "error" || sentData.state === "unknown") {
errorTxt = html2.printf(
"%1%Zeitstempel% Senden der Support-Daten an AVM fehlgeschlagen.",
sentData.time
);
}
if (errorTxt) {
dialog.msgBox(true, {
Dom: html2.div({class: "textarea"},
html2.p({}, errorTxt),
),
Buttons: [{ txt: "Schließen" }]
});
} else if (sentData.id) {
dialog.msgBox(true, {
Dom: html2.div({class: "textarea"},
html2.p({},
"Ihre Support-Daten werden an AVM gesendet."
),
html2.p({},
html2.printf("Die Versand-ID ist %1%VersandId%.",
html2.span({id: "uiSupportId"}, sentData.id)
)
),
html2.p({},
"Teilen Sie uns diese Nummer mit, wenn Sie die Datenanfrage vom AVM-Support beantworten."
),
html2.input({type: "checkbox", id: "uiCopyId", checked: true}),
html2.label({for: "uiCopyId"}, "Versand-ID in die Zwischenablage kopieren")
),
Buttons: [{
txt: "Schließen",
cb: function (evt) {
if (jsl.getChecked("uiCopyId")) {
jsl.copyToClipboard("uiSupportId");
}
return false;
}
}]
});
}
}
function updateSentSupportTextInfo(sentData) {
if (sentData.time && sentData.time !== "") {
if ((sentData.state === "ok" || sentData.state === "sending") && sentData.id && sentData.id !== "") {
jsl.setText("uiTxtLastSent", jsl.sprintf(
"Am %1%DatumZeit% wurden zuletzt Support-Daten mit der Versand-ID %2%VersandId% an AVM gesendet.",
sentData.time, sentData.id
));
} else if (sentData.state === "error") {
if (sentData.id && sentData.id !== "") {
jsl.setText("uiTxtLastSent", jsl.sprintf(
"Der letzte Versand der Support-Daten mit der Versand-ID %1%VersandId% am %2%DatumZeit% ist fehlgeschlagen.",
sentData.id, sentData.time
));
} else {
jsl.setText("uiTxtLastSent", jsl.sprintf(
"Der letzte Versand der Support-Daten am %1%DatumZeit% ist fehlgeschlagen.",
sentData.time
));
}
}
}
}
function updateSentSupportDataInfo() {
const sentInfo = {"state":"unknown","time":"","id":""};
const dataJustSent = false;
if (sentInfo.state === "waiting" || sentInfo.state === "sending") {
disableSendSupport(true);
waitForSupportData(dataJustSent && sentInfo.state === "waiting");
}
if (sentInfo.state !== "waiting" && dataJustSent) {
showSentSupportInfoPopup(sentInfo);
}
}
function waitForSupportData(showPopup) {
var url = encodeURI("\x2fsupport.lua");
url = addUrlParam( url, "sid", "981d550133e6a448" );
url = addUrlParam( url, "no_sidrenew", 1 );
url = addUrlParam( url, "get_support_sent", "" );
let showSentPopup = showPopup;
function sendRequest() {
ajaxGet(url, callback);
}
function callback(xhr) {
let response;
if (xhr && xhr.status == 200) {
response = JSON.parse(xhr.response || "null");
if (response.state === "waiting") {
oldPage.setTimeout(sendRequest, 1000);
} else {
if (showSentPopup) {
showSentSupportInfoPopup(response);
updateSentSupportTextInfo(response);
showSentPopup = false;
}
if (response.state === "sending") {
oldPage.setTimeout(sendRequest, 10000);
} else {
updateSentSupportTextInfo(response);
disableSendSupport(false);
}
}
}
}
sendRequest();
}
function disableSendSupport(sendingNotPossible) {
jsl.setDisabled("uiBtnSendSupport", sendingNotPossible);
jsl.display("uiSendingSupport", sendingNotPossible);
}
function init() {
jsl.addEventHandler("uiAvm_pa_enable", "click", onClickAvm_pa);
jsl.addEventHandler("uiAvm_pa_vendor", "click", onClickAvm_pa);
jsl.addEventHandler("uiAvm_pa_disable", "click", onClickAvm_pa);
onClickAvm_pa();
jsl.addEventHandler("uiGamingOption", "click", onClickGamingOption);
onClickGamingOption();
var radios = jsl.getFormElements("get_support_data", "getSupportData")
for (var el of radios) {
jsl.addEventHandler(el, "change", onChangeSupportData);
}
radios = jsl.getFormElements("send_support_data", "getSupportData")
for (var el of radios) {
jsl.addEventHandler(el, "change", onChangeSendSupport);
}
radios = jsl.getFormElements("download_support_data", "getSupportData")
for (var el of radios) {
jsl.addEventHandler(el, "change", onChangeDownloadSupport);
}
onChangeDownloadSupport();
onChangeSendSupport();
onChangeSupportData();
updateSentSupportDataInfo();
jsl.addEventHandler("uiSpeedtest", "click", onSpeedtestClick);jsl.addEventHandler("uiDslSpeed", "click", onDslSpeedClick);onDslSpeedClick();jsl.addEventHandler("uiTack", "click", onTACKClick);onTACKClick();
jsl.addEventhandlerForModuleUsage([
{
id: "consoleBtn",
event: "click",
func: () => submitForm("startConsole")
},
{ id: "consoleApply", event: "click", func: () => { submitForm("consoleSettings"); }},
{ id: "consoleOpen", event: "click", func: (typeof openConsole === "function" ? openConsole : ()=>{})},
{ id: "uiBtnSendSupport", event: "click", func: () => { submitForm("getSupportData"); }},
{ id: "uiBtnDownloadSupport", event: "click", func: downloadSupport},
{ id: "startDslDiagBtn", event: "click", func: () => { submitForm("startDslDiag"); }},
{ id: "startFiberDiagBtn", event: "click", func: () => { submitForm("startFiberDiag"); }},
{ id: "resyncDslBtn", event: "click", func: () => { submitForm("resyncDsl"); }},
{ id: "resyncDocsisBtn", event: "click", func: () => { submitForm("resyncDocsis"); }},
{ id: "meshSupportDownBtn", event: "click", func: () => { submitForm("meshSupportDown"); }},
{ id: "twoFactorDisableBtn", event: "click", func: () => { submitForm("twoFactorDisableForm"); }},
{ class: "to-enable-support", event: "click", func: () => main.changePage(null, "rootServices") },
{ class: "to-cmd", event: "click", func: () => main.changePage(null, "cmd") }
]);
}
ready.onReady(init);
ready.onReady(ajaxValidation({
applyNames: "crashreport_apply",
formNameOrIndex: "crashreport",
}));
ready.onReady(ajaxValidation({
applyNames: "dslspeed_apply",
formNameOrIndex: "dslspeed",
}));
ready.onReady(ajaxValidation({
applyNames: "tack_apply",
formNameOrIndex: "tack",
}));
ready.onReady(ajaxValidation({
applyNames: "zigbeeNcpChannelFormApply",
formNameOrIndex: "zigbeeNcpChannelForm",
}));
</scr*pt>