This article first appeared in the Autumn edition of 2600: The Hacker Quarterly in 2013. The Asterisk code was tested on Asterisk version 1.2, and later tested on 1.8. The shells scripts were written in Bash.
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 code
#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 are high and RetryTime is low to prevent target from answering while keeping action on the line
#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
while [ $counter -gt 0 ]
cp testcall.bak testcall.call
chmod 777 testcall.call
mv testcall.call /var/spool/asterisk/outgoing
counter=$(( $counter – 1 ))
The counter is the number of copies of the call file we want to make. We set this high as well as “MaxRetries” in the call file in an effort to keep the target’s phone line busy. With these numbers high, we account for call waiting and if the call is answered we can still send more calls to keep the line busy thereafter.
Our last step is to make a context in the dialplanto play a sound file if the target does answer one of the calls.
exten => s,1,Answer
exten => s,2,Playback(/var/lib/asterisk/sounds/tt-weasels)
exten => s,3,Hangup
One great benefit to this setup is that, unlike the original busy box, this will work on both landlines and cellphones. We also do not have to attach any physical equipment anywhere, so not being seen is a plus. So, this is my tribute to the old school. I hope you enjoyed it thoroughly. Shoutouts to telephreak.org and all of the other ninjas here and abroad.