diff --git a/docs/manual.en.md b/docs/manual.en.md index 9f22182..e719563 100644 --- a/docs/manual.en.md +++ b/docs/manual.en.md @@ -3825,9 +3825,10 @@ After it's done it executes [instance cutoff](#instance_cutoff). Target OS throws away OOB byte from the stream but DPI may analyze message with OOB byte as it's part thus breaking the message. -- OOB is obsolete but still supported in most OS. There are two RFCs. The older one assumes that th_urp points to the OOB byte, -the newer one to the next byte. Therefore, the value th_urp=0 is invalid according to the new standard, but it can still work. +- OOB is obsolete but still supported in most OS. There are two RFCs. One assumes that th_urp points to the OOB byte, +another one - to the next byte. Therefore, the value th_urp=0 is invalid according to one of the standards, but it can still work. To enable it, specify "urp=b". +- Marker "urp" defines 0-based position of the OOB byte. Resulting th_urp , except the "b" case, is set incremented by 1. This is what most of the modern OS expect. - "urp=e" inserts an OOB byte after the very last byte of the payload - generally useless for DPI bypass, since DPI gets the entire original message. - For protocols in which the server initially waits for a client request, `--in-range=-s1` is enough. In Windows `--wf-tcp-in` is not needed. Automatically intercepted incoming packets with the SYN flag are sufficient. - For protocols in which the server sends data before the first message from client all incoming packets before that message should be intercepted. In Windows `--wf-tcp-in` is required. diff --git a/docs/manual.md b/docs/manual.md index 5c421ed..c99c0ef 100644 --- a/docs/manual.md +++ b/docs/manual.md @@ -4012,9 +4012,10 @@ function oob(ctx, desync) ОС получателя выбрасывает OOB байт из потока, DPI может не выбрасывать и получать оригинальное сообщение со вставленным в него посторонним байтом, что может портить смысл всего сообщения. -- OOB - устаревший, но все еще поддерживаемый в ОС механизм. Имеется 2 стандарта. Более старый предполагает, что th_urp указывает на байт OOB, -более новый - на следующий за ним байт. Поэтому значение th_urp=0 невалидно по новому стандарту, но все еще может работать. +- OOB - устаревший, но все еще поддерживаемый в ОС механизм. Имеется 2 стандарта. Один предполагает, что th_urp указывает на байт OOB, +другой - на следующий за ним байт. Поэтому значение th_urp=0 невалидно по одному из стандартов, но все еще может работать. Чтобы задействовать его укажите "urp=b". +- Значение маркера urp означает позицию самого OOB байта. th_urp , кроме случая "b", увеличивается на 1 - согласно интерпретации RFC, поддерживаемой в основных ОС. - "urp=e" вставляет OOB байт после самого последнего байта пейлоада - для обхода DPI как правило бесполезно, поскольку DPI получает все оригинальное сообщение. - Для протоколов, в которых в самом начале сервер ждет запроса от клиента, требуется разрешение входящих в пределах `--in-range=-s1`. В Windows `--wf-tcp-in` не нужен. Достаточно автоматически перехватываемых SYN. К таким протоколам относятся http и tls. - Для протоколов, где сервер что-то шлет до первого сообщения от клиента, требуется разрешить все входящие пакеты до отсылки первого исходящего пакета с данными. В Windows `--wf-tcp-in` обязателен.