byedpi/readme.txt
2023-07-07 22:22:40 +02:00

61 lines
No EOL
3.9 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Реализация некоторых способов запутывания DPI на Linux в виде SOCKS прокси
Пример использования:
$ ./ciadpi --method disorder --split-pos 3 --port 1080
Чуть более подробный текст "--help":
-i, --ip <ip>
Прослушиваемый IP, по умолчанию 0.0.0.0
-p, --port <num>
Прослушиваемый порт, по умолчанию 1080
-D, --daemon
Запуск в режиме демона
-f, --pidfile <file>
Записать PID в указанный файл
-c, --max-conn <count>
Максимальное количество клиентских подключений, по умолчанию 512
-N, --no-domain
Отбрасывать запросы если в качестве адреса указан домен
-U, --no-udp
Не проксировать UDP
-K, --desync-known
Отключить запутывание для нераспознанных протоколов (не HTTP или TLS)
-m, --method <s|d|f>
Способ десинхронизации TCP, комбинировать нельзя
split:
Разбить первый запрос на два по указанному смещению
Если смещение отрицательное, то считать относительно конца
Реализация: два вызова send, с разными частями буфера
disorder:
Как split, но части отправляются в обратном порядке
Реализация: устанавливаем TTL=1, отправляем первую часть, затем восстанавливаем значение TTL и отправляем вторую
(из-за низкого TTL первая часть не прибудет получателю и ОС выполнит ретрансмисию и снова отправит первую часть, но уже после второй)
fake:
Как disorder, только перед первым запросом отправляется поддельный такого же размера (т.е. равное значению split-pos)
Реализация: тут используется возможность перезаписи данных после вызова sendfile -
помещаем в буффер поддельные данные, вызываем sendfile с таким TTL, чтобы тот не дошел до сервера,
затем перезаписываем данные оригинальными, восстанавливаем TTL и отправляем вторую часть с помощью send
-H, --split-at-host
Если найден SNI или Host, то считать смещение относительно позиции домена
-t, --ttl <num>
TTL для поддельного пакета, чтобы тот не дошел до сервера, но был обработан DPI, по умолчанию 8
-l, --fake-tls <file>
-o, --fake-http <file>
-e, --fake-udp <file>
Указать свои поддельные пакеты, вместо дефолтных
-n, --tls-sni <str>
В качестве поддельного пакета для TLS используется заранее записанный ClientHello,
данный параметр модифицирует его, изменяя SNI на указанный
-M, --mod-http <h[,d,r]>
Всякие манипуляции с HTTP пакетом, можно комбинировать
hcsmix:
"Host: name" -> "hOsT: name"
dcsmix:
"Host: name" -> "Host: NaMe"
rmspace:
"Host: name" -> "Host:name\t"
-u, --desync-udp <f>
Способ десинхронизации UDP, реализован один метод - fake