diff --git a/docs/manual.md b/docs/manual.md index c021e24..2545cc1 100644 --- a/docs/manual.md +++ b/docs/manual.md @@ -620,12 +620,6 @@ nfqws2 <глобальные_параметры> или откуда он приходит. Если ему это удается - происходит проверка по списку сетей, если нет - условие фильтра не соблюдается, профиль не выбирается. Такая концепция позволяет работать даже если вы подключаетесь к нескольким wifi сетям на разных адаптерах. -> [!CAUTION] -> Основной способ получения SSID на Linux - через nl80211 был сломан с ядра 5.19 и не исправлен по настоящее время. -Дополнительный способ через wireless extensions работает, но API в процессе депрекации, многие ядра собираются без, поэтому определение SSID может не работать. -Для проверки nl80211 использовать `iw dev wlan0 info`, wext - `iwgetid wlan0`. Если ни одна команда не вернула корректный SSID, детект работать не будет. -iwgetid может не быть по умолчанию, нужно устанавливать wireless-tools. - В Windows концепция иная. Мониторится наличие указанных wifi сетей на всех wifi адаптерах, и если на любом из них SSID есть, перехват windivert включается, а иначе выключается. Чтобы обслужить wifi сети с разными стратегиями нужно запускать несколько истансов winws2. Один будет включаться, остальные - отключаться. Список SSID задается параметром `--ssid-filter`. @@ -640,3 +634,83 @@ iwgetid может не быть по умолчанию, нужно устан В остальных системах нужно копаться в powershell или лезть в реестр, чтобы раскидать подключения по нужным GUID, если вдруг они раскидались системой неправильно. Но можно и не бороться, а просто внести список GUID, назначенных системой автоматически. +## Вызов LUA кода + +LUA код вызывается в 2 этапа. + +1. Однократно при запуске программы через `--lua-init=code|@file`. Если значение параметра начинается с `@`, выполняется файл, иначе значение параметра является LUA кодом. +2. При обработке профиля через `--lua-desync=function_name:arg1[=val1]:arg2[=val2]:argN[=valN]`. +Сначала идет имя функции, затем через двоеточия аргументы и их значения. +Все значения являются строками. Если значение не задано, оно равно пустой строке. +Реализовано 2 типа автоматических подстановок на строне C кода. +`%var` подставляет значение переменной `desync.var` или `var`, если первая отсутствует. +`#var` подставляет длину переменной `desync.var` или `var`, если первая отсутствует. +Двоеточия и знаки `%`, `#` в начале могут быть эскейпнуты через `\`. + +И `--lua-init`, и `--lua-desync` может быть несколько. Выполнение производится строго в порядке указания. + +### Передача блобов + +Блоб - это двоичный блок данных любого размера, который может быть загружен в переменную LUA средствами C кода при старте программы. + +`--blob=:[+ofs]@|0xHEX` + +* `item_name` - имя переменной LUA. +* `[+ofs]@` - загрузка из файла со смещения ofs. +* `0xHEX` - загрузка из HEX строки + +Прямые операции с файлами из кода LUA не рекомендованы без необходимости. +LUA код выполняется с ограниченными правами, задуманное может не получиться или не работать на разных ОС в разных условиях. +Загрузка blob происходит до вхождения в песочницу, поэтому шансов на успех больше. + +### Внутрипрофильные фильтры + +Они бывают трех видов - `--payload`, `--in-range`, `--out-range`. +Значения фильтров действуют с момента их указания до следующего переопределения. + +* `--payload=type1[,type2][,type2]...` принимает список известных пейлоадов через зяпятую, "all" или "known". Список известных пейлоадов доступен в help тексте nfqws2. По умолчанию `--payload=all`. +* `--(in-range|out-range)=[(n|a|d|s|p)](-|<)[(n|a|d|s|p)]` задает диапазоны счетчиков conntrack по входящему и исходящему направлениям. По умолчанию `--in-range=x`, `--out-range=a`. + +Диапазоны задаются в формах : `mX-mY`, `mX