Помогите, Уважаемые. Что-то у меня лыжи уже 3-й день не едут с расшифровкой одного значения пакета, перехваченного tcpdump-ом.клиент подключается по VPN (Linux, poptop, шифрование не используетя).
схема соединения:
[CLIENT 192.168.0.2 (192.168.10.2)]<->
[192.168.0.1 (192.168.200.1) SERVER NAT]<->
[77.234.201.242 OPENNET.RU]
в круглых скобках указанны адреса, используемые для текущего VPN-соединения.
ловим пакет на ethernet-интерфейсе, ч/з который подключен VPN-клиент:
tcpdump -t -n -e -i eth1 -X "dst host 192.168.0.2 and proto 47"
00:14:d1:52:78:e4 > 00:17:31:58:dc:fd, ethertype IPv4 (0x0800), length 317: IP 192.168.0.1 > 192.168.0.2: call 0 seq 2293 gre-ppp-payload
0x0000: 4500 012f be49 4000 402f fa02 c0a8 0001 E../.I@.@/......
0x0010: c0a8 0002 3001 880b 010f 0000 0000 08f5 ....0...........
0x0020: 2145 0001 0e97 d140 0035 06ca 914d eac9 !E.....@.5...M..
0x0030: f2c0 a80a 0200 509e 64e2 6f8c fd26 95ac ......P.d.o..&..
0x0040: 0250 18ff ff90 cd00 0048 5454 502f 312e .P.......HTTP/1.
0x0050: 3120 1.
анализируем:
-----------------------------
IP
-----------------------------
0x0000: 45..
=>
- версия протокола 4
- длина заголовка 5-ть 32-х битных слов (т.е заголовок без опциональных полей).
=>
данные заголовка:
0x0000: 4500 012f be49 4000 402f fa02 c0a8 0001
0x0010: c0a8 0002
как и ожидалось:
инкапсуляция = 0x2f = 47 (GRE)
IP src = 0xc0 a8 00 01 = 192.168.0.1
IP dst = 0xc0 a8 00 02 = 192.168.0.2
-----------------------------
GRE:
-----------------------------
0x0010: .... .... 3001
=>
SF = 0x30 >> 4 & 1 = 1 (+2 слова к заголовку)
AF = 0x01 >> 7 & 1 = 0 (+0 слов к заголовку)
=>
данные заголовка:
0x0010: .... .... 3001 880b 010f 0000 0000 08f5
версия GRE = 0x01 & 7 = 1
инкапсуляция = 0x880b = PPP
...
-----------------------------
ВНИМАНИЕ - ВОПРОС!!!
-----------------------------
0x0020: 21.. сразу после заголовка GRE.
уже тучу RFC перерыл и инета...
собственно с расшифровкой этого значения и застопорился. что за 0x21, откуда оно берется, что значит и какому заголовку относится?
по идее на этом месте должен быть PPP-заголовок?
далее опять все понятно и ожидаемо...
-----------------------------
IP
-----------------------------
0x0020: ..45
=>
- версия протокола 4
- длина заголовка 5-ть слов
=>
данные заголовка:
0x0020: ..45 0001 0e97 d140 0035 06ca 914d eac9
0x0030: f2c0 a80a 02..
инкапсуляция = 0x06 = 6 (TCP)
IP src = 0x4d ea c9 f2 = 77.234.201.242
IP dst = 0xc0 a8 0a 02 = 192.168.10.2
-----------------------------
TCP
-----------------------------
src port = 0x0050 = 80
...
собственно вот этот байт 0x21 @ 0x0020 никуда приткнуть и не могу. остальные поля во всех заголовках нормально расшифровываются, хоть я их и не приводил.
подскажите, где я лыжи не смазал?