- Mitglied seit
- 17 Okt 2007
- Beiträge
- 15
- Punkte für Reaktionen
- 0
- Punkte
- 1
Hallo,
ich versuche micropython via TR064 das GästeWLAN einzuschalten. Dies will mir jedoch nicht gelingen. Ich erhalte beim entsprechenden Aufruf die Fehlermeldung 401 "Invalid Action".
Ich bin mir nicht sicher, ob das tatsächlich an einer fehlerhaften Aktion liegen sollte (hier habe ich trotz intensiver Suche keinen Fehler gefunden) oder eher daran, dass ich schon bei der Authentifikation etwas falsch mache.
Im Folgenden der für den Aufruf verwendeten (vom Python-Programm erzeugten) Request-Aufrufdaten
Bisherige Erkenntnisse:
- einen Fehler im Aufruf zum Setzen des Gast-Wlans (der zweite Aufruf) kann ich nicht finden - wenn dort trotzdem etwas falsch sein sollte, freue ich mich über jeden Hinweis.
- wenn ich den Wert für auth auf einen zufällig gewählten Wert (401 "Invalid Action") setze, erhalte ich die gleiche Fehlermeldung - eine fehlerhafte Authentifizierung würde also auch den Fehlercode erklären. Es bliebe dann die Frage, wo die Authentifizierung falsch ist.
- ich verwende zu Testzwecken bash-skripte die mittels curl erfolgreich Aufrufe (mit gleichem User/PW) durchführe. Wenn ich die dort ermittelten Werte für Nonce/auth/passwort zu testzwecken in das Python-Programm eintrage, so erhalte ich die gleichen Werte d.h. den gleichen auth-Wert wie im bash-Skript. Ich gehe daher davon aus, dass die Generierung des auth-Wertes grundsätzlich richtig ist.
- Ich bin mir nicht sicher, ob die Generierung des Secrets richtig erfolgt ich verwende dort eine andere Action (<u:X_AVM-DE_GetHostListPath xmlns:u="urn:dslforum-org:service:Hosts:1"/>) als ich später verwende. In den Beschreibungen die ich gelesen habe, sollte das secret für alle Arten von Aufrufen taugen. Darüber hinaus ist es mir nicht gelungen, die Action ohne hervorrufen eines Fehlers durch "SetEnable" zu ersetzen - im folgenden Beispiel kommt der gleiche Fehler - Wenn im Header und im Body "WLANConfiguration:3#SetEnable" bzw <u:SetEnable xmlns:u=urn:dslforum-org:service:WLANConfiguration:3"/> setze erhalte ich den gleichen Fehler allerdings schon beim ersten Request. ein ERgänzen des Body mit " <NewEnable>True</NewEnable><u:SetEnable>" nach dem ersten "u:SetEnable"-Tag brachte auch keine Besserung.
Mache Ich mit der Authentification etwas falsch, oder liegt der Fehler ganz wo anders? Wenn irgendjemand eine Idee dazu hat, wäre es großartig!
P.S.: die verwendete WLAN-Nummer (3) sollte richtig sein, da ich neben dem GastWlan nuch ein 2,5 und 5 GHz auf der Fritzbox habe. Ein testweiser Aufruf mit z.b. WLAN-Nummer 2 bringt die gleiche Fehlermeldung
ich versuche micropython via TR064 das GästeWLAN einzuschalten. Dies will mir jedoch nicht gelingen. Ich erhalte beim entsprechenden Aufruf die Fehlermeldung 401 "Invalid Action".
Ich bin mir nicht sicher, ob das tatsächlich an einer fehlerhaften Aktion liegen sollte (hier habe ich trotz intensiver Suche keinen Fehler gefunden) oder eher daran, dass ich schon bei der Authentifikation etwas falsch mache.
Im Folgenden der für den Aufruf verwendeten (vom Python-Programm erzeugten) Request-Aufrufdaten
XML:
WLAN-Verbindung ok
tr064Port= 49443
####### call TR064 for Nonce/auth and create a secret of it #######
url = https://fritz.box:49443/upnp/control/hosts
HTTP-header[1] = SoapAction:urn:dslforum-org:service:Hosts:1#X_AVM-DE_GetHostListPath
HTTP-header[2] = Content-Type:text/xml; charset = "utf-8"
Http-body = <?xml version="1.0" encoding="utf-8"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<h:InitChallenge xmlns:h="http://soap-authentication.org/digest/2001/10/" s:mustUnderstand="1">
<UserID>fbsoap</UserID>
</h:InitChallenge>
</s:Header>
<s:Body>
<u:X_AVM-DE_GetHostListPath xmlns:u="urn:dslforum-org:service:Hosts:1"/>
</s:Body>
</s:Envelope>
Response = <?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Header>
<h:Challenge xmlns:h="http://soap-authentication.org/digest/2001/10/" s:mustUnderstand="1">
<Status>Unauthenticated</Status>
<Nonce>FB19091F9CF5BFDF</Nonce>
<Realm>F!Box SOAP-Auth</Realm>
</h:Challenge>
</s:Header>
<s:Body>
<s:Fault>
<faultcode>s:Client</faultcode>
<faultstring>UPnPError</faultstring>
<detail>
<UPnPError xmlns="urn:dslforum-org:control-1-0">
<errorCode>503</errorCode>
<errorDescription>auth. failed</errorDescription>
</UPnPError>
</detail>
</s:Fault>
</s:Body>
</s:Envelope>
sopaUser= fbsoap
soapNonce= FB19091F9CF5BFDF
soapRealm= F!Box SOAP-Auth
soapPsk= o2COoSoMnTY53Bq6mhE7
soapSecret= e792d3e37f9435f9bdd5ac0113c86360
####### call TR064 to enable guestWlan #######
url = https://fritz.box:49443/upnp/control/wlanconfig3
HTTP-header[1] = SoapAction:urn:dslforum-org:service:WLANConfiguration:3
HTTP-header[2] = Content-Type:text/xml; charset = "utf-8"
Http-body = <?xml version="1.0" encoding="utf-8"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<h:ClientAuth xmlns:h="http://soap-authentication.org/digest/2001/10/" s:mustUnderstand="1">
<Nonce>FB19091F9CF5BFDF</Nonce>
<Auth>bd7f39776811e1fc0c011e80e1e9a809</Auth>
<UserID>fbsoap</UserID>
<Realm>F!Box SOAP-Auth</Realm>
</h:ClientAuth>
</s:Header>
<s:Body>
<u:SetEnable xmlns:u=urn:dslforum-org:service:WLANConfiguration:3>
<NewEnable>"1"</NewEnable>
</u:SetEnable>
</s:Body>
</s:Envelope>
Response = <?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<s:Fault>
<faultcode>s:Client</faultcode>
<faultstring>UPnPError</faultstring>
<detail>
<UPnPError xmlns="urn:schemas-upnp-org:control-1-0">
<errorCode>401</errorCode>
<errorDescription>Invalid Action</errorDescription>
</UPnPError>
</detail>
</s:Fault>
</s:Body>
</s:Envelope>
Bisherige Erkenntnisse:
- einen Fehler im Aufruf zum Setzen des Gast-Wlans (der zweite Aufruf) kann ich nicht finden - wenn dort trotzdem etwas falsch sein sollte, freue ich mich über jeden Hinweis.
- wenn ich den Wert für auth auf einen zufällig gewählten Wert (401 "Invalid Action") setze, erhalte ich die gleiche Fehlermeldung - eine fehlerhafte Authentifizierung würde also auch den Fehlercode erklären. Es bliebe dann die Frage, wo die Authentifizierung falsch ist.
- ich verwende zu Testzwecken bash-skripte die mittels curl erfolgreich Aufrufe (mit gleichem User/PW) durchführe. Wenn ich die dort ermittelten Werte für Nonce/auth/passwort zu testzwecken in das Python-Programm eintrage, so erhalte ich die gleichen Werte d.h. den gleichen auth-Wert wie im bash-Skript. Ich gehe daher davon aus, dass die Generierung des auth-Wertes grundsätzlich richtig ist.
- Ich bin mir nicht sicher, ob die Generierung des Secrets richtig erfolgt ich verwende dort eine andere Action (<u:X_AVM-DE_GetHostListPath xmlns:u="urn:dslforum-org:service:Hosts:1"/>) als ich später verwende. In den Beschreibungen die ich gelesen habe, sollte das secret für alle Arten von Aufrufen taugen. Darüber hinaus ist es mir nicht gelungen, die Action ohne hervorrufen eines Fehlers durch "SetEnable" zu ersetzen - im folgenden Beispiel kommt der gleiche Fehler - Wenn im Header und im Body "WLANConfiguration:3#SetEnable" bzw <u:SetEnable xmlns:u=urn:dslforum-org:service:WLANConfiguration:3"/> setze erhalte ich den gleichen Fehler allerdings schon beim ersten Request. ein ERgänzen des Body mit " <NewEnable>True</NewEnable><u:SetEnable>" nach dem ersten "u:SetEnable"-Tag brachte auch keine Besserung.
XML:
####### call TR064 for Nonce/auth and create a secret of it #######
url = https://fritz.box:49443/upnp/control/hosts
HTTP-header[1] = SoapAction:urn:dslforum-org:service:WLANConfiguration:3#SetEnable
HTTP-header[2] = Content-Type:text/xml; charset = "utf-8"
Http-body = <?xml version="1.0" encoding="utf-8"?>
<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<h:InitChallenge xmlns:h="http://soap-authentication.org/digest/2001/10/" s:mustUnderstand="1">
<UserID>fbsoap</UserID>
</h:InitChallenge>
</s:Header>
<s:Body>
<u:SetEnable xmlns:u=urn:dslforum-org:service:WLANConfiguration:3"/>
</s:Body>
</s:Envelope>
Mache Ich mit der Authentification etwas falsch, oder liegt der Fehler ganz wo anders? Wenn irgendjemand eine Idee dazu hat, wäre es großartig!
P.S.: die verwendete WLAN-Nummer (3) sollte richtig sein, da ich neben dem GastWlan nuch ein 2,5 und 5 GHz auf der Fritzbox habe. Ein testweiser Aufruf mit z.b. WLAN-Nummer 2 bringt die gleiche Fehlermeldung