AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi FritzBox Wlan deaktivieren / aktivieren
Thema durchsuchen
Ansicht
Themen-Optionen

FritzBox Wlan deaktivieren / aktivieren

Ein Thema von 1aa · begonnen am 6. Sep 2013 · letzter Beitrag vom 13. Okt 2013
Antwort Antwort
1aa

Registriert seit: 28. Sep 2008
48 Beiträge
 
Delphi XE5 Enterprise
 
#1

FritzBox Wlan deaktivieren / aktivieren

  Alt 6. Sep 2013, 15:47
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?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#2

AW: FritzBox Wlan deaktivieren / aktivieren

  Alt 6. Sep 2013, 16:27
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
1aa

Registriert seit: 28. Sep 2008
48 Beiträge
 
Delphi XE5 Enterprise
 
#3

AW: FritzBox Wlan deaktivieren / aktivieren

  Alt 12. Okt 2013, 23:23
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 Hier im Forum suchenCalganX in seinem Post "Anrufliste der FritzBox auslesen" würden aber für die neue Firmware "FRITZ!OS 5.50" angepasst.

für den MD5 Hash verwende ich: Message-Digest MD5 optimiert für Delphi

Erläuterungen zum Login-Verfahren gibts in der AVM-Doku: AVM_Technical_Note_-_Session_ID.pdf

Der Code:

Delphi-Quellcode:
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;
mit  WLanAusAn('1') kann man Wlan aktiviern
mit  WLanAusAn('0') kann man Wlan deaktiviern

weitere Funktionen sind auch möglich...

Viel Spaß beim Testen
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#4

AW: FritzBox Wlan deaktivieren / aktivieren

  Alt 13. Okt 2013, 00:19
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...
  Mit Zitat antworten Zitat
1aa

Registriert seit: 28. Sep 2008
48 Beiträge
 
Delphi XE5 Enterprise
 
#5

AW: FritzBox Wlan deaktivieren / aktivieren

  Alt 13. Okt 2013, 01:44
richtig aktivieren kann man nur über lan..... pfeif..... 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....
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz