v3.1.7: Log-Passwort per HTTPS-Kopfzeile (POST-Inhalt kam nicht an)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
7d49f1f342
commit
e9a7bfb712
@@ -17,7 +17,7 @@ SOURCES := source
|
|||||||
INCLUDES := source
|
INCLUDES := source
|
||||||
|
|
||||||
# Bei jedem Release erhöhen - das Auto-Update vergleicht diese Nummer
|
# Bei jedem Release erhöhen - das Auto-Update vergleicht diese Nummer
|
||||||
VERSION := 3.1.6
|
VERSION := 3.1.7
|
||||||
|
|
||||||
APP_TITLE := MBMNET
|
APP_TITLE := MBMNET
|
||||||
APP_DESCRIPTION := Dein eigenes 3DS-Netzwerk
|
APP_DESCRIPTION := Dein eigenes 3DS-Netzwerk
|
||||||
|
|||||||
+1
-1
@@ -35,7 +35,7 @@ u32 https_request(const char *server, const char *path, const char *form, const
|
|||||||
httpcSetKeepAlive(&ctx, HTTPC_KEEPALIVE_DISABLED);
|
httpcSetKeepAlive(&ctx, HTTPC_KEEPALIVE_DISABLED);
|
||||||
httpcAddTrustedRootCA(&ctx, caDer, caLen); // nur der MBMNET-CA vertrauen wir zusätzlich
|
httpcAddTrustedRootCA(&ctx, caDer, caLen); // nur der MBMNET-CA vertrauen wir zusätzlich
|
||||||
if (header && value) httpcAddRequestHeaderField(&ctx, header, value);
|
if (header && value) httpcAddRequestHeaderField(&ctx, header, value);
|
||||||
if (form) {
|
if (form && form[0]) { // leerer Text: POST ohne Inhalt
|
||||||
u32 n = strlen(form);
|
u32 n = strlen(form);
|
||||||
if (n >= sizeof(formBuf)) n = sizeof(formBuf) - 1;
|
if (n >= sizeof(formBuf)) n = sizeof(formBuf) - 1;
|
||||||
memcpy(formBuf, form, n);
|
memcpy(formBuf, form, n);
|
||||||
|
|||||||
+2
-1
@@ -5,7 +5,8 @@
|
|||||||
|
|
||||||
// HTTPS zum MBMNET-Server mit der eigenen MBMNET-CA (dieselbe wie für Miiverse, siehe olvpatch.c).
|
// HTTPS zum MBMNET-Server mit der eigenen MBMNET-CA (dieselbe wie für Miiverse, siehe olvpatch.c).
|
||||||
// Für alles mit Geheimnissen (Log-Passwort, Anmelde-Nachweis): nie im Klartext übers Netz.
|
// Für alles mit Geheimnissen (Log-Passwort, Anmelde-Nachweis): nie im Klartext übers Netz.
|
||||||
// form: POST-Daten (application/x-www-form-urlencoded), NULL = GET
|
// form: POST-Daten (application/x-www-form-urlencoded), "" = POST ohne Inhalt, NULL = GET
|
||||||
|
// Achtung: Der HTTP-Dienst des 3DS schickte POST-Inhalt bei uns nicht mit - Geheimnisse in Kopfzeilen.
|
||||||
// header: zusätzliche Kopfzeile "Name" mit Wert value (NULL = keine)
|
// header: zusätzliche Kopfzeile "Name" mit Wert value (NULL = keine)
|
||||||
// date: bekommt die Date-Kopfzeile der Antwort (NULL = egal)
|
// date: bekommt die Date-Kopfzeile der Antwort (NULL = egal)
|
||||||
// Gibt den HTTP-Status zurück, 0 bei Netzwerkfehler (*rcOut = Code). out wird mit 0 abgeschlossen.
|
// Gibt den HTTP-Status zurück, 0 bei Netzwerkfehler (*rcOut = Code). out wird mit 0 abgeschlossen.
|
||||||
|
|||||||
+9
-3
@@ -261,13 +261,19 @@ static void worker(void *arg)
|
|||||||
if (j == JOB_NONE || !buf) continue;
|
if (j == JOB_NONE || !buf) continue;
|
||||||
busy = true;
|
busy = true;
|
||||||
if (j == JOB_LOGIN) {
|
if (j == JOB_LOGIN) {
|
||||||
char form[160], enc[140];
|
// Passwort in der Kopfzeile X-Logs-Password (URL-kodiert, nur HTTPS). Als POST-Inhalt kam es nicht an:
|
||||||
|
// Der HTTP-Dienst des 3DS schickte 0 Bytes.
|
||||||
|
char enc[200];
|
||||||
url_encode(enc, sizeof(enc), password);
|
url_encode(enc, sizeof(enc), password);
|
||||||
snprintf(form, sizeof(form), "password=%s", enc);
|
|
||||||
memset(password, 0, sizeof(password));
|
memset(password, 0, sizeof(password));
|
||||||
token[0] = 0;
|
token[0] = 0;
|
||||||
u32 len;
|
u32 len;
|
||||||
u32 code = request("/mbmnet/logs/login", form, buf, 256, &len);
|
char date[64];
|
||||||
|
Result hrc = 0;
|
||||||
|
u32 code = https_request(server, "/mbmnet/logs/login", "", "X-Logs-Password", enc, buf, 256, &len, date, sizeof(date), &hrc);
|
||||||
|
memset(enc, 0, sizeof(enc));
|
||||||
|
if (date[0]) sync_clock(date);
|
||||||
|
if (!code) snprintf(status, sizeof(status), "Keine Verbindung (%08lX)", (unsigned long)hrc);
|
||||||
if (code == 200 && len == 64) {
|
if (code == 200 && len == 64) {
|
||||||
memcpy(token, buf, 64);
|
memcpy(token, buf, 64);
|
||||||
token[64] = 0;
|
token[64] = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user