Ein kleines Revival erfuhr das Phone Phreaking mit den innovativen Features der neuen Mobilfunkbetreiber (ViagIntercom - O2). Die angebotene Festnetznummer und kostenlose Rufumleitungen innerhalb des gleichen Netzbetreibers führten Anfang der 2000er Jahre zur Möglichkeit einer BWHZ (Bundesweite Home Zone) - d.h. man war Deutschlandweit unter der (damals kostengünstigeren) Festnetznummer erreichbar.
In Kombination mit den damals verfügbar werdenden VoIP-Festnetz Flatrates und einem Asterisk-Server haben wir unsere ganz eigene BWHZ gebaut, die in logischer Konsequenz auch kostenlose Anrufe ins O2-Netz ermöglichte.
Der Trick liegt in der dynamischen Umschaltung der Rufweiterleitung im Homezone-Handy.
Anfänglich musste das Handy immer in der Nähe eines aus dem Internet erreichbaren Servers liegen (an den es per seriellem Kabel angeschlossen war), später haben wir es einfach per USB an eine Fritz!Box gehängt und per Ser2Net dem gehosteten Asterisk-Server zugänglich gemacht.
Die Funktionsweise im Detail:
(Fall 1: VoIP Telefon nach Mobil)
- Der Anrufer wählt per VoIP eine Mobilnummer unseres Netzbetreibers.
- Die Asterisk ruft im Dialplan ein Umleitungsscript auf, mit der Nummer des Angerufenen als Ziel.
- Das Umleitungsscript verbindet sich per seriellem Terminal zum Handy in der Homezone und setzt die Umleitung per AT-Kommando
- Die Asterisk ruft (kostenlos durch VoIP-Flat) die Festnetznummer des Homezone-Handys - welches kostenlos auf die eingestellte Umleitung weiterleitet - und verbindet ein- und ausgehenden Ruf miteinander.
(Fall 2: Mobil nach Mobil mit Callback)
- Der Anrufer wählt eine, auf die Asterisk geschaltete Nummer.
- Die Asterisk erkennt die CallerID und quittiert den Ruf mit einem Besetztzeichen.
- Die Asterisk ruft im Dialplan ein Umleitungsscript auf, mit der Nummer des Anrufers als Ziel.
- Das Umleitungsscript verbindet sich per seriellem Terminal zum Handy in der Homezone und setzt die Umleitung per AT-Kommando
- Die Asterisk ruft die Festnetznummer des Homezone-Handys, welches auf den Anrufer weiterleitet.
- Der Anrufer kann sich nun über Kurzwahlen oder Nummerneingabe mit einer beliebigen Nummer verbinden lassen.
- Im Falle einer Mobilnummer ändert die Asterisk während des bestehenden Gesprächs die Umleitung im Homezone-Handy und baut so eine zweite Verbindung ins Mobilnetz auf.
Ein Asterisk Macro könnte so aussehen:
[macro-mobile] exten => i,1,Playback(invalid) exten => i,2,Hangup() exten => s,1,Goto(${MACRO_EXTEN}|1) exten => mobiledial,1,Set(ext=${MACRO_EXTEN}) exten => mobiledial,2,Set(ctxt=${MACRO_CONTEXT}) exten => mobiledial,3,AGI(gsm_divert.agi|${MACRO_EXTEN}) exten => mobiledial,4,Set(CDR(userfield)=${ext}) exten => mobiledial,5,Goto(${ctxt}|087654310|1) ; Weiterleitungshandy in HZ include => forbidden_mobile include => free_mobile include => other_mobile [forbidden_mobile] exten => 01791234567890,1,Goto(i|1) ; bekannte Rufnummern, die zu einem exten => 01791234567891,1,Goto(i|1) ; anderen Provider portiert wurden exten => 01791234567892,1,Goto(i|1) ; und nicht mehr kostenlos sind [other_mobile] exten => _01X.,1,Goto(i|1) ; Standard-Context für Mobilnummern (z.B. SipGate) [free_mobile] exten => 015123456789,1,Goto(mobiledial|1) ; portierte Nummern, die exten => 016223456789,1,Goto(mobiledial|1) ; inzwischen bei O2 sind exten => _017[69].,1,Goto(mobiledial|1) ; std. O2 nummern
Das AGI-Script ist optional, man könnte auch gleich das Umleitungsscript hernehmen:
#!/bin/bash # # wertet den ersten Parameter aus "AGI(gsm_divert.agi|param1)" # if [ -z "$1" ] ; then /usr/local/bin/gsm_divert.sh exit 0 else CHAN=$1 if [ "${CHAN:0:4}"="0176" -o "${CHAN:0:4}"="0179" ] ; then CHAN=${CHAN/#0/+49} /usr/local/bin/gsm_divert.sh "${CHAN}" fi fi exit 0Mein Umleitungsscript ist nicht gerade schön, aber es funktioniert...
#!/bin/bash LOCK="/tmp/gsmdivert.lck" EXITTEXT="Diversions cleared" EXITSTATUS=0 C=0 while [ -e "$LOCK" -a $C -lt 20 ] ; do sleep 1 C=$((C+1)) done if [ $C -lt 20 ] ; then touch "$LOCK" if [ -n "$1" ] ; then DIVERSION="$1" DIVERSION=${DIVERSION/#0/+49} EXITTEXT="Diverted to $DIVERSION" `/usr/bin/socat SYSTEM:"/usr/sbin/chat -v -T \"$DIVERSION\" \ -f /usr/local/etc/gsm_divert.chat || \ echo \"Error diverting to $DIVERSION\" > \ \"$LOCK\"",pty,raw,echo=0 TCP:MEIN.SER2.NET:23231` || EXITSTATUS=1 else `/usr/bin/socat SYSTEM:"/usr/sbin/chat -v \ -f /usr/local/etc/gsm_clear.chat || \ echo \"Error clearing diversions\" > \ \"$LOCK\"",pty,raw,echo=0 TCP:MEIN.SER2.NET:23231` || EXITSTATUS=1 fi if [ -f "$LOCK" ] ; then if [ $EXITSTATUS -ne 0 ] ; then EXITTEXT="Communication error" else if [ -n "`cat \"$LOCK\"`" ] ; then EXITTEXT="`cat \"$LOCK\"`" EXITSTATUS=3 fi fi rm -f "$LOCK" fi else EXITTEXT="Could not access device" EXITSTATUS=2 fi echo $EXITTEXT exit $EXITSTATUS
... und die beiden "chat"-Scripts:
#/usr/local/etc/gsm_divert.chat ABORT ERROR TIMEOUT 20 '' ATZ OK at+CCFC=0,3,"\T",145 OK
#/usr/local/etc/gsm_clear.chat ABORT ERROR TIMEOUT 10 '' ATZ OK at+CCFC=0,4 OK
Für die Freetz-Version auf der Fritz!Box habe ich noch ein paar Änderungen vorgenommen, um das Nokia Homezone-Telefon einzubinden.
Keine Kommentare:
Kommentar veröffentlichen