Ethereal-dev: [Ethereal-dev] IPsec dissecting

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: "Dr. Uwe Girlich" <Uwe.Girlich@xxxxxxxxxxx>
Date: Tue, 25 Feb 2003 15:40:20 +0100
Hello list!

I'm currently working with IPsec and found, that Ethereal can only decode the
non-encrypted part of the IP packets. I'm willing to correct this, so when all
the necessary keys are provided, I hope to decode the full packet and give it
to the upper layers (TCP, UDP). A check of the authentication on the way will
also be easy to implement.

How it would be best to define a Security Association (SA) inside Ethereal?
Should I add IPsec preferences entries (there is no list element possible and
I have no idea how many SAs I encounter in a network trace file) or should I
better read the SA definitions in a self-made file format from a configuration
file? For all the non-IPsec-users: SA is basically based on an integer number
in every packet and the destination address. The resulting data contain the
encryption method+key and the authentication method+key. So we have a table
with something like

123 1.2.3.4 ESP -> des 0xdeadbeefdeadbeef + md5 0xdeadbeefdeadbeef
124 1.2.3.5 ESP -> 3des 0xdeadbeefdeadbeef + md4 0xdeadbeefdeadbeef
125 1.2.3.6 AH -> md4 0xdeadbeefdeadbeef
126 1.2.3.7 ESP -> null + md5 0xdeadbeefdeadbeef
...

I don't intend to get the keys from an IKE (ISAKMP) scheme.

The first step is implement the SA finding process and then comes the
authentication checking. After this I can finally start to decrypt the ESP part
of IPsec.

Bye, Uwe