Tutorial: GPRS Tunneling Protocol (GTP)

This tutorial discusses the plugin gtpDecode.


Before we start we need to prepare T2. If you did not complete the tutorials before just follow the procedure described below.

First I recommend to set T2 into a pristine state by removing all unnecessary or older plugins from the default plugin folder ~/.tranalyzer/plugins. Just as a precaution if you have some old plugins or files there. If you like to keep them, please copy them away.

$ t2build -e
Are you sure you want to empty the plugin folder '/home/wurst/.tranalyzer/plugins' (y/N)? y
Plugin folder emptied

Then compile the following plugins

$ t2build tranalyzer2 basicFlow gtpDecode txtSink


If you did not create a separate data and results directory yet, please do it now in another cmd window, it facilitates your workflow:

$ mkdir ~/data ~/results

Download the sample pcap here: . Now you’re all set.


Let’s look at the plugin configuration first:

$ gtpDecode
$ vi src/gtpDecode.h

Run t2 on the supplied pcap.

$ t2 -r ~/data/ -w ~/results/ -s

So the aggregated gtpStat currently has only one bit which states, there is GTP.

$ tawk -V gtpStat=0x01
The gtpStat column with value 0x01 is to be interpreted as follows:

   bit | gtpStat | Description
     0 | 0x01    | Flow is GTP
$ cd ~/results
$ tcol

Don’t forget to reset the plugin configuration for the next tutorial.

$ t2conf gtpDecode --reset && t2build gtpDecode

Have fun analyzing.