FritzBox 7270 Adressbuch sichern

  • Hallo,
    ein Kollege von mir hat eine AVM FritzBox 7270.
    Davon möchste er sein Adressbuch sichern.
    Leider funktioniert dies mit keinem Programm.

    Für die 7050 gibt es ein Programm welches damit klarkommt.

    Hat jemand zufällig sowas für sich programmiert und könnte es mir zur Verfügung stellen?
    Oder muß ich mich selber ans Werk machen :D

  • Hi,
    es geht um das Adressbuch.
    Ich habe mal was geschrieben.

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <Date.au3>
    #include <File.au3>
    #include <IE.au3>
    #include <String.au3>
    #include <ButtonConstants.au3>
    #include <eigen_version.au3>
    #include <ExcelCOM_UDF.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Res_Description=FritzBox Adressbuch
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.1
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Res_Field=AutoIt Version|%AutoItVer%
    #AutoIt3Wrapper_Res_Field=Autor|Tweaky
    #AutoIt3Wrapper_Icon=zusatz\Icon.ico
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

    [/autoit] [autoit][/autoit] [autoit]

    Opt("WinTitleMatchMode", 2)
    Dim $array_quelltext[1]
    Dim $array_telefonbuch[1000][4]
    Dim $artikel_name_neu_io

    [/autoit] [autoit][/autoit] [autoit]

    $txt_tmp = "C:\temp.txt"
    $ini = @ScriptDir & "\" & "FritzBox 7270 Adressbuch.ini"
    $excel_datei = @ScriptDir & "\" & "Adressbuch.xls"

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;------------------------------------------------------------------------------------------------------------------------------------
    ;Mit Hilfe dieses Scriptes kann das Adressbuch der AVM FritzBox 7270 ins Excel exportiert werden
    ;------------------------------------------------------------------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    ;Deklarierung für _skriptinfos()
    Dim $tool_version, $tool_titel

    [/autoit] [autoit][/autoit] [autoit]

    ;AutoItSetOption
    Opt("GUICloseOnESC", 0) ;1=ESC beendet, 0=ESC schließt nicht

    [/autoit] [autoit][/autoit] [autoit]

    ;Tooltitel und Toolversion
    _skriptinfos()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;****************************
    ; GUI *
    ;****************************

    [/autoit] [autoit][/autoit] [autoit]

    ;~ _versionsnummer($tool_version)

    [/autoit] [autoit][/autoit] [autoit]

    $GUI_titel = $tool_titel & " " & $version
    $GUI = GUICreate($GUI_titel, 140, 120)

    [/autoit] [autoit][/autoit] [autoit]

    ;Buttons
    $button_auslesen = GUICtrlCreateButton("aus Fritzbox auslesen", 10, 10)
    $button_excel = GUICtrlCreateButton("in Excel schreiben", 10, 40)
    $button_beenden = GUICtrlCreateButton("beenden", 10, 70)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;****************************
    ; Tray *
    ;****************************

    [/autoit] [autoit][/autoit] [autoit]

    Opt("TrayMenuMode", 1) ;Zeigt das Standard Tray Menü nicht an (Script Paused / Exit)
    $versionitem = TrayCreateItem("Version")
    TrayCreateItem("")
    $aboutitem = TrayCreateItem("Über")
    TrayCreateItem("")
    $exititem = TrayCreateItem("Beenden")

    [/autoit] [autoit][/autoit] [autoit]

    ;ToolTip auf das TrayIcon
    TraySetToolTip($tool_titel)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW, $GUI)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    $msg_tray = TrayGetMsg()
    Select
    ;------------------------------------------------------------ Buttons ------------------------------------------------------
    Case $msg = $button_auslesen
    _auslesen()

    [/autoit] [autoit][/autoit] [autoit]

    Case $msg = $button_excel
    _excel()

    [/autoit] [autoit][/autoit] [autoit]

    Case $msg = $button_beenden Or $msg = $GUI_EVENT_CLOSE Or $msg_tray = $exititem
    Exit

    ;------------------------------------------------------------ Tray Befehle ----------------------------------------
    Case $msg_tray = $versionitem
    MsgBox(0, "Version", $version)

    [/autoit] [autoit][/autoit] [autoit]

    Case $msg_tray = $aboutitem
    MsgBox(0, "Über", $tool_titel & @CRLF & @CRLF & " made by Tweaky")
    EndSelect
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;************************************************
    ; Daten aus der FritzBox auslesen *
    ;************************************************

    [/autoit] [autoit][/autoit] [autoit]

    Func _auslesen()
    Dim $array_quelltext[1]
    Dim $array_telefonbuch[1000][4]

    SplashTextOn("Bitte warten", "", 150, 50, @DesktopWidth / 2, @DesktopHeight / 2 - 100)
    FileDelete($ini)
    FileDelete($txt_tmp)

    $internet_adresse = "http://fritz.box"

    [/autoit] [autoit][/autoit] [autoit]

    $oIE = _IECreate($internet_adresse, 0, 1, 1, 0)

    [/autoit] [autoit][/autoit] [autoit]

    $datum = _NowCalcDate()
    $split = StringSplit($datum, "/")
    $jahr = $split[1]
    $monat = $split[2]
    $tag = $split[3]
    $titel = "FRITZ!Box"
    $internet_adresse = "fritz.box"
    $fritz_passwort = "andreas07"

    [/autoit] [autoit][/autoit] [autoit]

    If @error > 0 Then Exit

    [/autoit] [autoit][/autoit] [autoit]

    WinSetState("Microsoft Internet Explorer", "", @SW_MAXIMIZE) ;maximieren
    _IELoadWait($oIE, 2000)

    [/autoit] [autoit][/autoit] [autoit]

    $oFrame = _IEFrameGetObjByName($oIE, "frame_content")
    $oForm = _IEFormGetObjByName($oFrame, "uiViewForm")

    [/autoit] [autoit][/autoit] [autoit]

    ; Passwort einsetzen
    $Password = _IEFormElementGetObjByName($oForm, "pass")
    _IEFormElementSetValue($Password, $fritz_passwort)

    [/autoit] [autoit][/autoit] [autoit]

    ; Anmelden-Button drücken
    $LoginBtn = _IEFormElementGetObjByName($oForm, "btnLogin")
    _IEAction($LoginBtn, "click")
    _IELoadWait($oIE, 2000)

    [/autoit] [autoit][/autoit] [autoit]

    ; Zur Anrufliste wechseln
    _IELinkClickByText($oFrame, "Telefonbuch")
    _IELoadWait($oIE, 2000)

    [/autoit] [autoit][/autoit] [autoit]

    ;generierten Quelltext auslesen, öffnen und speichern
    MouseClick("right", 100, 900)
    Sleep(10)
    MouseClick("left", 130, 785)
    WinWait(" - Editor", "")
    WinActivate(" - Editor", "")
    Send("!D")
    Send("u")
    Sleep(1000)
    Send($txt_tmp)
    Sleep(100)
    Send("{ENTER}")
    Sleep(2000)

    [/autoit] [autoit][/autoit] [autoit]

    _FileReadToArray($txt_tmp, $array_quelltext)

    [/autoit] [autoit][/autoit] [autoit]

    $zaehler = 0

    [/autoit] [autoit][/autoit] [autoit]

    $array_telefonbuch[0][0] = "Name"
    $array_telefonbuch[0][1] = "privat"
    $array_telefonbuch[0][2] = "mobil"
    $array_telefonbuch[0][3] = "geschäftlich"

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To UBound($array_quelltext) - 1
    $name = _StringBetween($array_quelltext[$i], '<SCRIPT type=text/javascript>TrFonName("', '", "");</SCRIPT>')
    $nr_home = _StringBetween($array_quelltext[$i], '<SCRIPT type=text/javascript>TrFonNr("home', '", "");</SCRIPT>')
    $nr_mobile = _StringBetween($array_quelltext[$i], '<SCRIPT type=text/javascript>TrFonNr("mobile', '", "");</SCRIPT>')
    $nr_work = _StringBetween($array_quelltext[$i], '<SCRIPT type=text/javascript>TrFonNr("work', '", "");</SCRIPT>')

    [/autoit] [autoit][/autoit] [autoit]

    If IsArray($name) Then
    $zaehler += 1
    $split = StringSplit($name[0], '", "', 1)
    _name_korrigieren($split[2])
    $array_telefonbuch[$zaehler][0] = $artikel_name_neu_io
    EndIf

    If IsArray($nr_home) Then
    $split = StringSplit($nr_home[0], '", "', 1)
    $array_telefonbuch[$zaehler][1] = $split[2]
    EndIf

    If IsArray($nr_mobile) Then
    $split = StringSplit($nr_mobile[0], '", "', 1)
    $array_telefonbuch[$zaehler][2] = $split[2]
    EndIf

    If IsArray($nr_work) Then
    $split = StringSplit($nr_work[0], '", "', 1)
    $array_telefonbuch[$zaehler][3] = $split[2]
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $array_telefonbuch[$zaehler + 1][4]

    [/autoit] [autoit][/autoit] [autoit]

    ;~ _ArrayDisplay($array_telefonbuch)

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To UBound($array_telefonbuch) - 1
    IniWrite($ini, $array_telefonbuch[$i][0], $array_telefonbuch[0][1], $array_telefonbuch[$i][1])
    IniWrite($ini, $array_telefonbuch[$i][0], $array_telefonbuch[0][2], $array_telefonbuch[$i][2])
    IniWrite($ini, $array_telefonbuch[$i][0], $array_telefonbuch[0][3], $array_telefonbuch[$i][3])
    Next

    SplashOff()
    EndFunc ;==>_auslesen

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;********************************************************
    ; ö, ä, usw. aus dem Artikelnamen korrigieren *
    ;********************************************************

    [/autoit] [autoit][/autoit] [autoit]

    Func _name_korrigieren(ByRef $artikel_name_neu)
    $artikel_name_neu = StringReplace($artikel_name_neu, "&Ouml;", "Ö", 0, 1)
    $artikel_name_neu = StringReplace($artikel_name_neu, "&ouml;", "ö", 0, 1)
    $artikel_name_neu = StringReplace($artikel_name_neu, "&Auml;", "Ä", 0, 1)
    $artikel_name_neu = StringReplace($artikel_name_neu, "&auml;", "ä", 0, 1)
    $artikel_name_neu = StringReplace($artikel_name_neu, "&Uuml;", "Ü", 0, 1)
    $artikel_name_neu = StringReplace($artikel_name_neu, "&uuml;", "ü", 0, 1)
    $artikel_name_neu = StringReplace($artikel_name_neu, "&szlig;", "ß", 0, 1)
    $artikel_name_neu = StringReplace($artikel_name_neu, "&Atilde;&curren;", "ä", 0, 1)
    $artikel_name_neu = StringReplace($artikel_name_neu, "&Atilde;&frac14;", "ü", 0, 1)
    $artikel_name_neu = StringReplace($artikel_name_neu, "&frac12; ", " in ", 0, 1)
    $artikel_name_neu = StringReplace($artikel_name_neu, "&reg;", "", 0, 1)
    $artikel_name_neu_io = $artikel_name_neu
    EndFunc ;==>_name_korrigieren

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;********************************************
    ; Daten ins Excel schreiben *
    ;********************************************

    [/autoit] [autoit][/autoit] [autoit]

    Func _excel()
    $oExcel = _ExcelBookOpen($excel_datei, 1, False, "", "")
    $ini_sektion_names = IniReadSectionNames($ini)
    ;~ _ArrayDisplay($ini_sektion_names)
    For $i = 1 To UBound($ini_sektion_names) - 1
    $ini_sektion_privat = IniRead($ini, $ini_sektion_names[$i], "privat", "")
    $ini_sektion_mobil = IniRead($ini, $ini_sektion_names[$i], "mobil", "")
    $ini_sektion_geschaeftlich = IniRead($ini, $ini_sektion_names[$i], "geschäftlich", "")
    _ExcelWriteCell($oExcel, $ini_sektion_names[$i], $i, 1)
    _ExcelWriteCell($oExcel, $ini_sektion_privat, $i, 2)
    _ExcelWriteCell($oExcel, $ini_sektion_mobil, $i, 3)
    _ExcelWriteCell($oExcel, $ini_sektion_geschaeftlich, $i, 4)
    Next
    EndFunc ;==>_excel

    [/autoit]

    Dies funktioniert auch, jedoch würde ich es gerne noch verbessern.
    Ich kann mit meinem Browser den "generierten Quelltext" von der Seite mit dem Adressbuch einsehen.
    Jedoch weiss ich nicht, wie ich diesen mit AutoIt anzeigen kann.
    Bei all meinen Methoden wurde nur der "normale" Quelltext angezeigt, wo leider die Daten aus dem Adressbuch nicht enthalten sind.
    Weiß einer wie dies geht?

  • Hier mal mein Versuch mit der Firmware-Version 54.04.63-12365
    Das Password muss Du noch anpassen. Das Ergebnis ist dann in der Datei dummi.txt
    Per RegEx kannst Du dann die Felder separieren.
    Eine andere Möglichkeit wäre es mit plink und wget zu arbeiten. Mit plink und cat das Telefonbuch auf den USB Speicher speichern und anschließend mit wget holen, habe ich aber nicht getestet.

    Geht es Dir darum das Telefonbuch zu speichern, das funktioniert ja mit Fritz!BoxMonitor, oder um eine AutoIt Lösung?

    Spoiler anzeigen
    [autoit]


    #include <array.au3>
    #include <SQLite.au3>
    #include "_ArrayMultiDisplay.au3"

    [/autoit] [autoit][/autoit] [autoit]

    #include<StaticConstants.au3>
    #include<GUIConstantsEx.au3>
    #include<ListViewConstants.au3>
    #include<StructureConstants.au3>
    #include<WindowsConstants.au3>
    #include <GUIListView.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Opt("WinTitleMatchMode", 2) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase
    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Dim $hQuery, $aRow, $bRow, $a[1] = [0], $aTmp[1] = [0]
    $sEigeneVorwahl = "040"
    Global $ACurrentItem[2], $sTitle, $hListView, $sID, $sSpaltenName

    [/autoit] [autoit][/autoit] [autoit]

    If $CmdLine[0] = 0 Then
    $obj = ObjCreate ("winhttp.winhttprequest.5.1")

    [/autoit] [autoit][/autoit] [autoit]

    $obj.open ("POST", "http://fritz.box/cgi-bin/webcm", False)
    $obj.SetRequestHeader ("Content-Type", "application/x-www-form-urlencoded")
    $POST = "getpage=../html/de/menus/menu2.html&var%3Alang=$LANG&var%3Amenu=fon&var%3Apagename=foncalls&login%3Acommand%2F" _
    & "password=HierDeinPasswort"
    ;http://www.ip-phone-forum.de/showthread.php?t=161255
    ;http://www.ip-phone-forum.de/showpost.php?p…2&postcount=130
    ;http://www.ip-phone-forum.de/showthread.php…376#post1029376
    ; Telefonbuch http://fritz.box/cgi-bin/webcm?…ar%3Aweckernr=1
    ;$POST = "getpage=../html/de/FRITZ!Box_Anrufliste.csv&errorpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&var%3Alang=$LANG&var%3Apagename=foncalls&var%3Aerrorpagename=foncalls&var%3Amenu=fon&var%3Apagemaster=&time%3Asettings%2Ftime=1136559837%2C-60"
    ;$POST &= "ibm!2!ibm"
    $obj.Send($POST)

    [/autoit] [autoit][/autoit] [autoit]

    ;MsgBox(0,"",$obj.ResponseText)
    $obj.open ("POST", "http://fritz.box/cgi-bin/webcm", False)
    $obj.SetRequestHeader ("Content-Type", "application/x-www-form-urlencoded")
    ;$POST = "getpage=../html/de/FRITZ!Box_Anrufliste.csv&errorpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&var%3Alang=de&var%3Apagename=foncalls&var%3Aerrorpagename=foncalls&var%3Amenu=fon&var%3Apagemaster=&time%3Asettings%2Ftime=1136559837%2C-60"
    $POST = "getpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&errorpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&var%3Apagename=fonbuch&var%3Aerrorpagename=fonbuch&var%3Amenu=home&var%3Apagemaster=&time%3Asettings%2Ftime=1223128569%2C-120&var%3Aactivtype=pppoe&var%3AtabInetstat=1&var%3Aweckernr=1"
    $obj.Send($POST)
    If FileExists("dummi.txt") Then FileDelete("dummi.txt")
    FileWrite("dummi.txt", $obj.ResponseText)
    Else
    $a[0] = "1;15.09.08 12:43;;0591223344;Anrufbeantworter;0401299;0:12"
    EndIf

    [/autoit]
  • Hi,
    es geht meineme Kollegen nur darum das Adressbuch zu sichern.
    Ob mit AutoIt oder irgendwas anderem ist egal.
    Bist du sicher, dass Fritz!BoxMonitor funktioniert?
    Mein Kollege meinte dies klappt nicht weil mehrere Telefonnummern pro Person eingetragen werden können.
    (Dies wird auch in mehreren Foren bestätigt)

  • Hallo Tweaky,

    gerade nochmals getestet mit Fritz!BoxAnrufmonitor Version 1.02.00
    Es lassen sich die Telebucheinträge importieren.
    Eine Besonderheit es mir aufgefallen: Erst wenn ich die Anrufliste aktualisiere, kann ich die Telefonbucheinträge importieren.

  • Die Seite ist Javascript oder sowas, was ja erst vom Browser(plugin) ausgeführt werden muss, folglich muss das dein Skript auch erst tun. (Dass es Javascript ist, sieht man, wenn man sich den Quelltext anzeigen lässt). D.h. du wirst wohl die Seite(n) analysieren müssen, um die Funktion zu finden, die das tut und dann rausfinden wie man die Aufruft. Ist zwar kompliziert, aber was besseres fällt mir leider auch nicht ein.

    Projekte: Keine größeren (und fertigen)
    Gegen Internetzensur:
    https://epetitionen.bundestag.de/index.php?acti…s;petition=3860
    (Zeichnungsfrist abgelaufen)
    __________________________________________________________________________________________________________________________________
    Dieser Beitrag wurde bereits 264 mal editiert, zuletzt von »Fast2« (30. Februar 2009, 12:99)

    Einmal editiert, zuletzt von Fast2 (19. November 2008 um 20:01)