![]() |
FritzBox Wlan deaktivieren / aktivieren
Ich suche jetzt schon seit einiger zeit eine möglichkeit die wlan funktion der fritzbox mit einem klick zu beenden.
Diverse scripte und befehle für andere funktionen hab ich schon gefunden nur leider nix was mir mit dem problem weiter hilft . habt ihr eine idee? |
AW: FritzBox Wlan deaktivieren / aktivieren
Könnte man nicht über NetCAPI die Telefon-Codes #96*0* (WLAN aus) bzw. #96*1* (WLAN ein) senden? Ich hab das aber auch nur irgendwo aufgeschnappt und keine Ahnung von der Materie.
|
AW: FritzBox Wlan deaktivieren / aktivieren
So hat zwar etwas gedauert.... Aber da ich es nicht leiden kann wenn ein Post nur mit dem Kommentar: "jetzt geht es!" endet, stell ich mal meine Lösung vor wer was zu meckern hat immer her damit man kann nur daraus lernen:
Die Methoden LogIn und Logout basieren auf dem Code von ![]() ![]() für den MD5 Hash verwende ich: ![]() Erläuterungen zum Login-Verfahren gibts in der AVM-Doku: ![]() Der Code:
Delphi-Quellcode:
mit
uses Classes, SysUtils, IdHTTP, Md5;
const FRITZBOX_HOST = 'fritz.box'; type TBoxInfo = record [....] SID : String; TFritzBox = class(TObject) private ffHTTP : TIdHTTP; //INdy HTTP Componente fError : String; fBox : TBoxInfo; // Aktuelle FritzBox [....] function GetSID : String; public constructor Create; destructor Destroy; override; [....] Procedure LogIn(ABenutzername: string = ''; APassword: string = ''); procedure Logout; procedure WLanAusAn(aOn :String); [.....] property SID : String read GetSID; end; [.......] Constructor TFritzBox.Create; begin ffHTTP := TIdHttp.Create(nil); end; Destructor TFritzBox.Destroy; begin ffHTTp.Free; inherited; end; procedure TFritzBox.LogIn(ABenutzername: string = ''; APassword: string = ''); var challenge,response,sid : String; function InternalGetChallenge : String; begin Result := ffHTTP.Get('http://' + FRITZBOX_HOST + '/login_sid.lua'); if Pos('<challenge>',LowerCase(Result))=0 then raise Exception.Create('Fehler beim Initialisieren der Verbindung.'); System.Delete(Result,1,Pos('<challenge>',LowerCase(Result))+10); System.Delete(Result,Pos('</',Result),Length(Result)-Pos('</',Result)+1); end; function InternalGetResponse : String; var Hash : TMD5_CTX; Digest: TMD5digest; str : String; i : Integer; begin str := challenge+'-'+APassword; MD5Init(Hash); MD5Update(Hash, @str[1],Length(str)*2); MD5Final(Hash,Digest); Result := ''; for i := 0 to 15 do Result := Result + IntToHex(Digest[i],2); Result := LowerCase(Result); end; function InternalGetSid : String; var Params :String; begin Result := ''; Params:=('?username=' + ABenutzername + '&response=' + challenge + '-' + response); Result := ffHTTP.Get('http://' + FRITZBOX_HOST + '/login_sid.lua' + Params); if Pos('<sid>',LowerCase(Result))=0 then raise Exception.Create('Fehler beim Generieren der Sitzungs-ID.'); System.Delete(Result,1,Pos('<sid>',LowerCase(Result))+4); System.Delete(Result,Pos('</',Result),Length(Result)-Pos('</',Result)+1); end; begin ffHTTP.HandleRedirects := true; ffHTTP.Request.ContentLength := -1; ffHTTP.Request.Accept := 'text/html, */*'; ffHTTP.HTTPOptions := [hoForceEncodeParams]; try challenge := InternalGetChallenge; response := InternalGetResponse; sid := InternalGetSid; FBox.SID := sid; except on E:Exception do fError := E.Message; end; end; procedure TFritzBox.Logout; begin ffHTTP.HandleRedirects := true; ffHTTP.Request.ContentLength := -1; ffHTTP.Request.Accept := 'text/html, */*'; ffHTTP.HTTPOptions := [hoForceEncodeParams]; ffHTTP.Get('http://'+ FRITZBOX_HOST + '/login_sid.lua?logout=0&sid=' + fBox.SID); fBox.SID := '0000000000000000'; end; procedure TFritzBox.WLanAusAn(aOn :String):; var hUrl : String; hParams : TStringlist; Begin LogIn('xxx','xxx'); ffHTTP.HandleRedirects := true; ffHTTP.Request.ContentLength := -1; ffHTTP.Request.Accept := 'text/html, */*'; ffHTTP.HTTPOptions := [hoForceEncodeParams]; hParams := Tstringlist.Create; try hParams.Clear; hParams.Add('wlan:settings/ap_enabled=' + aOn); hParams.Add('getpage=/wlan/wlan_settings.lua'); hUrl := 'http://'+ FRITZBOX_HOST + '/wlan/wlan_settings.lua?sid=' + fBox.SID; ffHTTP.Post(hUrl,hParams); finally hParams.Free; end; Logout; end;
Delphi-Quellcode:
kann man Wlan aktiviern
WLanAusAn('1')
mit
Delphi-Quellcode:
kann man Wlan deaktiviern
WLanAusAn('0')
weitere Funktionen sind auch möglich... Viel Spaß beim Testen |
AW: FritzBox Wlan deaktivieren / aktivieren
Ich hoffe, da etwas nicht falsch verstanden zu haben:
1. mit WLanAusAn('0') kann man Wlan deaktivieren 2. mit WLanAusAn('1') kann man Wlan aktiviern Aktivieren: Wie soll das funktionieren - über LAN? WLAN ist ja aus... |
AW: FritzBox Wlan deaktivieren / aktivieren
richtig aktivieren kann man nur über lan.....:oops: pfeif..:oops:... hätte ich erwähnen sollen
mit einer kleinen modi. kann man den code auch nutzen um den wlan gastzugang zu aktivieren/deaktivieren das funktioniert dann auch komplett über wlan aber dann auch nur über das haupt wlannetz da man aus dem gastnetz keinen zugang zur fritzbox config hat.... sorry für das missverständnis.... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz