-
-
Save joasch/e48738417ec1efcc963a96bbb3f34cba to your computer and use it in GitHub Desktop.
#IBJS.net 20160803, in Anlehnung an fb_dial.vbs von Michael Engelke 2012 | |
#Fritz!Box Wählhilfe mit Powershell von Joachim Schubert ibjs.net 2016 | |
#Der Fritz-Box Benutzername für diesen Konstellation lautet NAS-Read | |
#Das encrypted Fritz-Box Passwort ist vorher in einer Datei Securestring.fb abzulegen. | |
#ConvertFrom-SecureString (read-host -AsSecureString -Prompt "Passwort ") >SecureString.fb | |
#Als Default Rufnummer nehme ich hier die Zeitansage der Telekom, die aber kostenpflichtig ist | |
#Alternativ nehme ich zum Testen eine interne Nummer wie **610, damit kann ich es zwar klingeln lassen, | |
#kann aber bisher die internen Gespräche nicht an das Wahlgerät **613 übergeben, es legt sofort auf. | |
#Zum Aufbau einer Verbindung lege ich eine sonst unbenutzte Festnetznummer auf das Zielgerät. | |
#Erprobung an Windows 7/ Powershell 5/ Gigaset A415 **613, Gigaset SL1 **610/ FritzBox 6360/Unity Media VoIP | |
#Die Übergabe des Anrufs erfolgt so: | |
#Das Script baut die Verbindung auf und zeigt es mit einem Rufzeichen= 3x Kammerton an. | |
#Sobald zu hören, am Wahlgerät die grüne Rufannahmetaste solange drücken, bis Wählhilfe Nummer am Display erscheint (ca. 1s) | |
#Das Rufzeichen ist am Wählgerät zu hören. | |
# | |
#Einbindung als Telefondienst per Registry: | |
#HKEY_CLASSES_ROOT\tel\shell\open\command | |
#[Reg_SZ]: "C:\WINDOWS\System32\WScript.exe" "C:\Windows\fb_dial.vbs" '%1' # altes vbs script wird nun ersetzt: | |
#[Reg_SZ]: "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "C:\Windows\fb-dial.ps1" '%1' | |
#Dieses Script und SecureString.fb kommen nach C:\windows | |
#mit tel:01804100100 kann nun gewählt werden | |
# | |
Param([string]$Nummer="0180 4100100") #Zeitansage Telecom für 20 ct | |
# | |
function md5($text){ | |
$md5 = New-Object System.Security.Cryptography.MD5CryptoServiceProvider | |
$md5.ComputeHash([Text.Encoding]::utf8.getbytes($text))|%{$HC=''}{$HC+=$_.tostring("x2")}{$HC} | |
} | |
# | |
#Achtung [string] im Parameter nicht vergessen sonst wird aus 0175… -> 175… | |
#und sie lernen einen Anschluss Ihrer Nachbarschaft kennen | |
# | |
Function dial([string]$Nummer){ | |
if (!$Nummer){$Nummer="**610"} | |
#Nummernumwandlungfür Fritz in De, ohne Telefonanlage | |
$Nummer=([regex]::Replace($Nummer,"(?i)^tel:","")) | |
$Nummer=([regex]::Replace($Nummer,"^\+","00")) | |
$Nummer=[regex]::Replace($Nummer,"[^0-9*]","") | |
$Nummer=[regex]::Replace($Nummer,"0049","0") | |
$Password=get-content .\securestring.fb|ConvertTo-SecureString | |
$user="NAS-Read" | |
$hostfb="http://fritz.box" #$Host wird vom OS genutzt | |
$page_login= "/login_sid.lua" | |
$page_dial= "/fon_num/fonbook_list.lua?dial="+$Nummer+"&sid=" | |
$page_logout="/fon_num/fonbook_list.lua?logout=1&sid=" | |
$Ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password) | |
$pass=[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($Ptr) | |
$R1 = Invoke-WebRequest ($hostfb+$page_login) | |
$Challenge=([xml]$R1).sessioninfo.challenge | |
$Code1=$Challenge+"-"+$Pass | |
$Code2=[char[]]$Code1|%{$Code2=""}{$Code2+=$_+[Char]0}{$Code2} | |
$Response= "response=" + $Challenge + "-" + $(md5($Code2)) | |
$Response+="&username="+$user #Response ist die Antwort auf die Challenge | |
$R2=Invoke-WebRequest -Uri ($hostfb+$page_login) -Method Post -Body $Response | |
$SID=([xml]($R2.Content)).ChildNodes.sid | |
$URiDial= $hostfb+$page_dial+$SID | |
$URILogout=$hostfb+$page_logout+$SID | |
$RequestCall=Invoke-WebRequest -Uri $URIDial | |
$RequestLogout=Invoke-WebRequest -Uri $URILogout | |
1..3|%{[console]::beep(440,1000);start-sleep(1)} | |
} | |
dial $Nummer | |
Ich habe es geschafft fb-dial in der Registry einzubinden: , somit keine Installation des TAPICALL notwendig!
Die Registry Einträge von Hand, wie oben beschrieben, kann man dann weg lassen.
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Classes\fb-dial.callto]
#[HKEY_CURRENT_USER\Software\Classes\fb-dial.callto\DefaultIcon]
#@="C:\Users\Phone_43546.ico"
[HKEY_CURRENT_USER\Software\Classes\fb-dial.callto\Shell]
[HKEY_CURRENT_USER\Software\Classes\fb-dial.callto\Shell\Open]
[HKEY_CURRENT_USER\Software\Classes\fb-dial.callto\Shell\Open\Command]
@="powershell.exe -noprofile -executionpolicy bypass -file c:\windows\fb-dial.ps1 '%1'"
[HKEY_CURRENT_USER\SOFTWARE\fb-dial]
[HKEY_CURRENT_USER\SOFTWARE\fb-dial\Capabilities]
"ApplicationDescription"="fb-dial"
"ApplicationName"="fb-dial"
[HKEY_CURRENT_USER\SOFTWARE\fb-dial\Capabilities\URLAssociations]
"callto"="fb-dial.callto"
"tel"="fb-dial.callto"
[HKEY_CURRENT_USER\SOFTWARE\RegisteredApplications]
"fb-dial"="Software\fb-dial\Capabilities"
Das Script ist Gold wert. Danke an Joasch und Engelke !
Hi, nach Anpassungen in Win 11 (Verknüpfungen Registry) und für die Fritzbox 7490 (Version 7.29) läuft es wunderbar. Auch ohne beim Wählen abzuheben am Telefon. Dann klingelt das eigene Telefon, wenn die Verbindung aufgebaut wurde.