From da9faabf9751b4a5e33332b3599ce58f90ddba5c Mon Sep 17 00:00:00 2001 From: bol-van Date: Fri, 16 Jan 2026 17:00:16 +0300 Subject: [PATCH] udpate docs --- docs/manual.en.md | 3 ++- docs/manual.md | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/manual.en.md b/docs/manual.en.md index 337c209..b205257 100644 --- a/docs/manual.en.md +++ b/docs/manual.en.md @@ -3825,13 +3825,14 @@ 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 mechanism. There are two RFCs. The older one assumes that th_urp points to the OOB byte, +- 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. To enable it, specify "urp=b". - "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. - Requires redirection of incoming traffic within `--in-range=-s1` - Cannot be filtered by payload because after the start it's not possible to stop and not to insert the byte. Inserting a byte without OOB breaks the data. - Hostlist filtering is only possible with `--ipcache-hostname`. +- oob is "lasting" desync. If profile switch occurs before oob is finished it must be duplicated to that profile or TCP will break because of sequence desync. - Can't work with functions that resend modified payload. multisplit, multidisorder, fakedsplit, fakeddisorder, etc will send duplicates without OOB. - If the payload is [multi-segment](#handling-multi-packet-payloads), the entire [reasm](#handling-multi-packet-payloads) is sent. OOB is inserted into the segment where urp hits. In this segment the th_urp is normalized by segment offset, the TH_URG flag is set. The rest of the parts are sent as is. The function drops the whole replay then [cuts itself off](#instance_cutoff). diff --git a/docs/manual.md b/docs/manual.md index 388dc39..476cb59 100644 --- a/docs/manual.md +++ b/docs/manual.md @@ -4019,6 +4019,7 @@ function oob(ctx, desync) - Требуется перенаправление входящего трафика в пределах `--in-range=-s1` - Не может быть отфильтровано по пейлоаду, поскольку после начала модификации tcp handshake соскок уже невозможен, иначе поедут sequence. - Фильтрация по хостлистам возможна только при `--ipcache-hostname`. +- oob - длящаяся десинхронизация. Если возможно переключение профилей до момента окончания работы oob, oob должен быть дублирован в другой профиль, иначе TCP будет сломан из-за десинхронизации sequence. - Не может работать с функциями, предполагающими отправку пейлоада - multisplit, multidisorder, fakedsplit, fakeddisorder и тд. Они будут работать, но будут слать дубль без OOB. - Если пейлоад [многопакетный](#особенности-приема-многопакетных-пейлоадов) - отсылается весь [reasm](#особенности-приема-многопакетных-пейлоадов). OOB вставляется в тот сегмент, куда попал urp. В этом сегменте th_urp нормализуется по смещению сегмента, выставляется флаг TH_URG. Остальные части шлются как есть. Функция дропает весь replay, затем уходит в cutoff по обоим направлениям.