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, это все равно будет не очень интересно.

Другие вопросы по тегам