What is VOIPONG?

VOIPONG is a linux program that can reassemble network packets by means of packet sniffing voice over ip phone calls and saves the output as standard wav files organized by each day in a directory.

Why would you want to use this program instead of a commercial application?

  • For me it was simple, the cost = $ Free!
  • Can record multiple voip protocols including Cisco Skinny protocol
  • Stable. No need to worry about it not working properly
  • Open source. Can be modified to suit your needs.

What have I done with this program?
I tested this program at my office recording phone calls from a Cisco CallManager phone system. I found that installing VOIPONG in RedHat linux was possible, but the cpu usage was very high and each voip conversation recorded resulted in a zombie process. I spent a good bit of time reading the source code ( It was written in C ) trying to find a way to correct the zombie issue. After emailing back and forth with the creator of this program ( Murat Balaban ), and much trial and error, it made more sense to change operating systems to a BSD variant. FreeBSD 5.4 was the latest stable version of FreeBSD at that time, so that is what I was looking for STABLE. After getting the OS up and going with a typical install, comiling and installing VOIPONG was a breeze! Install instructions below.

After a considerable ammount of testing, I found that running VOIPONG on FreeBSD proved to be very stable. It also used very little cpu to record multiple simultaneous voip phone calls. So then moving forward the one piece that was missing for me was a way to determine which phone call that went through our Cisco CallManager system linked to which wav. I created a scheduled task to dump the CallDetailRecord table out of the phone system and dumped the data into a MySQL table. With the call detail information and the ip addresses of the phones and router I was able to determine which wav file linked to the CDR out of the table. So with the help of another person or two, we built a little web interface to search for phone calls and link to the wav files. Since wav files take up alot of disk space I also made a little script to convert all the wav files over to OGG. Later on, I wrote a function in the VOIPONG program itself to do the ogg encoding in process, rather then doing it on a scheduled task once a day. When the hard drive started flling up, I decided to archive the files to dvd and wrote a little script to add up the directories that would fit on a dvd and burn them.

The one other feature that this program does not have, is a way to record on-demand. So I started thinking of ways I could build that feature. If you are interested in that, please let me know.

Installing VOIPONG on FreeBSD

Prerequisites: libpcap packet capturing library, sox, and ogg encoder (directions soon to come)

1. Download the source code from#

# fetch http://www.enderunix.org/voipong/voipong-2.0.tar.gz

2. Un-tar the archive

# tar -zxf voipong-2.0.tar.gz

3. Go into the extracted directory

# cd voipong-2.0

4. Configure

If you want the in process ogg encoding you will need to apply a patch I made for ogg encoding VOIPONG 2.0.

# ./configure

5. Compile

# make

6. Install

# make install

That was easy!

Now you will need to configure the settings in voipong.conf

# vi /usr/local/etc/voipong/voipong.conf

Assign the correct values for sox paths ( if you are not sure type “which sox” at the command line )

soxpath = /usr/local/bin/sox
soxmixpath = /usr/local/bin/soxmix

Assign the correct value for your network adaptor ( I find it is easiest to just use two, one for net and one for packet sniffing. Check your dmesg output for the device name, or ifconfig )

device = fxp0

Assign the path you want the files saved to ( Dont forget to mkdir /usr/output )

outdir = /usr/output

Now you are ready to start up the program. To start it in the foreground for debugging, do the following:

# voipong -d4 -f

If the program starts up and you don’t see any errors, you are in good shape. If it doesn’t detect any phone calls you will need to configure your networking equipment to allow your interface to “see” all the other traffic. I am going to create directions on how to do this on a Cisco 3560 as soon as possible. You can also get a passive network tap, that would just go inline between your adaptor on the VOIPONG machine and the termination point (phone router). This program will not detect and record calls directly between two local phones (ie phone call inside your office from one internal extension to another)

For more help check the user manual.

Come back soon, as I just started this page and plan on adding more info as soon as I can.

Cheers! Happy packet sniffing!

OGG conversion Patch

While in the source directory

# fetch http://www.cruzinthegalaxie.com/voipong-oggenc.patch
# patch -p2 < ./voipong-oggenc.patch Cheers! Back to directions