Intrig Xenon provides flexible, powerful and easy to use C++ API for decoding protocol messages.
Originally developed for 3G and 4G programmers and test engineers to decode their complex messages, the xenon decoder has evolved into a general purpose open source tool with an ever expanding protocol support base.
And, using XDDL, you can support your own proprietary message formats.
See xenon in action for yourself using the Intrig online decoder: intrig.com.
From a terminal, issue the following commands:
git clone --recursive https://github.com/intrig/xenon.git cd xenon make make test sudo make install
Windows requires the following steps:
-
Clone the xenon repo as above.
-
Using a recent version of Visual Studio, select menu item "File/Open/Folder…" and select the top level xenon directory.
-
Select menu item "Build/Build All"
-
Select menu item "Test/Run CTests" for xenon
This currently builds a static libary and there is no installation ability yet.
For building against the xenon library, you will have to add the xenon/include directory to your path, as well as the xenon/out/build/x64-Debug/include directory. The latter is needed to pick up the code generated xddl.h file.
-
C++17 or later compiler
-
Github desktop (for Windows only)
Link with the libxenon.so library, found in /usr/local/lib/x86_64-linux-gnu/libxenon.so
on Ubuntu.
The header files are found in /usr/local/include/xenon
.
The XDDL data files are found in /usr/local/share/xddl
.
See the xenon/examples
directory for some common uses of the decoder.
If you want to parse your own custom protocols, then the XDDL Reference is a complete reference containing useful examples.
Also, the tools directory contains useful examples, such as idm
and xv
. These
two programs are installed into /usr/local/bin
.
asnx
converts asn.1 PER files to xddl. It handles a subset of the asn.1 spec.
If there any problems please submit an issue.
For 3GPP specs, e.g. 36.331:
-
Download the latest pdf spec.
-
Save it to text file, e.g. 36.331.txt.
Ubuntu the pdftotext command can be used, for example:
pdftotext -nopgbrk -layout ts_136331v150700p.pdf 36.331.txt
-
Run: asn-strip -m 36.331.txt > 36.331.asn
-
Run: asnx -o TS-36.331.xddl -t 36.331.asn
Edit 36.331.asn by hand. Some of the lines may have been broken at '-' characters. Fix the errors by hand and run the above step repeatedly until you fixed the errors.
-
Add resulting xddl file to git.
Enjoy!