Python Scapy Ввести опцию TCP
Я пытаюсь создать пакет с опцией TCP под названием время ожидания пользователя. Scapy поддерживает это? Добавление таких параметров, как MSS, кажется довольно простым. Вот RFC для варианта: http://tools.ietf.org/html/rfc5482
Есть указатели?
1 ответ
Документация, кажется, не объясняет какой-либо способ установить произвольную опцию по номеру.
Копаясь в коде, похоже TCPOptionsField.i2m
позволяет вам сделать это, просто передав int
вместо str
, Итак, попробуйте использовать 28
те же места, которые вы использовали бы MSS
, Похоже, вам нужно скомпоновать оставшуюся часть поля опции как строку - длину, затем старший байт гранулярности UTO+, а затем младший байт.
Или просто измените код для обработки:
Я думаю, что вы хотите, чтобы кортеж TCPOptions в scapy/ Layers/ Inet.py:
TCPOptions = (
{ 0 : ("EOL",None),
...
28 : ("UserTimeout",!H)
},
{ "EOL":0,
...
"UserTimeout":28,
} )
Тогда вы можете (надеюсь) установить UTO так же, как и MSS.
В любом случае, вы несете ответственность за составление 1-битной гранулярности и 15-битного тайм-аута перед передачей результата в качестве значения параметра, но я думаю, что это проще, чем изменить его на кортеж bool и int в качестве опции значение и составление его внутри TCP.
Конечно, если вы не пропатчили ядро с обеих сторон и не убедились, что во входящей сети нет устройств, поддерживающих или удаляющих неизвестные параметры TCP, это все равно будет не очень интересно.