Ник Пост Дата
hufrea

Здесь вы можете задавать свои вопросы, предлагать идеи, обсуждать функционал и прочее.

2024-08-09T17:44:48.158Z
hufrea2024-08-09T17:51:03.843Z
anon94384997

Не компилируется, к сожалению.


cc -std=c99 -O2 packets.c main.c conev.c proxy.c desync.c -I . -o ciadpi
In file included from main.c:11:
./params.h:47:26: warning: backslash-newline at end of file
   47 | #define LOG(s, str, ...) \
      |                           
main.c: In function ‘main’:
main.c:205:35: error: ‘INT_MAX’ undeclared (first use in this function)
  205 |             if (val <= 0 || val > INT_MAX/4 || *end)
      |                                   ^~~~~~~
main.c:14:1: note: ‘INT_MAX’ is defined in header ‘<limits.h>’; did you forget to ‘#include <limits.h>’?
   13 | #include <packets.h>
  +++ |+#include <limits.h>
   14 | 
main.c:205:35: note: each undeclared identifier is reported only once for each function it appears in
  205 |             if (val <= 0 || val > INT_MAX/4 || *end)
      |                                   ^~~~~~~
main.c:269:23: error: ‘INT_MIN’ undeclared (first use in this function)
  269 |             if (val < INT_MIN || val > INT_MAX || *end)
      |                       ^~~~~~~
main.c:269:23: note: ‘INT_MIN’ is defined in header ‘<limits.h>’; did you forget to ‘#include <limits.h>’?
In file included from proxy.c:21:
./params.h:47:26: warning: backslash-newline at end of file
   47 | #define LOG(s, str, ...) \
      |                           
In file included from desync.c:21:
./params.h:47:26: warning: backslash-newline at end of file
   47 | #define LOG(s, str, ...) \
      |                           
desync.c: In function ‘fake_attack’:
desync.c:18:35: warning: implicit declaration of function ‘fileno’ [e]8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaratione]8;;]
   18 | #define memfd_create(name, flags) fileno(tmpfile())
      |                                   ^~~~~~
desync.c:30:15: note: in expansion of macro ‘memfd_create’
   30 |     int ffd = memfd_create("name", O_RDWR);
      |               ^~~~~~~~~~~~
desync.c:18:42: warning: implicit declaration of function ‘tmpfile’ [e]8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaratione]8;;]
   18 | #define memfd_create(name, flags) fileno(tmpfile())
      |                                          ^~~~~~~
desync.c:30:15: note: in expansion of macro ‘memfd_create’
   30 |     int ffd = memfd_create("name", O_RDWR);
      |               ^~~~~~~~~~~~
desync.c:32:9: warning: implicit declaration of function ‘perror’ [e]8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaratione]8;;]
   32 |         perror("memfd_create");
      |         ^~~~~~
desync.c:39:13: warning: implicit declaration of function ‘ftruncate’ [e]8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaratione]8;;]
   39 |         if (ftruncate(ffd, pos) < 0) {
      |             ^~~~~~~~~
desync.c:48:9: warning: implicit declaration of function ‘memcpy’ [e]8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaratione]8;;]
   48 |         memcpy(p, pkt.data, psz < pos ? psz : pos);
      |         ^~~~~~
desync.c:23:1: note: include ‘<string.h>’ or provide a declaration of ‘memcpy’
   22 | #include <packets.h>
  +++ |+#include <string.h>
   23 | 
desync.c:48:9: warning: incompatible implicit declaration of built-in function ‘memcpy’ [e]8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatche]8;;]
   48 |         memcpy(p, pkt.data, psz < pos ? psz : pos);
      |         ^~~~~~
desync.c:48:9: note: include ‘<string.h>’ or provide a declaration of ‘memcpy’
desync.c:59:9: warning: implicit declaration of function ‘usleep’; did you mean ‘sleep’? [e]8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaratione]8;;]
   59 |         usleep(params.sfdelay);
      |         ^~~~~~
      |         sleep
desync.c: In function ‘desync’:
./params.h:48:28: warning: implicit declaration of function ‘printf’ [e]8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaratione]8;;]
   48 |     if (params.debug >= s) printf(str, ##__VA_ARGS__)
      |                            ^~~~~~
desync.c:116:5: note: in expansion of macro ‘LOG’
  116 |     LOG(LOG_S, "host: %.*s\n", len, host);
      |     ^~~
desync.c:23:1: note: include ‘<stdio.h>’ or provide a declaration of ‘printf’
   22 | #include <packets.h>
  +++ |+#include <stdio.h>
   23 | 
./params.h:48:28: warning: incompatible implicit declaration of built-in function ‘printf’ [e]8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatche]8;;]
   48 |     if (params.debug >= s) printf(str, ##__VA_ARGS__)
      |                            ^~~~~~
desync.c:116:5: note: in expansion of macro ‘LOG’
  116 |     LOG(LOG_S, "host: %.*s\n", len, host);
      |     ^~~
./params.h:48:28: note: include ‘<stdio.h>’ or provide a declaration of ‘printf’
   48 |     if (params.debug >= s) printf(str, ##__VA_ARGS__)
      |                            ^~~~~~
desync.c:116:5: note: in expansion of macro ‘LOG’
  116 |     LOG(LOG_S, "host: %.*s\n", len, host);
      |     ^~~
desync.c:120:13: warning: implicit declaration of function ‘fprintf’ [e]8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration-Wimplicit-function-declaratione]8;;]
  120 |             fprintf(stderr, "mod http error\n");
      |             ^~~~~~~
desync.c:120:13: note: include ‘<stdio.h>’ or provide a declaration of ‘fprintf’
desync.c:120:13: warning: incompatible implicit declaration of built-in function ‘fprintf’ [e]8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatche]8;;]
desync.c:120:13: note: include ‘<stdio.h>’ or provide a declaration of ‘fprintf’
desync.c:120:21: error: ‘stderr’ undeclared (first use in this function)
  120 |             fprintf(stderr, "mod http error\n");
      |                     ^~~~~~
desync.c:120:21: note: ‘stderr’ is defined in header ‘<stdio.h>’; did you forget to ‘#include <stdio.h>’?
desync.c:120:21: note: each undeclared identifier is reported only once for each function it appears in
./params.h:48:28: warning: incompatible implicit declaration of built-in function ‘printf’ [e]8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch-Wbuiltin-declaration-mismatche]8;;]
   48 |     if (params.debug >= s) printf(str, ##__VA_ARGS__)
      |                            ^~~~~~
desync.c:129:5: note: in expansion of macro ‘LOG’
  129 |     LOG(LOG_L, "split pos: %d, n: %ld\n", pos, n);
      |     ^~~
./params.h:48:28: note: include ‘<stdio.h>’ or provide a declaration of ‘printf’
   48 |     if (params.debug >= s) printf(str, ##__VA_ARGS__)
      |                            ^~~~~~
desync.c:129:5: note: in expansion of macro ‘LOG’
  129 |     LOG(LOG_L, "split pos: %d, n: %ld\n", pos, n);
      |     ^~~
make: *** [Makefile:7: all] Error 1
2023-06-11T22:12:20.263Z
hufrea

Спасибо, поправил

2023-06-12T04:11:32.458Z
VasilyGrigoriev378(Василий Григорьев)

На провайдерах МТС,Yota,Теле2,Мегафон мне кажется такой инструмент не будет работать как положено,там DPI таки конченный у этих провайдров стоит что с горем попалам Zapret работает при блокировках по домену заглушку провайдера выдает часто.

2023-06-12T07:33:05.346Z
hufrea

Тестировал на Tele2, работает с такими параметрами “-m disorder -s 3” или “-m fake -t 5 -s -1”

2023-06-12T08:14:40.953Z
VasilyGrigoriev378(Василий Григорьев)

Предложение у меня по развитию программы, добавьте возможность обхода блокировки OpenVPN UDP/TCP ,ну и обход блокировки протокола Wireguard. Ну и на всякий пожарный еще обход возможной блокировки в будущем это IKEv2/IPsec

2023-06-13T05:44:11.007Z
fdsadf4345

А как это реализовать в openwrt ? Хотелось бы попробовать, проверить. Какую не будь инструкцию для юзеров вы бы написали, как установить и как настроить, было бы круто, а так догадайся сам, просто не реально.
Может какие нить пакеты нужно дополнительно поставить, сколько надо памяти свободной, ведь не каждый роутер подойдёт, никто этого никогда не пишет, такие кругом пишут инструкции, что не каждый профессор поймёт, как будто памятку пишут для себя чтоб не забыть. Это же нужно быть на одной волне, а если примерно понимаешь, то и в жизни никогда не поймёшь что это, куда и зачем. Я ни разу не видел вообще нормальной инструкции, нигде и никогда

2023-06-14T15:31:30.937Z
RapWolf

Потому что гитхаб в первую очередь для разработчиков, а не юзеров.
Инструкции по использованию обычно в документации, а то что у подобных тулз нет общей отдельной документации — это уже проблема категории ПО, так как оно хакерское.

Если для вас инструкции того же zapret’а не являются нормальными, то в принципе мало чего можно посоветовать. Зачастую у плюс-минус популярных репозиториев инструкции на гх не сильно уступают документации линукса; но, правда, намного хуже бсд — там вообще всё прекрасно и для всех.

У хакерского ПО инструкции это либо то, что написано в самом репозитории, либо ещё есть обсуждения на разных закрытых и не очень ресурсах. Если не хотите искать и вычитывать эти ресурсы или в целом разбираться, то скорее всего вам это и не нужно, используйте готовые решения, например, покупайте впн на v2ray/xray.

2023-06-14T17:27:48.290Z
hufrea

По сути все, что нужно сделать, это закинуть бинарник на устройство и запустить, параметры обхода можно подобрать с помощью blockcheck из проекта zapret и затем найти аналогичные в byedpi. Так как это socks сервер, то нужно настроить браузер/систему на работу через прокси или же использовать tun2socks. На роутерах я все же рекомендовал бы использовать zapret.

2023-06-14T19:11:08.204Z
anon94384997

Собрать на линуксе это можно так. На гитхабе зеленая кнопка Code - Local - Download ZIP - распаковать, войти в раскакованную папку в терминале командой cd (cd путь/к/byedpi)
Если установлен git, вместо скачивания zip, в терминале можно выполнить:
git clone https://github.com/hufrea/byedpi
Это склонирует репозиторий в рабочую папку.

Надо установить gcc и make с помощью пакетного менеджера дистрибутива. В Debian/Ubuntu и производных, это, например, Synaptic. Или в терминале.
sudo apt install git gcc g++ make binutils build-essential
build-essential дебиановский метапакет, он притащит с собой gcc и make.
В папке с исходниками выполнить make
Среди исходников появится бинарный файл ciadpi, всё остальное можно удалить.
Можно удалить отладочные символы, это уменьшит его размер.
strip --strip-unneeded путь/к/byedpi/ciadpi
А потом этот бинарник положить в PATH (например, /usr/local/bin или /usr/bin) на нужной системе. И тогда в терминале можно писать просто ciadpi

Но есть ограничения в переносе:

  • Новая система должна быть той свежести или новее. Если glibc будет старее, чем тот, с которым собирался бинарник, то так просто его не запустить. А посему имеет смысл собрать на более старом линуксе (например, в виртуалке).
  • Архитектура должна совпадаеть. Если openwrt на ARM, то собирать надо или в армовом линуксе (виртуалке?) или кросскомпилировать для ARM (как это сделать я точно не знаю). К слову, если собрать в 32 битном линуксе, можно запустить на 64 битном, доустановив в нем 32 битный glibc (для deb дистров: sudo dpkg --add-architecture i386 && sudo apt update && sudo apt install libc6:i386). Но не наоборот.

Это что касается компиляции. Запуск, настройка это другой вопрос. Тут пишут, что это прога предоставляет локальный прокси, который надо вписать в браузере. Для openwrt это не очень типичное использование, я так понимаю.

2023-06-15T04:51:48.084Z
VasilyGrigoriev378(Василий Григорьев)

На МТС и Мегафон не тестили работает ли ByeDPI там?

2023-07-02T12:21:24.968Z
bolvan

Мне кажется эта прога в принципе не работоспособна, судя по отсутствию требований к привилегиям и после беглого просмотра исходников.
Прогон показывает, что при любых ключах -m выполняется просто split. Отсылка частями кусков данных tcp, на первый из которых ставится низкий TTL. Что по логике спровоцирует SACK со стороны сервера (ведь он не получит 1 куска) и ретрансмиссию.
Никакого disorder или fake я не наблюдаю. Потому что их невозможно отослать через обычный SOCK_STREAM.
Собственно, ничего другого ожидать и не приходится, функционал сильно напоминает tpws --socks

Или я что-то не понял ?

2023-07-02T19:04:51.082Z
hufrea

Верно, отправляется первый кусок с низким TTL (в частности равное одному, чтобы даже до DPI не дошел, по сути это пустышка для ОС), затем второй с нормальным, второй доходит до сервера, первый нет, ОС выполняет ретрансмисию и снова отправляет первый кусок, итог - DPI обрабатывает сначала второй кусок, а затем только первый. Вот обрезанный вывод tshark:

Спойлер
1 192.1.1.1 → 209.2.2.2 TCP 74 63 → 80 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=64
2 209.2.2.2 → 192.1.1.1 TCP 74 80 → 63 [SYN, ACK] Seq=0 Ack=1 Win=28960 Len=0 MSS=1366 WS=128
3 192.1.1.1 → 209.2.2.2 TCP 66 63 → 80 [ACK] Seq=1 Ack=1 Win=64256 Len=0
4 192.1.1.1 → 209.2.2.2 TCP 69 63 → 80 [PSH, ACK] Seq=1 Ack=1 Win=64256 Len=3 // первый кусок с ttl=1, DPI и сервер пакет не видят
5 192.1.1.1 → 209.2.2.2 TCP 142 63 → 80 [PSH, ACK] Seq=4 Ack=1 Win=64256 Len=76 // второй кусок, сервер его получил
6 209.2.2.2 → 192.1.1.1 TCP 78 [TCP Window Update] 80 → 63 [ACK] Seq=1 Ack=1 Win=30080 SLE=4 SRE=80
7 192.1.1.1 → 209.2.2.2 TCP 69 [TCP Retransmission] 63 → 80 [PSH, ACK] Seq=1 Ack=1 Win=64256 Len=3 // опять первый кусок, на этот раз сервер его получает 
8 209.2.2.2 → 192.1.1.1 TCP 66 80 → 63 [ACK] Seq=1 Ack=80 Win=30080 Len=0
9 209.2.2.2 → 192.1.1.1 HTTP 1290 HTTP/1.1 200 OK
2023-07-02T20:11:07.913Z
bolvan

OK, с disorder я уже сам догадался. Но что с fake ?
Каким образом отослать fake, чтобы он дошел до DPI, но не дошел до сервера ?
Ведь все, что будет засунуто в TCP socket ОС будет доставлять до адресата, что собьет протокол

C TTL идея неплохая, может быть стоит добавить это в tpws.
Типа как лайт версия disorder без привилегий

2023-07-03T06:25:03.699Z
hufrea

А для fake используется вызов sendfile. Его особенность в том, что он не копирует данные в буфер ядра, а читает их напрямую из файла, притом данные во время вызова могут быть перезаписаны. И так: создаем файл в озу (memfd/tmpfile), записываем в него поддельные данные (допустим Client Hello с безобидным SNI), выставляем TTL таким, чтобы пакет прошел через DPI, но не дошел до сервера, и отправляем. Затем записываем в файл уже настоящие данные и восстанавливаем TTL - ОС не получает ответа (или получает SACK если пакет разбиваем на два) и снова отправляет файл, на этот раз в нем уже оригинальные данные и нормальный TTL - пакет успешно доходит до сервера. Конечно есть ограничение - фейк не может быть больше оригинала. Если использовать sendfile только до определенного смещение то порядок отправки будет такой:

  1. Первая фейковая часть
  2. Вторая настоящая часть
  3. Первая настоящая часть
2023-07-03T07:40:02.538Z
bolvan

disorder, действительно, работает. правда, на некоторых DPI на некоторых сайтах http вызывает подвисание, но это проблема некоторых DPI, и о ней мне известно.
ядро freebsd при аналогичной технике ведет себя несколько иначе, чем linux. сначала отсылает первую часть с TTL=1 (указанным), потом ретрансмиссия идет полная, а не частичная

а вот fake не похоже, что срабатывает у меня.

router: /tmp/ciadpi -p 1080 -m f
client: curl --socks5 router http://lenta.ru
router: tcpdump -ni wan -vX tcp port 80

не вижу fake. есть только split
проверил на router mips и виртуалке с ubuntu. на http и https

2023-07-03T09:14:30.604Z
hufrea

Дело в том, что sendfile используется для первой части пакета, а т.к. параметр split-position по умолчанию равен 3, то отправляются только первые 3 байта от фейка, стоит добавить параметр “-s -1” (разбить по предпоследнему байту)

2023-07-03T09:38:08.949Z
bolvan

да, так работает. думаю это надо отразить в документации, поскольку неочевидно

2023-07-03T09:43:02.730Z
bolvan

IP_TTL касается только ipv4
на ipv6 работает IPPROTO_IPV6, IPV6_UNICAST_HOPS
IPPROTO_IPV6, IPV6_HOPLIMIT - это не то.

2023-07-03T09:56:09.590Z
hufrea

ага, windows ведет себя также

спасибо, поправлю.

2023-07-03T10:28:45.738Z
bolvan

Кстати, на удивление macos ведет себя аналогично Linux, хотя вроде это и BSD

2023-07-03T10:35:04.079Z
bolvan

Не может быть гонок в этом коде с sendfile ?
Расчет идет на то, что вызов ядра sendfile до возврата отошлет данные или хотя бы скопирует куда-то.
nanosleep(0) - это просто передача управления следующему потоку в очереди планировщика.
время, после которого вернется nanosleep не гарантировано.
В этот момент копируется в буфер sendfile оригинальный блок данных.
Предполагается, что ядро еще раз обратится к буферу sendfile, чтобы его отослать.
Но когда это будет никто не может гарантировать.
Конечно, наиболее вероятно, что nanosleep вернется гораздо быстрее, чем возникнет необходимость повторной передачи.
Но еще непонятно что будет, когда второй send завершился, данные отправились в сокет, и после этого мы делаем munmap() и закрываем memfd.
Должно быть ядро делает dup() или что-то подобное, чтобы удержать буфер, пока он ему нужен, так что close() в проге не убивает реально буфер мгновенно.
Как вообще с надежностью данной схемы ?

2023-07-03T10:56:56.339Z
hufrea

TTL восстанавливается после того, как оригинал будет записан в файл, и если ядро каким-то образом захочет снова отправить данные до завершения nanosleep, то этот пакет тоже не дойдет до сервера из-за низкого TTL, что спровоцирует третью попытку. Однако вероятность этого очень мала, т.к. должно пройти время до ретрансмисии (0.2с) или должен быть полечен SACK, что не произойдет т.к. вторая часть отправляется в самом конце. Еще есть вероятность, что фейк не будет отправлен между вызовом sendfile и записи оригинальных данных с восстановлением TTL, чтобы это минимизировать и используется nanosleep, однако и это дает полную гарантию, что ядро успеет отправить фейк.

2023-07-03T11:53:35.052Z
bolvan

Наверно, имелось в виду НЕ дает полную гарантию.
Вот и я смотрю на этот код, и видится мне хак. Не предназначено это для таких попрыгушек
менять данные на лету без синхронизации с ядром на авось. Но возможно это на практике работает довольно стабильно.
Есть разные варианты. Быстрые/медленные/незагруженные/высоконагруженные/одно/многопоточные системы.
На них бы потестить
И еще на разной нагрузке на сам proxy. Я tpws тестировал в очень жестких режимах. До 10000 соединений, торенты через socks, броузер с кучей вкладок, курлы, качающие данные.
Вообщем ему не сладко приходилось, и надо было обеспечить отсутствие потерь кусков данных вследствие закрытий сокетов (буферизированная отправка)
Ну или сразу оговаривать, что режим потенциально ненадежен

2023-07-03T12:02:42.865Z
hufrea

да, так и есть

2023-07-03T13:19:19.192Z
Saiv46(Alexander Ivanov)

Спасибо большое за утилиту! А то у DPITunnel кривой HTTP-прокси, отчего не все сайты открываются с ним, а тут же привычный прокси SOCKS5/SOCKS4.

Мне хватает такой конфигурации:

/opt/ciadpi --method disorder --split-pos 3
2023-07-21T14:49:18.728Z
hufrea

Рад быть полезным

2023-07-21T19:18:50.115Z
bolvan

UDP associate over socks ?
Броузеры это поддерживают ?

2023-07-22T16:25:38.414Z
hufrea

насколько знаю - нет

2023-07-22T16:30:21.642Z
Saiv46(Alexander Ivanov)

Вышла новая версия - теперь сайты с IPv6 тоже открываются!

2023-07-31T18:29:51.606Z
bolvan

В windows имеет смысл все, что можно сделать в рамках stream (не packet) фильтра.
В т.ч. сплит и весь набор http дурилок. tlsrec, разумеется, тоже.
Packet filter уже реализован в goodbyeDPI, и без kernel драйвера его судя по всему не сделать
Кстати, tpws в режиме socks может работать под WSL

2024-02-19T12:02:20.482Z
hufrea

Конечно, однако до этого byedpi был неэффективен для tls, т.к. на многих провайдерах split не дает эффекта, disorder работает некорректно, а fake не поддерживается.

2024-02-19T13:22:37.709Z
Datura_metel(Datura metel)

As discussed in Section 2, the TCP urgent mechanism simply permits a
point in the data stream to be designated as the end of urgent
information but does NOT provide a mechanism for sending “out-of-
band” data.

Unfortunately, virtually all TCP implementations process TCP urgent
indications differently. By default, the last byte of “urgent data”
is delivered “out of band” to the application. That is, it is not
delivered as part of the normal data stream [UNPv1]
( Stevens, W., “UNIX Network Programming, Volume 1.
Networking APIs: Sockets and XTI”, Prentice Hall PTR, 1997.).
For example,
the “out-of-band” byte is read by an application when a recv(2)
system call with the MSG_OOB flag set is issued.

Most implementations provide a socket option (SO_OOBINLINE) that
allows an application to override the (broken) default processing of
urgent indications, so that “urgent data” is delivered “in line” to
the application, thus providing the semantics intended by the IETF
specifications.

2024-02-29T20:50:54.954Z
hufrea

Поэтому DPI и может обработать пакет как обычные данные.

И поэтому один байт не будет обработан сервером, за некоторыми исключениями

Конечно, если сервер устанавливает опцию SO_OOBINLINE или флаг MSG_PEEK, принимая обычные данные, то все сломается.

2024-03-01T12:01:40.695Z
ValdikSS

Один байт отбросит, если делать это вручную и следить за отправкой, но семантически oob-данные являются данными. Попробуйте отправить несколько пакетов с urgent-флагом подряд — они объединятся в один сегмент и придут в приложение обычным потоком.

Хак, безусловно, прикольный, но не настолько универсальный, как может показаться на первый взгляд.

2024-03-01T12:22:18.572Z
hufrea

Да, поэтому можно отправлять настоящие данные с флагом oob, и все они придут в обычный поток, за исключением последнего байта:
1-я часть с флагом oob:
…“\nHost: rutx” (сервер отбросит x)
2-я часть:
racker.org”…

2024-03-01T12:41:40.109Z
hufrea

К таким исключениям можно отнести некоторые средства защиты от ддос, в частности заметил поломку на QRATOR

2024-03-01T17:01:38.129Z
gfqwdgecewgcdw

Залей скомпилированную версию под винду с obb

2024-03-01T19:46:18.820Z
hufrea

byedpi-6b484d5.zip (31,7 КБ)

2024-03-01T20:03:38.167Z
gfqwdgecewgcdw

Большое спасибо

2024-03-01T20:09:39.400Z
bolvan

техники OOB и tlsrec работают в России в основном только на TLS1.3
На 1.2 rdp-шный DPI сечет ответ сервера и сбрасывает

2024-03-02T12:16:18.888Z
Elevator

А чем отличается данная прога от TPWS? На первый взгляд функционал обеих программ одинаковый

2024-03-08T20:41:35.915Z
hufrea

byedpi может быть менее стабильным, чем tpws, не содержит некоторых опций, таких, как hostlist, bind-wait и пр. Но он позволяет совершать более запутанные аттаки, такие как fake, отсылка нескольких oob байт подряд, разбиение по нескольким позициям.

2024-03-08T22:03:03.527Z
bolvan

Каким образом делается вывод, что ‘не удалось’ ?
В tpws для этого сечется несколько вариантов :

  1. RST, пришедший в ответ на первый запрос с хостом.
  2. HTTP редирект, пришедший в ответ на первый запрос с хостом, на глобальный адрес
    с доменом 2 уровня, не совпадающим с доменом 2 уровня оригинального запроса.
  3. закрытие соединения клиентом после отправки первого запроса с хостом, если не было на него
    ответа со стороны сервера. Это обычно случается по таймауту, когда нет ответа (случай “зависание”).

Окей, первые 2 варианта можно обыграть как-то. Придется держать входящий конект и переподключаться несколько раз, чтобы попробовать новый вариант. Сложновато, но реализуемо.
Но как быть с вариантом 3 ? Это очень распространенный вариант.
Броузеры долго висят в ожидании ответа. Придется вводить какой-то более короткий таймаут, чтобы самому попробовать несколько вариантов, оставляя броузер висеть в это время.
Но сколько ждать ?

IP сайта кэшировать не есть гуд. Они могут скакать и быть множественными. Может лучше домен ?
И что в случае перезапуска ? Нигде не сохраняется результат ?

2024-03-11T18:44:54.116Z
hufrea

Пока обрабатывается только RST на первый запрос.

Да, так я и реализовал.

В первую очередь я хотел решить проблему поломки сайтов из-за tlsrec/oob/disorder, когда сервер сразу сбрасывает соединение. Пока не уверен, нужно ли добавлять обработку заморозки соединения, т.к. высока вероятность ложного срабатывания - высокий пинг, подвисание всей сети, медленный wifi на расстоянии, сайт временно не доступен.

IP сохранять есть смысл при использовании --redirect, чтобы обходить блокировки по IP, когда под ним могут быть и другие невинные сайты. Могут быть случаи невозможности определения домена (запутываются и другие протоколы, ESNI). Но да, IP может быть много, возможно добавлю кеширование доменов, с возможностью добавление IP, если нет домена.

Не сохраняется, и сами значения в кеше тоже валидны лишь несколько часов. Это сделано для того, чтобы кеш был актуальным, например, при чередовании провайдеров или при масштабных сбоях/временных блокировках, которые в последнее время часто случаются. При обработке только RST, новый перебор каждые несколько часов/суток некритичен, т.к. не занимает много времени.

2024-03-11T19:34:19.661Z
bolvan

Без этого на многих провайдерах затея полностью теряет смысл

curl --max-time 5 https://rutracker.org
curl: (28) Connection timed out after 5000 milliseconds
curl --max-time 20 http://bbc.com
curl: (28) Operation timed out after 20001 milliseconds with 0 bytes received

sknt и rostelecom SPB ведут себя так.
Он даже не удосуживается огрызнуться RST. Он отмораживается молча. Вот еще. Буду я на тебя ресурсы тратить. Не дождешься, виси там себе, тупи сколько влезет

На http самая типичная реакция - не RST, а именно редирект

Чредование провайдеров это смена wifi или wifi/cell ?
Так оно может случаться куда быстрее нескольких часов. Это скорее надо как-то детектить, если очень уж хочется.
Таблица маршрутизации доступна и без рута. Можно смотреть default gateway. ip4 и ip6
Можно даже не заморачиваться с netlink. Есть /proc/net/route и /proc/net/ipv6_route
Если поменялся gateway, то сбрасывать кэш. Возможно, стоит смотреть не полностью эту запись, а только название интерфейса default gateway, чтобы различать cell и wifi. Ведь сотовик может дать разные подсети при каждом подключении. Тут хорошо бы потестить на разных операторах, подергать подключение.
Еще лучше - держать разные кэши для разных подключений. Потому что скакать оно может иногда довольно часто.
Аппарат перемещается, то входит в зону wifi, то выходит, плохой прием wifi или cell

2024-03-12T06:15:05.250Z
hufrea

На таких можно делать наоборот - запутывать все подключения, а исключать лишь поломанные сайты (которые, в основном, сразу присылают RST):
./ciadpi --tlsrec 3+s --auto

Это так, сходу привел в пример, как одна из причин устаревания кеша, особо данный случай не расматривал, но спасибо за идею. Кажется, подобное лучше реализовывать не внутри прокси, а снаружи (на android за это может отвечать приложение). Наверняка на разных провайдерах будут работать разные методы, тут скорее нужны профили и переключение между ними. Например, на мобильном хорошим вариантом будет обнаруживать блокировки, а на wifi, где соединение замораживается, обнаруживать только поломки. тогда нужно будет перезапускать прокси с разными параметрами для разных сетей.

2024-03-12T09:25:48.391Z
hufrea

Все же добавлю таймаут, но включаться он будет на усмотрение пользователя (не везде это нужно). Думаю оптимально будет 2-3 секунды, но если увеличивать его, то желательно и время жизни кеша увеличить.

2024-03-12T13:02:08.003Z
Dhowti(Eugene)

В винде --fake невозможен? Похоже, это единственное, что может пробить моего провайдера.

2024-03-17T03:49:47.784Z
bolvan

goodbyedpi умеет

2024-03-17T06:53:37.040Z
hufrea

В byedpi он не поддерживается, но, возможно, в теории, его можно как-то реализовать из пользовательского пространства, хотя я сильно сомневаюсь.

Что насчёт tlsrec или oob?
ciadpi --oob 10+s --tlsrec 1+s

2024-03-17T13:17:48.669Z
hufrea

Да, это возможно, используя TransmitFile. Возможно, скоро добавлю поддержку --fake и на Windows

2024-03-17T17:50:32.175Z
Dhowti(Eugene)

О, работает! Я пробовал эти параметры, но с другими числами. Гран мерси!
Вообще, у меня GDPI давно стоит, но прокси мне удобнее. Особенно с новым параметром --auto.
Кстати, у меня категорически отказывается работать ciadpi на портах из первых тысяч, хотя порты свободны. Поставил 10800, работает, но странно это.

2024-03-17T23:24:28.228Z
hufrea

Какая ошибка выводится?

А вот и тестовая версия:
byedpi-3da60eb.zip (51,8 КБ)
Ограничения те же, что и на Linux

2024-03-17T23:45:07.391Z
Dhowti(Eugene)

10013
5000+ ставил, работает.

2024-03-17T23:52:26.233Z
Dhowti(Eugene)

ciadpi --auto --timeout 3 --oob 8+s --tlsrec 1+s --fake 3+s --ip 127.0.0.1 --port 10800
В общем, так всё открывается вроде, что нужно. Кроме rutor.info, hdrezka.ag, но туда особо и не хожу, просто проверял. Я так понимаю, это просто сами сайты ломаются? Что интересно, Instagram через GDPI открывается только с IP 157. в hosts, а с byDPI без разницы IP.

2024-03-18T00:15:46.172Z
bolvan

Этот не поддерживает TLS 1.3. Техники обхода без фейков могут не работать на TLS 1.2, поскольку сечется ответ сервера

2024-03-18T06:42:30.556Z
Dhowti(Eugene)

Точно, поэкспериментил на других таких сайтах, типа exler.ru. А значит, fake у меня вообще не работает? Убрал его, вернул, что есть, что нет.

2024-03-18T07:35:28.607Z
bolvan

Смотрите шарком tcp port 443.
Методика отсылки фейка в byedpi потенциально ненадежна, а может просто не обходится таким методом у вас.
А еще фейк требует какого-то ограничительного фактора. Им может выступать TTL. TTL нужно подбирать как минимально работающее значение на вашем провайдере

2024-03-18T08:00:54.959Z
hufrea

Очень избыточно, так можно и заблокированные сайты сломать. --fake 3+s тут совсем не нужен, т.к. на данной позиции будет заголовок tlsrec. Лучше проверить по отдельности, какие методы дают эффект для большинства сайтов. Например, если много где работает tlsrec, а где-то лишь fake, то использовать примерно вот такой конфиг:
ciadpi --auto --tlsrec 1+s --auto --fake -1
Можно еще попробовать такой вариант disorder

Да и фейки не везде работают

Да, можно сразу начать с 32-64, если прилетит ошибка(TLS Alert)/ServerHello, значит исходящий трафик мы можем так запутать. Затем можно перебирать бинарным способом: 16 - ошибка, понижаем; 8 - блокировка, повышаем; 12 - ошибка, понижаем; 10 - успех; 9 - блокировка, оставляем 10.

2024-03-18T10:34:43.572Z
Dhowti(Eugene)

Да я fake быстро убрал, потом вернул из-за сайтов с TLS 1.2 и снова убрал. Пробовал и по отдельности, видимо, с виндой действительно проблемы. На телефоне на этом провайдере работает --fake с --ttl 3, на компе никак.
Дамп пока не делал, пока работают большинство нужных сайтов и ладно.
upd: TTL для фейков вообще ничего не меняет от 64 до 1, наверное, всё-таки не работает это.

2024-03-18T10:46:28.436Z
hufrea

С какими параметрами запускали? Как версия системы? Есть ли ошибки в логах?

2024-03-19T22:20:06.550Z
tun(tun)

Работает с параметрами --fake -1 --ttl 9 под windows 11)

2024-03-20T17:02:04.948Z
hufrea

Даже если фейк пакет дошел до сервера, то это не еще конец, главное не допустить выгрузки буфера в приложение. Данные в буфере ядра можно перезаписать, отправив еще один пакет, пересекающийся с предыдущим по SEQ. Надежный способ избежать выгрузки - сделать пробел в буфере. И тут полная ретрансмиссия в Windows превращается в преимущество.
ciadpi --disorder 1 --fake -1 --ttl 64
Первый байт не будет доставлен из-за disorder. Затем будет отправлен фейк, который будет принят сервером, но не доставлен приложению, из-за отсутствующего байта. После система выполнит полную ретрансмиссию с оригинальными данными и перезапишет фейк.

2024-04-05T17:01:19.964Z
bolvan

Не проверял как ведут себя разные ОС при частичной перезаписи данных in-window ? Переписывают или старое держат ? В сокет, как я понимаю, отправляют сразу же после появления законченного куска любой длины ?

2024-04-06T06:35:56.177Z
hufrea

Только на Linux проверял, перезаписывать лишь часть уже доставленного пакета не пробовал, это уже с raw нужно делать, но предполагаю, что это возможно.

Да. Отправлял пакеты без флага PSH - все равно, сразу попадают в сокет, хотя, прям маленькие кусочки не пробовал.

2024-04-06T14:37:26.349Z
ValdikSS

Документ 1998 года.

image

2024-04-09T11:08:54.973Z
lufog(Aleksey Smirnov)

Никак не удается подружить ByeDPI с сайтом провайдера/локальными ресурсами. Ибо единственный нормально работающий у меня обход это --fake -1 --ttl 3, но с ним любой локальный ресурс провайдера выдает ERR_CONNECTION_CLOSED. Что не очень удобно, ибо, чтобы посмотреть баланс, приходится все отключать. Да и в локалке есть интересные ресурсы вроде Синемы с каким-то нереальным количеством сериалов/фильмов.

Пробовал ciadpi --auto --disorder 1 --fake -1 --ttl 3 вроде и работает, а вроде и нет. Где-то грузит картинки не с первого раза (например вместо аватарок на YouTube серые кружочки), напрягает, не сильно, ибо случается редко. А где-то картинки не грузит вообще (ERR_TIMED_OUT), пока не уберешь --auto чтобы все сразу в обход шло, что ломает сайт провайдера. Пробовал --auto со всеми возможными параметрами, и в конец ставить, в надежде что все будет работать через --fake, а что сломалось напрямую, но увы так не работает.

Очень нехватает функции вайтлиста. Старикам ставил форк GoodbyeDPI с впиленым вайтлистом, сильно удобней раз добавить сломанные локальные ресурсы, чем постоянно дополнять блеклист сломанными сайтами.

2024-04-21T13:19:15.187Z
hufrea

А вы пробовали использовать параметр --timeout?

Будет в следующем релизе, который, возможно, уже завтра.

2024-04-21T14:54:23.142Z
lufog(Aleksey Smirnov)

Как-то я его упустил совсем, с ним заработало! А какое значение лучше поставить? Поставил 5 вроде все грузит.

В общем я, как обычно, не разобрался до конца. У меня похожая ситуация с --fake была, пока не допер что --ttl тоже подбирать надо. Разбаловал меня GDPI своими прессетами, а DPI Tunnel своим автоподбором метода обхода. :smile:

2024-04-21T15:21:44.245Z
hufrea

При низких значениях сайт быстрее окажется в кеше, т.е. задержка при первом открытии будет меньше, однако могут быть ложные срабатывания, думаю 3-5 секунд будет оптимально.

Так-то это может быть непросто, ведь подробной документации я не оставил.

2024-04-21T16:17:30.473Z
kitebo

Здравствуйте! Позвольте внести небольшое предложение.
Ваш пример с гитхаба:

–late-conn --hosts ‘:one.one.one.one’ --dst 1.1.1.1 --disorder 3 --auto=none --auto=torst --timeout 3 --tlsrec 1+s
Для указанного домена применять disorder, подключаясь только на указанный IP и игнорируя адрес из запроса.
Для остальных ничего не делать, однако если обнаружится блокировка, то попробовать применить tlsrec.

А нельзя ли изменить такое поведение? Чтоб домены, перечисленные в --hosts, не обрабатывались даже при обнаружении блокировки. Т.е. сделать их “неприкасаемыми”, скажем так.
Пример:
./ciadpi --hosts ‘:example.com’ --auto=none --auto=torst,redirect --fake -1 --ttl 4
, где example.com не обрабатывается даже при обнаружении блокировки (в текущей реализации программы он обрабатывается).

2024-05-21T05:21:39.795Z
hufrea

Здравствуйте.
./ciadpi --auto=torst --hosts ':example.com' --auto=none --fake -1

2024-05-21T11:47:52.721Z
kitebo

Что-то не то…При такой комбинации перестают обрабатываться вообще все заблокированные сайты.
Загвоздка где-то в auto=none, оно словно обрезает последующую команду.

Можно, конечно, сделать так:
./ciadpi --hosts ‘:example.com’ --auto=none --fake -1

  • т.е. без первого auto, в этом случае example.com не обрабатывается (что и требуется), но при этом безусловно обрабатываются все хосты, включая незаблокированные - что в лучшем случае просто излишне, а в худшем может что-нибудь и поломать.
2024-05-21T13:11:04.065Z
hufrea

Точно, так не работает. Как раз думал немного изменить логику, т.к. в текущем виде все немного запутанно (сам вот ошибся), я учту ваше предложение.

2024-05-21T21:35:39.381Z
progman_dt(Progman)

Кто-нибудь сумел подобрать параметры для более-менее стабильного обхода замедления ютуба?
–disorder 3 работает в лучшем случает через раз.

2024-07-21T17:41:54.187Z
hufrea

Если у вас Windows, то там обычный disorder не работает (точнее работает криво), его следует совмещать со split:

2024-07-22T10:19:08.449Z
Zerogoki(Zero Goki)

Интересно, а pbs.twimg.com (картинки в твиттере) на своей стороне блокирует российские айпи? Туда только через впн можно пробиться, byedpi не помогает. В реестре вроде нет даже этого домена

UPD: после того как поигрался с параметрами split position и TLS record split position — заработало. Интересно, учитывая что все остальные заблоченные сайты открывались даже на настройках по умолчанию.

2024-07-23T10:08:12.685Z
Zerogoki(Zero Goki)


При включенном byedpi на некоторых сайтах отваливается TLS. Приходит вот такой странный сертификат вместо настоящего. В чем может быть причина?

2024-07-23T19:52:30.891Z
hufrea

Скорее всего это из-за tlsrec. Он ломает некоторые сайты, поэтому его следует использовать лишь на заблокированных.

2024-07-24T04:40:22.366Z
spv82

Попробовал собрать под OpenWrt 21/22/23, вдруг пригодится. Пакеты .ipk здесь - Releases · spvkgn/ByeDPI-OpenWrt · GitHub

2024-07-24T16:37:29.288Z
HannahHanoi(Hannah Hanoi)

На отдельном устройстве запущен ciadpi с параметрами –fake -1 --md5sig
На этом устройстве Ютюб работает без проблем. Если попытаться начать смотреть видео на другом устройстве, предварительно настроив прокси, то Хром сыпет ошибками 403 при попытке достучаться к googlevideo.com, FF выдает ошибку NS_BINDING_ABORTED. В какую сторону копать?

2024-08-03T14:47:36.353Z
Dhohbr

На чем у вас byedpi поднят, на Linux? net.ipv4.ip_forward включен?

2024-08-03T15:32:17.526Z
HannahHanoi(Hannah Hanoi)

Включен.

2024-08-03T15:47:38.216Z
Dhohbr

С других устройств телнет на порт прокси проходит?
Попробуйте поиграть с настройками QUICK и Kyber в браузере. Отключить временно плагины, фаервол, антивирус, чтобы исключить их влияние.
У меня такая же схема как у вас, только я использую один параметр -d 1, этого пока хватает.

2024-08-03T16:14:16.610Z
Sanek184

Круто. --obb вообще классно себя показывает в работе.

2024-08-07T17:16:04.323Z
sakontwist

У меня отлично работает (все сайты, YT в браузере и YT на android) только при определенном сочетании “-d1 -s3”.
Если увеличить сплит до 4 - 7 уже проблемы на android, если поменять местами “-s3 -d1” - проблемы в Лисе.

Интересно, как конкретно работает отсылка с “-d1 -s3” ? Это 2-XX, 2-3, 4-XX, 1 ? В чем разница если поменять местами -d и -s (и есть ли она)?

2024-08-07T19:02:06.124Z
hufrea

1-3 → 3-e → 0-1
Если наоборот, то сработает только -s 3 (-d 1 не сработает, т.к. первый байт уже отправлен).

2024-08-07T20:08:10.542Z
sakontwist

Спасибо, теперь понятно, почему -s -d не спасает )

2024-08-07T20:15:00.093Z
inflame

Не получается заставить работать в связке с tun2socks: byedpi вылетает с первой же попытки подключения, достигнув исчерпания файловых дескрипторов:

<...>
accept: fd=1019
new event: fd: 1017, evt: EV_DESYNC, mod_iter: 2413
desync params index: 0
host: x.com (22)
split: pos=0-2 (2), m: DESYNC_DISORDER
send: pos=2-68
new event: fd: 1019, evt: EV_REQUEST, mod_iter: 2417
new event: fd: 1019, evt: EV_REQUEST, mod_iter: 2417
new conn: fd=1020, addr=104.244.42.1:80
new event: fd: 1020, evt: EV_CONNECT, mod_iter: 2420
new event: fd: 3, evt: EV_ACCEPT, mod_iter: 0
accept: fd=1021
new event: fd: 1019, evt: EV_DESYNC, mod_iter: 2417
desync params index: 0
host: x.com (22)
split: pos=0-2 (2), m: DESYNC_DISORDER
send: pos=2-68
new event: fd: 1021, evt: EV_REQUEST, mod_iter: 2422
new event: fd: 1021, evt: EV_REQUEST, mod_iter: 2422
new conn: fd=1022, addr=104.244.42.1:80
new event: fd: 1022, evt: EV_CONNECT, mod_iter: 2424
new event: fd: 3, evt: EV_ACCEPT, mod_iter: 0
accept: fd=1023
accept: No file descriptors available
exit

Запускал так:
ciadpi -x 2 -i 127.0.0.1 -p 10801 -d 2
tun2socks -device tun0 -proxy socks5://127.0.0.1:10801 -interface enp4s0
При этом сам по себе byedpi с такими параметрами работает. Также работает и tun2socks в связке с shadowsocks. То есть не получается подружить именно byedpi с tun2socks.

В чём может быть проблема?

2024-08-08T17:58:06.684Z
mike7

Может параметр - interface для tun2socks не нужен? Shadowsocks тоже на localhost “сидел”?

2024-08-08T20:02:46.152Z
l8l

У меня видимо глупый вопрос. Можно ли просто сделать чтобы сайты быстрее открывались? т.е. чтобы DPI не мог шерстить трафик не лез в личную жизнь. И может ли такой вопрос касаться и udp протокола тоже?

2024-08-09T05:28:41.398Z
inflame

Может параметр - interface для tun2socks не нужен? Shadowsocks тоже на localhost “сидел”?

Без параметра -interface тоже не работает. Shadowsocks запущен также, как byedpi, на 127.0.0.1, и через него работает.

2024-08-09T06:01:17.125Z
Sanek184

Хотел спросить вот тут –auto=none в конце лишняя или нет, так как работает и так и так, но как синтаксически верно ?:
ciadpi.exe -i 127.0.0.1 -p 10800 --hosts russia-youtube.txt -s 2 --auto=none --hosts russia-blacklist.txt -o 2 –auto=none

2024-08-09T07:46:15.985Z
hufrea
Спойлер

Если коротко, вот решение:

useradd ciadpi
usermod -g mygroup ciadpi

ip r add default via 192.168.1.1 dev enp4s0 metric 1 table 110
ip rule add uidrange 1001-1001 lookup 110 pref 29000

sudo -u ciadpi ciadpi -i 127.0.0.1 -p 10801 -d 2

1001 - uid нового юзера.
192.168.1.1 - ваш шлюз.

2024-08-09T13:07:28.837Z
hufrea

Правильно с –auto=none, но и без будет работать, т.к. при использовании ограничителей создается пустая группа, на случай, если –auto=none забудут прописать.

2024-08-09T13:15:39.482Z
khorovodoved

Скажите, пожалуйста, а просто “–auto” без “=torst”, “=none” и т.п. вообще что-либо делает?

2024-08-09T17:19:58.109Z
hufrea

--auto без параметров эквивалентен --auto=torst, сделано так ради совместимости с предыдущей версией, где был просто -A без аргументов. Однако так писать лучше не стоит.

2024-08-09T17:31:03.108Z
dovecoteescapee(dovecoteescapee)

Подскажите, отсутствие --proto эквивалентно указанию его со всеми возможными параметрами?

2024-08-10T09:31:52.395Z
hufrea

Нет, без --proto обрабатываются любые протоколы (а с ним только HTTP, TLS и UDP).

2024-08-10T10:29:28.549Z
Sanek184

попробовал --proto с разными значениями tls,http,udp и все что не поставь одно - все равно работает -o 2, так и должно быть ? а то вроде получается, что все равно все протоколы обрабатываются

2024-08-10T19:53:21.014Z
hufrea

Как именно? Как выглядит командная строка?

2024-08-10T21:50:06.219Z
Sanek184

ciadpi.exe -i 127.0.0.1 -p 10800 --proto=tls -o 2
ciadpi.exe -i 127.0.0.1 -p 10800 --proto=http -o 2

2024-08-11T03:46:05.830Z
EBKJIUD(EBKJIUD)

--auto=t,r,c,s,a

Работает ли такая конструкция?

2024-08-12T23:17:54.585Z
hufrea

Да

2024-08-13T14:51:24.998Z
hufrea

Проверил эту команду, работает корректно.
Что в логах?

2024-08-13T14:57:00.310Z
Sanek184

Вот, я просто не пойму при “ciadpi.exe -i 127.0.0.1 -p 10800 --proto=tls -o 2” - не должно же ничего работать ? просто все работает хоть что прописать в proto из доступных опций, что получается все порты итд

2024-08-13T14:59:58.560Z
hufrea

Должен обходиться весь TLS.
Поставьте --proto=udp, тогда обход работать не будет.
Судя по логам, все работает правильно.

2024-08-13T15:04:35.653Z
Sanek184

Да, сейчас с http,udp не работает, вчера срабатывало… возможно это keep-alive или что-то остаточное было (много что экспериментировал вчера) Извиняюсь.

2024-08-13T15:24:57.799Z
Sanek184

Я все хотел заставить работать rezka.ag (не принципиальна ее работа, но мало ли будут подобные ситуации с другими сайтами).
В GoodbyeDPI с пресетом -9 она работает, а в byedpi всякие комбинации пробовал -не хочет.

2024-08-13T15:58:51.019Z
hufrea 2024-08-13T16:57:01.359Z
TesterTi(TesterIt)

Добрый вечер! Почему-то падает с параметром fake ciadpi.exe -f -1
f

2024-08-13T17:55:33.742Z
hufrea

А какая у вас версия стоит (ciadpi.exe --version)? Возможно это та ошибка, которая в 0.11.2 была исправлена.

2024-08-13T21:48:43.465Z
TesterTi(TesterIt)

Самая последняя v0.12, запускаю на win7x64. Причем и на 11.1 и на 11.2 также падает

2024-08-13T22:48:18.627Z
EBKJIUD(EBKJIUD)

Остановился на таком варианте 8))):

-u 120 -a 2 -T 0.25 --hosts /opt/zapret/youtubelist -o 2 --auto=n --proto=t,h,u --auto=t,r,c,s,a --proto=t,h,u -f -1 -r 2+s -n www.iana.org -t 8 --auto=t,r,c,s,a --proto=t,h,u -d 2+s --auto=t,r,c,s,a --proto=t,h,u -s 2 --auto=t,r,c,s,a --proto=t,h,u -o 3+s --auto=t,r,c,s,a --proto=t,h,u -d 2 --auto=t,r,c,s,a --proto=t,h,u -s 2+s --auto=t,r,c,s,a --proto=t,h,u -f -1 -r 2 -n www.iana.org -t 8

RockyLinux 9 spb sknt

2024-08-13T23:24:41.886Z
EBKJIUD(EBKJIUD)

С этими комбинациями работает, хотя вру видосики нет

2024-08-13T23:27:27.763Z
Datura_metel(Datura metel)

desync.c:144

    int ffd = memfd_create("name", O_RDWR);

Isn’t O_RDWR equal to MFD_ALLOW_SEALING ?

2024-08-14T00:21:25.885Z
Sanek184

Завелось с -f -1 -r 2+s -t 8 и видосы показывает.
Вот так выглядит сейчас у меня:
ciadpi.exe -i 127.0.0.1 -p 10800 -H tls.txt -K t,h,u -f -1 -r 2+s -t 8 --auto=none -H russia-youtube.txt -K t,h,u -o 2 --auto=none -H russia-blacklist.txt -K t,h,u -o 2 --auto=none

2024-08-14T04:28:03.817Z
Sanek184

voidboost.cc нужно также добавить с такой же фрагментацией, чтобы видео показывались на резке
image

2024-08-14T12:05:50.805Z
TesterTi(TesterIt)

Кажется, не работает или что-то не так делаю?
Запускаю с --tlsrec 3+sni, https://www.fontanka.ru выдает ошибку сертификата
Запускаю с --split 2 --disorder 7, https://www.fontanka.ru открывается без ошибок
Запускаю с --tlsrec 3+sni --auto=t,r,c,s,a --split 2 --disorder 7 https://www.fontanka.ru выдает ошибку сертификата. т.е. --auto=t,r,c,s,a не срабатывает?

2024-08-14T12:21:23.835Z
Sanek184

–split 2 --disorder 7 --auto=t,r,c,s,a -T 1 --tlsrec 3+sni https://www.fontanka.ru

Но --auto=t,r,c,s,a не всегда определяет, что сайт не открывается, --tlsrec 3+sni уже ломает сайт и продолжать на --split 2 --disorder 7 уже нет смысла.

2024-08-14T12:33:50.172Z
EBKJIUD(EBKJIUD)

Обратную бы логику добавить
-H, --hosts
Чтобы не применять определенную группу для определенных доменов, которые могут ломаться в ней.

Пока думаю, поднять несколько процессов на разных портах и заруливать нужное, но так больше телодвижений.

Конфилктовать не должны процессы на одном юните?

2024-08-14T13:48:32.442Z
hufrea

Equal. There shouldn’t be a flag there at all, thanks.

2024-08-14T14:45:13.924Z
hufrea

Можно же поменять порядок групп. --hosts ignore.txt --auto=none --tlsrec 1

2024-08-14T14:53:55.293Z
Sanek184

Зачем ? Можно создать сколько угодно txt и в них сайты, каждый с разной фильтрацией - это кстати еще один огромный плюс данного приложения

2024-08-14T14:57:17.838Z
EBKJIUD(EBKJIUD)

Извиняюсь затупил… Действительно, усложнил в голове себе, очевидно же просто то что не работает, отдельным списком в начало и подбирать нужный метод.

2024-08-14T15:38:50.510Z
EBKJIUD(EBKJIUD)

я так понимаю вся неопределеность возникает на torst, все остальные тригеры, гарантированно дают результат 1\0 для продвижения дальше

        torst   : Вышло время ожидания или сервер сбросил подключение после первого запроса
        redirect: HTTP Redirect с Location, домен которого не совпадает с исходящим
        cl_err  : HTTP ответ, код которого равен 40x, но не 429
        sid_inv : session_id в TLS ServerHello и ClientHello не совпадают
        alert   : TLS Error Alert в ответе

Мне кажется все же имеет смысл делать исключение, чтобы пропустить конкретную группу одному домену, когда работает сотня других проходя через эту последовательность групп.
Без такой возможности потребуется указать все домены к конкретной группе. А чтобы через нее прогнать неизвестный домен, потребуется ее еще раз в каком-то месте указать, это раздует строку запуска.

Как минимум лишним для гибкости не будет.

-T указанный глобально в первичной группе влияет на --auto=torst в остальных?

2024-08-14T15:58:39.193Z
l8l

Кто нибудь покажите пару примеров для опции --fake-data

2024-08-14T16:04:54.723Z
EBKJIUD(EBKJIUD)

А пробовали стандартный использовать и методом подбора проверить, как правильно указать его для этого параметра:

GET / HTTP/1.1
Host: habrahabr.ru
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/50.0
Accept-Encoding: gzip, deflate, br
Connection: keep-alive

Возможно его можно целиком подделать в таком формате…

Возможно в hex надо.

Спойлер

К примеру в запрете есть такой файлик:
zapret/files/fake/http_iana_org.bin at master · bol-van/zapret · GitHub
и пачка других в raw. Можно через wireshark дернуть, вот пример.
1.bin (285 байтов)

2024-08-14T16:39:37.553Z
TesterTi(TesterIt)

Спасибо. Может знаете, вот такую ошибку FF “NS_ERROR_NET_INTERRUPT” как-нибудь обработать в buydpi можно?

2024-08-14T18:08:32.731Z
TesterTi(TesterIt)

В общем, выяснилось, что с --fake ciadpi.exe падает лишь на 7-ке. На win10 все ОК.
upd На 7-ке не падает, если использовать --conn-ip. Но при этом --fake все равно не работает как на 10-ке, сайты не грузятся.

2024-08-14T19:23:41.320Z
Datura_metel(Datura metel)

send_fake() seems to be broken on android x86 7.1 (kernel 4.9.194), the second TCP packets with relative sequence number 1 is filled with the same data as the first one, although send_fake() works on alpine linux 3.2 (kernel 3.18). confusing.
All android images I tested and results:

version result
android x86 7.1, with kernel 4.9.194 fail
android x86 7.1, with kernel 4.19.175 success
android 10, with kernel 4.14.116, HONOR 9X success
13 GSI, with kernel 5.10.66-android12-9-00001-g83cbf18b7dcd-ab8546841 success

https://dl-cdn.alpinelinux.org/alpine/v3.2/releases/x86_64/

2024-08-16T05:07:53.834Z
Datura_metel(Datura metel)

I tried another implementation, but no such luck.

//unix is "golang.org/x/sys/unix"
type MagicResult struct {
	ReadFD  int
	WriteFD int
	Length  int64
}

func MagicWrite(fd int, buf []byte) (MagicResult, error) {
	result := MagicResult{
		ReadFD:  -1,
		WriteFD: -1,
		Length:  0,
	}
	var pipeBuf [2]int
	err := unix.Pipe2(pipeBuf[:], unix.O_NONBLOCK)
	if err != nil {
		return result, err
	}
	defer func() {
		if err != nil {
			unix.Close(pipeBuf[1])
			unix.Close(pipeBuf[0])
		}
	}()
	result.ReadFD = pipeBuf[0]
	result.WriteFD = pipeBuf[1]

	iov := [1]unix.Iovec{{
		Base: &buf[0],
		Len:  uint64(len(buf)),
	}}
	t1, err := unix.Vmsplice(result.WriteFD, iov[:], unix.SPLICE_F_NONBLOCK)
	result.Length=int64(t1)
	if err != nil {
		return result, err
	}
	result.Length, err = unix.Splice(result.ReadFD, nil, fd, nil, len(buf), unix.SPLICE_F_NONBLOCK)
	return result, err
}
2024-08-18T01:21:21.527Z
Acindaz(Acindaz)

А есть ли у byedpi аналог такого параметра у zapret?

--dpi-desync-split-seqovl=<int>
использовать sequence overlap перед первым отсылаемым оригинальным tcp сегментом

2024-08-18T08:37:12.284Z
hufrea

--fake на 7-ке работать не будет, TransmitFile поддерживается с Windows 8.1.

2024-08-18T15:39:14.124Z
hufrea

Нет.

2024-08-18T15:44:58.141Z
hufrea

Сhecked, also broken on Android 8.1 (Linux 4.4.9).

2024-08-18T16:30:07.566Z
TesterTi(TesterIt)

Понятно, спасибо!

2024-08-18T18:29:59.298Z
LeonMskRu(Leon MskRu)

вроде выше писали про работу IPv6
есть
ciadpi.exe -f -1 --hosts :googlevideo.com --auto=n -d 3 --port 9000
хотел проверить работу yt-dlp как через IPv6 так и без. но он (yt-dlp) при --force-ipv6 не работает через любые прокси что пробовал (socks5/http)

через ByeDPI == --conn-ip 192.168 или --conn-ip 2a00: работает

но у меня провайдер выдает IPv6 каждый раз разные

есть ли планы или уже какая то опция ?

  1. для указания --ipv4 --ipv6 без бинда на конкретный адрес ?
  2. пытаться подключится по IPv6 и если он не работает то переключатся на IPv4 ?
Dhcp       Основной    2d10h1m20s 1d10h1m20s 2a00:62c0: ::2
Временный  Основной    2d23h57m3s   9h54m28s 2a00:62c0: :e808
Публичный  Основной    2d23h57m3s 1d23h57m3s 2a00:62c0: :aa29

p.s. не знаю баг не баг. не показывает ИП сервера. только :443
–debug 1 + IPv6

new conn: fd=412, addr=:443
host: www.youtube.com (127)

new conn: fd=436, addr=:443
host: manifest.googlevideo.com (127)

new conn: fd=428, addr=2a00:1450:400f:1::6:443
host: rr1---sn-5goeenez.googlevideo.com (127)

new conn: fd=332, addr=:443
host: redirector.googlevideo.com (220)

2024-08-20T04:41:51.369Z
hufrea

Чтобы использовать только IPv4 есть --conn-ip 0.0.0.0 (еще есть скрытая опция --no-ipv6, но она может быть удалена).
Для использования только IPv6 опций нет, но в ней и смысла нет особого.

  • пытаться подключится по IPv6 и если он не работает то переключатся на IPv4 ?

Нет. Обычно клиенты должны делать такое.

p.s. не знаю баг не баг. не показывает ИП сервера. только :443

Баг, сейчас исправлю.

2024-08-20T14:45:19.474Z
LeonMskRu(Leon MskRu)

мой косяк.
я перепутал по умолчанию -i 0.0.0.0 и -I ::
запускал по примеру конфига в другом месте и пока еще не разобрался во всех опциях

2024-08-20T15:06:32.017Z
Datura_metel(Datura metel)

FreeBSD also has sendfile .
https://man.freebsd.org/cgi/man.cgi?query=sendfile&apropos=0&sektion=0&manpath=FreeBSD+14.1-RELEASE&arch=default&format=html
Is it possible to port desync?

2024-08-20T20:22:00.252Z
hufrea

@bolvan проверяли ли вы как ведет себя sendfile на FreeBSD?

2024-08-22T17:38:35.449Z
bolvan

Нет, с фейком тему не развивал

2024-08-22T18:08:45.168Z
TesterTi(TesterIt)

На новой 13 версии invalid value: -A --tlsrec, если byedpi.bat из командной строки запускать

2024-08-22T21:08:46.689Z
hufrea

Ёмае, батник забыл обновить.

2024-08-22T21:20:26.905Z
TesterTi(TesterIt)

Теперь все ок, спасибо вам за программу! С --disoob отлично работает, но с --drop-sack почему-то ругается на unknown option

2024-08-22T21:54:58.777Z
hufrea

Забыл написать, эта опция только для Linux. Windows и так ведет себя так, как если бы эта опция на ней была включена.

2024-08-22T22:14:41.247Z
TesterTi(TesterIt)

Спасибо за разъяснение.
У меня наконец-то стали ловиться ошибки с --auto и срабатывать следующие параметры обхода, круто.

2024-08-22T22:28:18.501Z
halimon

Посоветуйте пожалуйста конфигурацию для МГТС Москва

2024-08-24T10:44:29.934Z
TesterTi(TesterIt)

У меня мегафон, работает стандартная конфигурция в byedpi.bat
И такая тоже ciadpi.exe --oob 3+sni
Для мгтс, честно говоря, не знаю, может кто другой подскажет?

2024-08-24T17:13:31.042Z
makoda

Здравствуйте! Помогите, пожалуйста, разобраться.
Речь идёт о сайтах группы kinozal.tv, rutor.org, myzuka.club (вы с ними сталкивались ранее), подключение по https.
Blockcheck по ним выдаёт единственную стратегию - использование фейка (а именно - nfqws --dpi-desync=fake --dpi-desync-ttl=10). Стратегию проверил на деле - рабочая, блокировка обходится.
Но в моём случае предпочтительней использовать socks, нежели nftset с queue - т.к. подбираю более-менее универсальный вариант, не требующий списка хостов.
Посему решил адаптировать сию стратегию для ByeDPI. Как понимаете, пока что безуспешно.
Т.е. что требуется-то по идее? Просто запуск с параметрами типа “–fake -1 --ttl 10”.
Пробовал -1,0,1,2,3++, пробовал +s, пробовал указывать файл tls_clienthello_iana_org.bin в --fake-data, пробовал --md5sig, да много чего перепробовал - всё тщетно. Всегда возвращается одна и та же ошибка “OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection”.
Посему позвольте узнать - какая принципиальная разница в фейковом пакете nfqws и ByeDPI? И какой полный ByeDPI-аналог стратегии для nfqws, выдаваемой blockcheck-ом? Т.е. в nfqws ведь не указывается размер фейка, только фейк и TTL - так какой он (размер) по умолчанию? (вопрос не только к @hufrea - но и, видимо, к @bolvan)

2024-08-25T10:50:51.419Z
TesterTi(TesterIt)

А у вас не работает стандартный конфиг byepdi? Проверьте, возможно, и не нужно никаких аналогов подбирать. В byedpi еще очень хорошо работают такие --oob 3+s либо --tlsrec 3+s

2024-08-25T13:37:08.550Z
mike7

А blockcheck что выдает для tpws? Тоже socks )

2024-08-25T13:40:58.325Z
makoda

А у вас не работает стандартный конфиг byepdi? Проверьте, возможно, и не нужно никаких аналогов подбирать. В byedpi еще очень хорошо работают такие --oob 3+s либо --tlsrec 3+s

В данном случае - нет, не работает.

А blockcheck что выдает для tpws? Тоже socks )

Для tpws - ничего не выдаёт. Только для nfqws. Проверил весь чек-лист, везде “!!! AVAILABLE !!!” только для вариантов с фейком, ну и итоговой стратегией указана та, что выше в посте.

2024-08-25T13:48:53.811Z
LeonMskRu(Leon MskRu)

blockcheck с проверкой tls1.2 + tls1.3 ?
можно посмотреть через
curl -x socks5://127.0.0.1:1080 --tlsv1.3 или --tls-max 1.2

2024-08-25T14:00:44.986Z
makoda

blockcheck с проверкой tls1.2 + tls1.3 ?

Да, вот выдача:

* SUMMARY
ipv4 myzuka.club curl_test_https_tls12 : tpws not working
ipv4 myzuka.club curl_test_https_tls12 : nfqws --dpi-desync=fake --dpi-desync-ttl=10
ipv4 myzuka.club curl_test_https_tls13 : tpws not working
ipv4 myzuka.club curl_test_https_tls13 : nfqws --dpi-desync=fake --dpi-desync-ttl=10

Выхлоп curl одинаков как для –tlsv1.3, так и для –tls-max 1.2:

* Host localhost:1081 was resolved.
* IPv6: ::1
* IPv4: 127.0.0.1
*   Trying 127.0.0.1:1081...
* Connected to localhost (127.0.0.1) port 1081
* Host myzuka.club:443 was resolved.
* IPv6: (none)
* IPv4: 172.67.199.164, 104.21.21.170
* SOCKS5 connect to 172.67.199.164:443 (locally resolved)
* SOCKS5 request granted.
* Connected to localhost (127.0.0.1) port 1081
* ALPN: curl offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to myzuka.club:443 
* closing connection #0
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to myzuka.club:443

Это при запуске ByeDPI с параметрами –fake -1 --ttl 10. Впрочем, при любых других параметрах выхлоп тот же самый.

2024-08-25T14:26:38.756Z
LeonMskRu(Leon MskRu)

провайдер / роутер ?
на моем РТ и указанные оба варианта и дефолтный .bat работают

2024-08-25T14:35:28.537Z
TesterTi(TesterIt)

А комбинация fake с disorder? --disorder 1 --fake 7 или --disorder 1 --fake -1

2024-08-25T14:48:12.585Z
makoda

провайдер / роутер ?

И MikroTik на ROS6. Подчеркну, что загвоздка лишь с вышеуказанной группой сайтов, все остальные ByeDPI разблокирует без проблем. Кроме того, nfqws ведь обходит эту блокировку.

А комбинация fake с disorder? --disorder 1 --fake 7 или --disorder 1 --fake -1

Пробовал подобные комбинации - та же ошибка.

2024-08-25T15:05:45.759Z
hufrea

--fake на 7-ке работать не будет, TransmitFile поддерживается с Windows 8.1.

Это не так. Дело оказалось вовсе не в TransmitFile (и поддерживается он с Windows XP, Windows 8.1 это для UWP), а в WriteFile, который не работает в Windows 7 без 4-го аргумента (lpNumberOfBytesWritten). Исправил в 13.1

nfqws отправляет весь фейк, после настоящие данные, притом их он может разбить на пакеты разного размера и отослать в ином порядке (fake + disorder). В ByeDPI так не сделать, размер фейка так же является и позицией, по которой разбивается запрос.
Близкими к --dpi-desync=fake могут быть: --fake 517 --ttl 10 (517 - размер фейка по умолчанию) и --fake 0+e --ttl 10 (+e - размер оригинального запроса, пока этот флаг нигде не упоминается). Еще можно попробовать --split 5 --fake -1 --tt 10 --fake-offset 5.

2024-08-25T18:02:08.891Z
makoda

Охренеть! Сработали оба варианта! hufrea, благодарю!

2024-08-25T18:28:43.726Z
3ph

Эмулятор Nox + Android 7. В приложении SmartTube пытаюсь подключиться к Socks-серверу ByeDPI, запущенному на ПК - безуспешно. При этом на самом ПК все работает. Пробовал то же самое сделать через Tor, открыв к нему доступ через SocksPort - никаких проблем при проксировании из эмулятора не возникает. То же самое можно сказать о проксировании через Shadowsocks - тоже никаких проблем. В чем может быть причина?

Эмулятор, разумеется, меня не так интересует. Просто такая же проблема с Android TV на двух устройствах. Может, это как-то связано?

Запускал с ключом --debug, чтобы убедится, что подключение есть и даже обмен какой-то есть, но затем все просто останавливается и соединение закрывается.

2024-08-25T21:55:37.767Z
Sanek184

del

2024-08-27T11:25:29.548Z
3ph

Может кому-то пригодится. При проксировании через эмулятор помогла строчка --disorder 1 --fake -1 --ttl 7 auto=none. Теперь проблем нет. Но при перепрыгивании с видео на видео бывает задержка, а в консоле сыпятся десятки сообщений типа send: 0 != 16384 (fd: 560)
pollout (fd=560). Это нормально, или можно что-то подкрутить?

2024-08-27T13:51:01.573Z
LeonMskRu(Leon MskRu)

ф12 в браузере и смотреть что там в “network”
сейчас у многих проблемы с 403 ответом googlevideo.com

2024-08-27T17:13:12.245Z
3ph

Я в этом не сильно разбираюсь. Просто обратил внимание, что 16384 - это размер буфера по умолчанию. Подумал, что раз так много сообщений с этим числом, то, может, его (буфер) увеличить нужно, или еще что-то в этом роде. Но с другой стороны, там изредка проскакивают и другие числа, например: send: 0 != 1408 (fd: 752) pollout (fd=752) send: 0 != 16384 (fd: 752)

2024-08-27T20:02:41.109Z
Sanek184

Так как --disorder на Windows с ретрансмиссией и нормально не работает, хорошо себя показывает --disoob 2+s. По ощущениям быстрее, как и с disorderом без ретрансмиссии. Спасибо за реализацию такой функции

2024-08-28T05:53:30.509Z
3km(Karim)

подскажите пожалуйста как подобрать аналогичные параметры для ByeDPI
zapret работает с этими:
–dpi-desync=fake,split2 --dpi-desync-ttl=2 --dpi-desync-split-pos=1

–split 5 --fake -1 --tt 10 --fake-offset 5
заработали трекеры, линкедин, X, но youtube не работает - интерфейс и превьюшки махом загружаются, а видео не идет

2024-08-28T14:36:36.863Z
Sanek184

вместо –split 5 попробовать –split 2, если не поможет –split заменить на --split 1 --disorder 3
и --ttl а не --tt и значение от 2 подбирать

–split 2 --fake -1 --ttl 5

2024-08-28T16:00:30.767Z
s.v.d(00svd00)

Что будет, если запустить сервис без параметров? Ну или напр. просто с --debug 1 ? Будет ли он как-то влиять на траффик или будет просто перегонять его без изменений. Если нет - можно ли каким-то образом такой режим включить?

2024-08-28T21:40:59.593Z
3ph

Если я правильно понимаю, сначала идет фейк-пакет с ttl=2, потом 1 байт оригинального, потом остаток оригинального. Как писал автор чуть выше, ByeDPI работает по другому принципу, поэтому в точности повторить такую последовательность в нем не получится. Нужно отталкиваться от того, что есть. Sanek184 предложил варианты - пробуйте, эсперементируйте, читайте теорию. Других путей тут нет :slight_smile:

2024-08-29T07:19:20.028Z
meadow_seed

А где можно найти информацию по минимальным и максимальным значениям параметров и совместимости параметров друг с другом? Хотелось бы сделать батник примерно следующего вида чтобы автоматически проверять на разных провайдерах
byedpi.exe <параметры>
downloader.exe --proxy localhost:443 --site http:// block.ed/robot.txt --timeout 8000
if errorlevel 0 echo ‘success <параметры>’ > log.txt
Или возможных комбинаций настолько много, что проще вручную пробовать наиболее вероятные как этим занимаются в этом треде?

2024-08-29T11:48:17.360Z
3km(Karim)

всё сломалось? что сейчас работатет с не,
-o 2 раньше работало

2024-09-13T20:35:33.272Z
Acindaz(Acindaz)

Есть у кого-то опыт настройки fake для quic?
С zapret’ом пробивается просто: --wf-udp=443 --dpi-desync=fake.
А вот у byedpi почему-то не срабатывает: -K u -f 1 --auto=n.

2024-09-16T07:22:16.719Z
TesterTi(TesterIt)

Может добавить фейк из последней сборки zapret?
-K u -f 1 --fake-data tls_clienthello_www_google_com.bin --auto=n Или это не для ютуба?

2024-09-16T22:56:39.634Z
Acindaz(Acindaz)

Для YT, для андроида (byedpiandroid). Но у app нет разрешений на чтение файлов, поэтому не выйдет.
А на ПК протестировать не получается, т.к. ни chrome, ни curl не хотят quic через проксю гнать.

2024-09-17T06:16:22.729Z
Ori

Через nekobox+byedpi-neko можно попробовать. Там есть разрешение.
А ещё можно прописать фейк руками.
Касательно udp, у меня провайдер тупо блочит длинные фейки, например. Подошел только quic_short_header.bin из файлов запрета. Хз почему так.

Вообще, если помотреть инструкцию к byedpi, то здесь fake работает не так как в аналогах, насколько я понимаю. Тут написано, что фейк подобен дисордер. Попробуйте какой-нибудь --fake -1?

2024-09-17T06:50:35.094Z
Acindaz(Acindaz)

Я пробовал для фейка разные значения. Попробовал вместо файла вписать “0x00000000”. Пока безуспешно. На андроиде YT по tls пробивается на раз-два, но приложение YT постоянно норовит следующий кусок видео брать по quic, из-за чего регулярные затыки воспроизведения.

2024-09-17T07:23:26.265Z
Ori

Через NewPipe не пробовали, вместо обычного приложения ютуба? Я хз использует ли оно udp, но может там такой проблемы нет?
Вообще в byedpi на телефоне у меня сейчас работает --disorder 1 --fake -1 --md5sig, но я не знаю оказывает ли это эффект на udp, или видосы тянутся по tcp.

2024-09-17T07:37:15.410Z
Acindaz(Acindaz)

Я не очень доверяю сторонним YT приложениям, плюс мне важна связка YT на телефоне и на ТВ. С телефона можно листать комменты и организовывать очередь воспроизведения на ТВ.

Попробуйте вообще оставить --disorder 1, для YT этого должно хватать.

2024-09-17T08:14:06.873Z
hufrea

--proto=udp --pf=443 --udp-fake 3 -An

Тут другой формат:
--fake-data=:\x00\x00\x00

2024-09-17T16:10:22.216Z
Acindaz(Acindaz)

Спасибо! Проверил на нескольких роликах. Пока зависаний не было. Совместил параметры так:

--proto=tls,udp --pf=443 --hosts=":googlevideo.com" --disorder=1 --udp-fake=3 --auto=n

Если я понимаю правильно, конфликтов при таком совмещении не будет, disorder сработает только для tls, а udp-fake только для quic?

2024-09-17T16:28:23.934Z
hufrea

Да.

2024-09-17T16:30:43.657Z
yocx_xcoy

Подскажите пожалуйста, есть ByeDPI на Android - там через UI сделаны настройки (вроде банальные) и они работают для yt:

Settings
  • Mode VPN
  • DNS 8.8.8.8
  • IPv6 off
  • proxy address 127.0.0.1
  • port 1080
  • Max num 512
  • Buffer size 16384
  • no domain off
  • tcp fast open off
  • hosts disabled (тут вариативно, можно вкл blacklist и там googlevideo.com)
  • default ttl 0
  • desync method fake
  • split position 1
  • split at host off
  • drop SACK off
  • ttl of fake packets 8
  • fake offset 0
  • sni of fake packet www.iana.org
  • desync http on
  • desync https on
  • desync udp off
  • host mixed case off
  • domain mixed case off
  • host remove spaces off
  • split tls record on
  • tls record split position 0
  • split tls record at sni on

Как аналогичные настройки сделать через параметры строчные - чтобы проверить сначала на пк через ciadpi.exe а далее закинуть на роутер в конфиг byedpi?

Спасибо!

2024-09-18T09:09:38.888Z
hufrea

--ip 127.0.0.1 --hosts :googlevideo.com --fake 1 --ttl 8 --tlsrec 0+s -An
Вряд ли fake здесь имеет смысл, особенно если используется лишь 1 байт, возможно будет достаточно использовать --disorder 1.

проверить сначала на пк через ciadpi.exe

На Windows fake и disorder работают немного иначе, поэтому параметры, работающие на Linux/Android, могут не работать.

закинуть на роутер

На него лучше Zapret ставить, если это возможно.

2024-09-18T09:56:28.136Z
Dhohbr

Не увидел в мануале возможность использования файла конфигурации. Не планируете его реализовать?

2024-09-18T10:12:36.187Z
yocx_xcoy

Роутер Asus RT-N11P B1 и насколько я понимаю - туда запрет накатить очень проблематично - насколько я понял.

Спасибо за конфиг - попробовал на телефоне+wifi, переключившись на command line editor - с disorder yt работает через revanced.
Пробую этот же конфиг закинуть в роутер и проверить на пк (который подключен к роутеру по проводу) - yt не грузится почти совсем (даже ui нормально не прогружается)…

Сам роутер является НЕ первым в цепи, он висит после терминала (192.168.1.1) на адресе 192.168.1.3 - не знаю, важна ли эта инфа или нет в данном случае, т.к. с телефона к тому же роутеру - всё работает.


К слову, на пк работает ещё так goodbyedpi (текущий дефолтовый):

goodbyedpi

goodbyedpi.exe -9 --fake-gen 5 --fake-from-hex 160301FFFF01FFFFFF0303594F5552204144564552544953454D454E542048455245202D202431302F6D6F000000000009000000050003000000 --blacklist ..\russia-blacklist.txt --blacklist ..\russia-youtube.txt


Убрав из конфига hosts - ui стал прогружаться, ролики как-то странно - один да и перемотка быстрая - другой и несколько других - просто нет…

2024-09-18T10:19:20.153Z
yocx_xcoy

Подскажите, каким образом лучше подойти к накрутке параметров? (ну кроме как накинуть параметр, обновить конфиг, сделать рестарт сервиса и пойти на yt)

Решил начать с простого:
option cmd_opts '--disorder 3'

Пробую простучать гугл и ртрекер так:
curl -I -x socks5://192.168.1.3:1080 -k https://rutracker.org/myip //...google.com

Ответ на гугл 200, на рутрекер же:
curl: (35) Recv failure: Connection was reset

Если конфиг такой:
--fake 1 --ttl 8 --tlsrec 0+s -An
то:
curl: (97) Could not resolve host: rutracker.org

А если такой:
--disorder 1 --ttl 8 --tlsrec 0+s -An
то:
curl: (35) schannel: failed to receive handshake, SSL/TLS connection failed


Куда копать и что можно попробовать?

Спасибо!


p.s. включаю на винде goodbyedpi такой (даже с активным byedpi на роутере):

goodbyedpi.exe
goodbyedpi.exe -9 --fake-gen 5 --fake-from-hex 160301FFFF01FFFFFF0303594F5552204144564552544953454D454E542048455245202D202431302F6D6F000000000009000000050003000000 --blacklist ..\russia-blacklist.txt --blacklist ..\russia-youtube.txt

И Yt сразу работает.

2024-09-19T11:52:07.203Z
Acindaz(Acindaz)

Попробуйте просто --hosts=":googlevideo.com" --split=2 --auto=n.
Вчера на многих провайдерах отломался disorder.

2024-09-19T12:04:15.095Z
yocx_xcoy

Попробовал с доменом - yt не грузит (да и ui не грузит такое ощущение)
Попробовал без: --split 2 --auto n - yt видео не грузит (ui вроде грузит)

Если без домена и пробить трекер:
curl: (35) schannel: failed to receive handshake, SSL/TLS connection failed

Такое ощущение, что или что-то не так у меня или оно совсем не работает…

--hosts :googlevideo.com --split 2 --auto=n
так ютуб вообще плохо (вообще почти не) грузится, ну а пробив трекера (логично) не проходит совсем:
curl: (35) Recv failure: Connection was reset

p.s. при этом byedpi android - работает, ну и goodbyedpi win - работает.

2024-09-19T12:41:41.680Z
yocx_xcoy

Вариант из предложенных ранее, например:
option cmd_opts '-s 3+s -d 20+s'

в логах роутера выдает:
daemon.err ciadpi[6957]: recv: Connection reset by peer

Буду признателен, если кто-то сможет подсказать в какую сторону копать)

2024-09-19T16:10:57.189Z
sakontwist

У меня на домру например работал fake только с ttl 2, больше или меньше - все отлетает)

Я всегда начинаю с самого простого - disorder 1 split 4. Потом начинаю эти значения немного менять. Если не помогает, пробую уже fake +s и двигать ttl.

Если совсем ничего не помогает, то может быть просто заблочены ip. В таком случае никакие выкрутасы не помогут.

Учитывайте, что приложение на Андроиде скорее всего использует quic (udp) и там вполне работает fake udp. Браузер (и curl) идут другим путем

2024-09-19T18:02:10.648Z
yocx_xcoy

Спасибо за советы - попробуем.
А что на вэбе тоже лучше включить quic + попробовать fake или это не тот случай?)

Подскажите, а как узнать что заблочены ip?


И ещё момент - стоит ли сразу при тесте добавлять хост:
--hosts :googlevideo.com --disorder 1 --split 4

или лучше тестить без хоста?

2024-09-19T20:34:13.572Z
LeonMskRu(Leon MskRu)

9000 это ByeDPI

это сервер с которого скорее всего ютуб будет качать видео
curl -4 -x socks5://127.0.0.1:9000 https://redirector.googlevideo.com/report_mapping?di=no
=> svo04s27 : router: “pr05.svo03” next_hop_address: “5.143.253.164”

у меня он не отвечает по HTTPS от слова ваще
tcping 5.143.253.164 443
Probing 5.143.253.164:443/tcp - No response - time=2001.609ms
Probing 5.143.253.164:443/tcp - No response - time=2004.141ms
Probing 5.143.253.164:443/tcp - No response - time=2003.353ms
Probing 5.143.253.164:443/tcp - No response - time=2004.190ms

где то в РосТелекоме похоже стоит
nmap -p 443 --traceroute 5.143.253.164
3 28.00 ms 213.59.232.180
4 40.00 ms 5.143.253.164

а это вроде не РТ (получил через yt-dlp)
tcping -4 rr8---sn-n8v7kn7k.googlevideo.com 443
Probing 173.194.177.26:443/tcp - Port is open - time=22.596ms
Probing 173.194.177.26:443/tcp - Port is open - time=67.280ms
Probing 173.194.177.26:443/tcp - Port is open - time=24.328ms
Probing 173.194.177.26:443/tcp - Port is open - time=33.368ms

Спойлер

nmap -p 443 --traceroute rr8---sn-n8v7kn7k.googlevideo.com
1 7.00 ms 192.168.1.1
2 35.00 ms 1.net-59-pppoe-pool.kaluga.ru (212.106.59.1)
3 21.00 ms 213.59.232.184
4 29.00 ms 217.107.120.221
5 55.00 ms 72.14.197.6
6 30.00 ms 192.178.241.117
7 24.00 ms 64.233.174.217
8 25.00 ms svo07s07-in-f26.1e100.net (173.194.177.26)

2024-09-19T21:22:14.204Z
yocx_xcoy

Возращаясь к вопросу про android + quic - как тест:
ByeDpi on Android with command line:
--ip 127.0.0.1 --hosts :googlevideo.com --disorder 1 --ttl 8 --tlsrec 0+s -An
Chrome Android с выключенным флагом Quic

Всё грузится и показывает через моибльный браузер + через revanced.


Аналогично прописываем на роутере в конфиге для ciadpi - не работает ничего.
Аналогично прописываем в батнике byedpi.bat для ciadpi на винде - не работает ничего.

Про goodbyedpi - уже писал - с ним всё работает на винде (но это чуть другое решение)

В чем подвох? Ведь вроде условия и средства на роутере и андроиде одинаковы, или после настройки на роутере - нужно что-то ещё сделать на устройствах?

2024-09-20T07:04:02.198Z
hufrea

Пока в планах нет.

На Windows обычный disorder плохо работает, возможно сработает --split 1 --disorder 2 или --disoob 1

Было бы неплохо, если бы вы сделали дамп трафика. Или хотя бы логи (параметр --debug 2) с обоих устройств приложили.

2024-09-20T09:48:03.073Z
W1T

Эти настройки сейчас не работают. Подскажите рабочие настройки?

2024-09-21T15:04:36.982Z
3MMM

Установил ByeDPI на Coreelec как написано здесь: https://4pda.to/forum/index.php?showtopic=990018&st=6280#entry132361119
Первый день показывал ютуб с установками по умолчанию:
ExecStart=/storage/.config/ByeDPI/bin/ciadpi-aarch64 --hosts /storage/.config/ByeDPI/bin/russia-blacklist.txt --disorder 2 --auto=none
На второй день перестал показывать. Менял --disorder 2 на --disorder 1 и --disorder 3 и т.д. Не показывает. Поменял --disorder 2 на --split 1 начал показывать. Через день опять не показывает.
Какие настройки поставить?
На роутере установлен tor. Если в Coreelec в настройках системы указать на этот socks 5 proxy tor то ютуб показывает но перестает работать просмотр через torrserver.
Как бы организовать так чтобы через прокси шло только для выборочных доменов?
Можно ли использовать ByeDPI пока не работает обход просто для заворачивания на другой socks5 proxy по списку --hosts ? Тут: GitHub - hufrea/byedpi: Bypass DPI про это ничего не нашел, хотя где то вроде видел, сейчас найти не могу (

2024-09-22T09:54:37.593Z
destiny08-lab(Destiny)

вопрос к автору и знающим:
работает много различных вариантов, например,

–proto=udp --pf=443 --udp-fake 3

, но как только (к любому из вариантов) добавляешь disorder, то сразу ютуб перестает работать (проблема с disorder началась на этой неделе).
без изпользования disorder открываются торренты, ютуб работает, а вот ntc.party - нет!
собственно куда копать и что навертеть с ключами/параметрами (используются контейнеры byedpi и tun2socks на микроте) ?

2024-09-22T10:35:49.747Z
TesterTi(TesterIt)

А если добавить что-нибудь вроде --tlsrec 3 или --oob 3 или --split 2 ?

2024-09-22T11:08:07.545Z
destiny08-lab(Destiny)

странно, --split 2 помогло частично только для chrome desktop (kyber default, quic default).
лису (и desktop и android) кидает на заглушку провайдера, chrome android кидает на заглушку провайдера

2024-09-22T11:12:01.768Z
TesterTi(TesterIt)

На заглушку обычно кидает по http. Может, у вас в хроме в настройках включен режим “Только HTTPS”, а в FF нет?

2024-09-22T11:27:42.428Z
destiny08-lab(Destiny)

это скорее я плохо тестировал, теперь попробовал с перезапусков браузеров.
итоги следующие:
–tlsrec 3 - ютуб не работает, ntc.party работает
–oob 3 - ютуб не работает, ntc.party работает
–split 2 - ютуб работает, ntc.party не работает

2024-09-22T11:29:02.250Z
TesterTi(TesterIt)

Тогда сделайте разные настройки для разных хостов:
--hosts ntc.txt --oob 3 --auto=none --hosts youtube.txt --split 2

2024-09-22T11:32:14.462Z
destiny08-lab(Destiny)

такой вариант сработал, спасибо.

2024-09-22T11:49:03.596Z
ZugDuk

Как избавиться от redsocks и сделать прозрачное проксирование прямо на byedpi?

2024-09-22T13:35:30.155Z
Dhohbr

–transparent, режим прозрачного прокси, если вы про это.

2024-09-22T14:27:42.527Z
ZugDuk

Кстати redsocks падал без причины.
А по byedpi хелп глянул - ключ -E и ключ -p (порт) нужно использовать, чтобы поднять прозрачный прокси.

2024-09-22T14:36:00.552Z
Dhohbr

Если заработает, напишите как следали. А то я на миктротике пытался сделать, не заработало. Хотя, я пока глубоко не вникал в это.

2024-09-22T14:44:04.367Z
TesterTi(TesterIt)

@hufrea --transparent почему-то не работает

d:\byedpi-14.1-x86_64-w64>ciadpi.exe --ip 127.0.0.1 --port 18081 --transparent --split 1 --disorder 3+s --mod-http=h,d --auto=torst --tlsrec 1+s
ciadpi.exe: unknown option -- transparent
2024-09-22T17:19:44.575Z
hufrea

--transparent поддерживается только на Linux.

2024-09-22T17:30:50.220Z
TesterTi(TesterIt)

Понятно, спасибо!

2024-09-22T17:32:39.833Z
hufrea

Нет. Перенаправление на другой прокси планировалось, чтобы сочетать это с --auto=torst, но было решено не добавлять его. Для обычного фильтра по доменам можно использовать sing-box или другие проекты.

2024-09-22T17:41:18.058Z
ZugDuk

А хрен знает что такое микротик. Могу написать как сделать для debian

  1. файл с правилами iptables (кладется в папку, скрипты из которой запускаются перед поднятием сетевых карт /etc/network/if-pre-up.d/)
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
ipset create vpn_domains hash:ip
iptables -t nat -A PREROUTING -i eth1 -m set --match-set vpn_domains dst -p tcp --dport 80 -j REDIRECT --to-port 31338
iptables -t nat -A PREROUTING -i eth1 -m set --match-set vpn_domains dst -p tcp --dport 443 -j REDIRECT --to-port 31338

тут eth0 - внешняя сетевая карта, eth1 - внутренняя

  1. Конфиг dnsmasq.conf
port=53
interface=eth1
bind-interfaces

В папку дополнительных конфигов dnsmasq /etc/dnsmasq.d я скачал список доменов для редиректа в byedpi
wget https://raw.githubusercontent.com/itdoginfo/allow-domains/main/Russia/inside-dnsmasq-ipset.lst
и переименовал их в inside-dnsmasq-ipset.conf (домены в этом файле перечислены уже в формате, понятном dnsmasq)

  1. systemd unit для запуска byedpi при загрузке debian
    /etc/systemd/system/byedpi.service
[Unit]
Description=byedpi
Requires=network.target
After=network.target network-online.target networking.service
Wants=network-online.target
Conflicts=umount.target
Before=umount.target

[Service]
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
User=byedpi
Type=simple
Restart=on-failure
RestartSec=5
WorkingDirectory=/home/byedpi/
ExecStart=/home/byedpi/ciadpi-x86_64 --conn-ip 192.168.0.1 -E -p 31338 -s1 -At -d2 -At -f-1 -r1+s -An
LimitNPROC=10000
LimitNOFILE=1000000

[Install]
WantedBy=multi-user.target

тут нужно создать юзера useadd -m byedpi и положить в его домашнюю папку программу ciadpi-x86_64
и включить юнит смстемд systemctl enable byedpi

Общий принцип - с помощью iptables и ipset, в порт, который слушает byedpi, заворачивается трафик к ip адресам, которые узнает dnsmasq из dns ответов.

Просьба к автору. Можешь сделать, чтобы при использовании прозрачного прокси, сокс прокси тоже оставался? Например прозрачный прокси по умолчанию на порту 31338, а сокс5 на порту 1080.

2024-09-23T07:51:04.004Z
Acindaz(Acindaz)

Пытаюсь перенести из zapret’а стратегию --dpi-desync=fake --dpi-desync-ttl=5.
Получается --fake 1 --ttl 5.
Но не срабатывает, что еще можно подкрутить?

2024-09-24T03:22:04.248Z
TesterTi(TesterIt)

Попробуйте --fake 0+e --ttl 5 или так --fake 517 --ttl 5. Для ютуба можно еще добавить --tls-sni=www.google.com или монструозный фейк отсюда ByeDPI for Android: обсуждение - #138 by hufrea

2024-09-24T10:28:26.585Z
Acindaz(Acindaz)

Это не для YT. Попробую, спасибо.
Что означает 0+e? В readme вижу только +s и +h.

Сегодня --split=2 отвалился для YT, который еще вчера работал. Методом тыка нашел рабочее:
--split=1 --oob=1 --mod-http=h,d

2024-09-24T11:30:06.789Z
TesterTi(TesterIt)

Это недокументированный параметр от автора byedpi hufrea ) ByeDPI: обсуждение - #163 by hufrea

2024-09-24T16:20:34.821Z
Acindaz(Acindaz)

Подскажите, что еще можно для quic подкрутить. Сегодня цитированного перестало хватать. Пробовал больше 3 указывать - не помогло. У запрета опытным путем для quic добавил --dpi-desync-repeats=4.

2024-09-25T06:41:23.701Z
TesterTi(TesterIt)

А может вам udp вообще не проксировать? Добавить --no-udp ? Или так не работает? Или же --ttl подобрать от 1 до 10.

2024-09-25T09:26:19.577Z
Acindaz(Acindaz)

На андроиде в приложении YT нельзя отключить quic. Начальные 9 секунд видео тянутся с локального сервака по tcp, а последующие куски уже по udp с калифорнийских. Без обхода quic видео просто встает колом после 9 секунд. Перезапуски могу заставить выдаваться последующие куски тоже по tcp с местных серваков, но это не просмотр видео, а тапания каждые пару минут, потому что YT все равно периодически норовит пользовать udp.

Сейчас опять есть затык после 9 секунд для новых (ранее не смотренных) роликов, который, к счастью, лечится одним перезапуском. Но чую я, то ли еще будет.

2024-09-25T10:29:11.408Z
rewhat

Кто-нибудь пробовал на Windows использовать ByeDPI через nekoray в режиме TUN? Как системный прокси работает, а в режиме TUN - нет. nekoray выдает ошибки типа “wsarecv: An existing connection was forcibly closed by the remote host”.

2024-10-06T17:45:29.069Z
TesterTi(TesterIt)

А что это за режим? Как его включить?

2024-10-06T18:26:13.556Z
rewhat

В Винде создается новый сетевой интерфейс, и весь трафик обрабатывает NekoBox. Ну типа системного прокси, только работает реально на всю систему, т.е даже на программы, которые игнорируют настройки системного прокси, плюс системный прокси вроде как не обрабатывает udp, а tun обрабатывает всё.

Включить можно в NekoBox. Когда открываешь его, справа вверху две галочки есть “Режим TUN” и “Режим системного прокси”.

upd: на винде софтина называется nekoray, а не nekobox

2024-10-06T18:35:53.114Z
TesterTi(TesterIt)

А, это в некобоксе “Режим TUN”, в не в byedpi, ясно, спасибо.

2024-10-06T18:48:46.615Z
neutrino

@hufrea
привет, можешь, пожалуйста, подсказать какие параметры аналогичны тем что используются в zapret? да и возможно ли это тут использовать, доку смотрел, но решения пока что так и не нашел, спасибо
Блокировка Discord (обсуждение + обход блокировки)

2024-10-09T08:15:18.678Z
ROBiNGOoD315(RGD_315)

Может кто-то пояснить как включить desync UDP через параметр запуска? Я никак не могу разобраться какой за это отвечает.

2024-10-09T11:52:55.949Z
rewhat

Вроде как --fake-data может и файл и строку принимать? Можно пример строки?

2024-10-10T00:40:46.305Z
TesterTi(TesterIt) 2024-10-10T10:38:16.645Z
rewhat

спасибо

2024-10-10T11:30:50.868Z
Dhohbr

Сегодня перестал yt через byedpi работать.
Использовал --split 2 --fake 1 --ttl 4
Поперебирал ttl, на 7 вроде что-то начало работать, но через какие-то время перестало.
Увеличение split и fake результатов не дают.
Проверил схемы, которые писали тут в последних сообщениях, тоже не заработали.
Есть какой-то способ узнать как именно происходит блокировка? Желательно под линукс.

2024-10-10T13:52:03.180Z
danaYatsuta

У меня все еще работает просто --disorder 1, тоже на линуксе.

2024-10-10T14:14:48.451Z
Dhohbr

disorder тоже не помогает.
Заработало на схеме от @shinodem в соседней ветке

2024-10-10T15:32:30.436Z
W1T

Куда это вводить если на телефоне? ps разобрался.

2024-10-10T21:06:48.294Z
ZugDuk

Премного благодарен

2024-10-12T11:13:05.027Z
D4NICKY(D4NICKY)

Не понятно почему на винде параметр -b 500 обеспечивает работу ютуба. При чем интересно если прокси завернуть с поддержкой UDP например воткнуть в приложение через Netch то все работает без -b 500. очень странный прикол.

2024-10-12T19:40:52.435Z
wabixa

Здравствуйте!
Скажите, пожалуйста, в чём разница между параметрами “–no-udp” и “–proto t,h”? Ведь в обоих случаях UDP исключается из обработки?
Если ByeDPI используется только как socks для браузера (обработка quic при этом не требуется) - причём только в режиме –auto, то нужно ли включать вышеуказанные параметры, дабы исключить обработку какого-либо UDP-трафика?

2024-10-13T06:41:10.706Z
hufrea

Нет, с –proto t,h для UDP используется неявно созданная пустая группа, он продолжит проксироваться.

Нет, браузеры пока проксировать UDP не умеют, насколько я в курсе.

2024-10-13T17:24:10.819Z
Acindaz(Acindaz)

Возможно, Chrome умеет:

–proxy-server=quic://www.example.org:6121

2024-10-13T17:32:11.987Z
hufrea

Через QUIC прокси возможно, но я подразумевал UDP через SOCKS5, который предоставляет программа.
https://chromium.googlesource.com/experimental/chromium/src/+/refs/tags/79.0.3945.46/net/docs/proxy.md#SOCKSv5-proxy-scheme

In Chrome SOCKSv5 is only used to proxy TCP-based URL requests. It cannot be used to relay UDP traffic.

2024-10-13T17:42:39.138Z
Sanek184

Починил долгое открытие видео на ютубе. Раньше работало с -o 2, теперь добавив -s 25+s ( -o 2 -s 25+s) снова все отлично начало работать. Может кому поможет.

2024-10-14T05:55:23.726Z
us3r

На linux работает такой крокодил:

-b 900 --disorder -2 --tls-sni=www.mercusys.com --fake-offset 7 --oob-data yez -Y -s 1 -s 4+s -s 1 -q 5 --oob 155+s --fake 35+s --md5sig --fake-offset 20 --tlsrec 3+s --udp-fake 500 --mod-http=h,d,r --oob-data MNOGORAZNYHBUKVVIDEONAYOUTUBE --fake-offset 999 --fake-data=":https://www.youtube.com/@Abcde" --fake 1000+s --ttl 5 --no-udp --auto-mode 1 --timeout 20 --ip-opt 5 --fake-data ":GET /ds-site/images/banners/bl-black-mobile-new.png HTTP/1.1" --ip-opt=":MNOGORAZNYHBUKVVIDEONAYOUTUBE"

На android с таким конфигом не запускается VPN, но если половину этого выкинуть, тоже работает.
(вообще не понимаю как эта магия работает)

В --tls-sni=www.mercusys.com пробовал указывать разные сайты, в том числе .ru, вроде как тоже работает.

2024-10-14T06:40:48.592Z
Sanek184

потому-что из всей этой абракадабры нужно всего пару аргументов для того чтобы работало.

2024-10-14T07:08:13.699Z
Acindaz(Acindaz)

И это только вершина абсурда этого “крокодила”. :sweat_smile:

У меня работает -s1 -q1 -Y -Mh,d, но ваш тоже сработал.

2024-10-14T07:58:58.778Z
Sanek184

такая конфигурация будет отменять сплит, -s 1 -q 3 кстати тоже норм заработало, но непонятно будет ли ретранcлировать disoob все пакеты в Win как это делает disorder

2024-10-14T08:14:39.778Z
Acindaz(Acindaz)

Если я правильно понимаю доки, то -s1 -q1 отправит “rutracker” как “r” + “utracker” + “a”, а -q1 без сплита отправит “utrackera” + “r”. Это на андроиде. И на деле -s1 -q1 срабатывает, а -q1 нет.

2024-10-14T08:47:53.216Z
Sanek184

Действительно при -s 1 -q 1 отмены сплита нет. Значит можно так прописывать
НО. В Windows disorder ретранслирует весь пакет заново (про это писал сам автор), с disoob похоже тоже самое происходит. Поэтому лично я пытаюсь найти рабочий вариант без disorder и disoob, но работает - да.

2024-10-14T09:03:38.773Z
hufrea

“utracker” + “ra”.

-o 0 -s 1?

2024-10-14T10:30:25.330Z
Sanek184

Попробовал, также открывает долго видео (как стало с -o 2), только c -o 2 -s 25+s отлично, меньше пробовал значение - не срабатывает. Пока на таком варианте и остановился.

2024-10-14T11:03:10.511Z
mark17(Марк)

Спасибо за прогу, работает, но есть предложение сделать выбор смещения разбиения по доменному имени, не включая поддомен, так лучше работает, видимо ТСПУ каждый фрагмент пакета брутфорсит на наличие совпадений до сборки. Можно конечно как Sanek184 предложил, указывать 25+s смещение, но это только для гуглвидео наверное подойдет с его длинными поддоменами.
У себя я сделал, правда колхозно, я не программист, но если кому надо то под спойлер убрал:

Спойлер

в desync.c функция desync:

заменить

if ((len = parse_tls(buffer, n, &host))) {
type = IS_HTTPS;
}

на

if ((len = parse_tls(buffer, n, &host))) {
type = IS_HTTPS;

/*   temporary sni fix   */
int dotcount = 0;
char *sni_full = host;
host += len;
do {
    host--;
    dotcount += (*host == '.');
} while (dotcount < 2 && host >= sni_full);
host++;
/*   -----------------   */

}

Как времянка сойдет, если кому надо, а так конечно, хотелось бы такую опцию.

2024-10-14T14:50:00.019Z
hufrea

Думаю это будет лишним. Но можно добавить смещение от конца домена и писать что-то вроде --split -5+se.

2024-10-14T18:41:50.230Z
MiZantr0pe

Дай бог вам здоровья, у тоже заработало с этим конфигом. NekoBox 1.2.9, плагин byedpi, оператор wi-fire Орловская область.

2024-10-14T18:59:24.570Z
Sanek184

Если Вам не сложно реализуйте такой вариант (сплит с конца домена), такой сплит в нынешних способах очень нужная опция аргумента

2024-10-16T05:30:05.462Z
3km(Karim)

Добрый день!
Раньше с -o 2 всё работало, заменил на -o 2 -s 25+s не помогло((
Как ие еще варианты можно попробовать?

2024-10-16T07:03:50.003Z
hufrea

Еще во вчерашнем коммите. Можете собрать и тестировать.

2024-10-16T08:39:46.740Z
yocx_xcoy

Помогите пожалуйста разобраться:

  1. поставил чистый openwrt

  2. в сети роутер не один, у него стоит фикс ip (192.168.1.33) и DHCP вырублен (устройствам ip’ы выдает первый (главный) роутер)

  3. накатил отсюда сборку ByeDPI-OpenWrt Release v0.14.1 for OpenWrt 23.05 · spvkgn/ByeDPI-OpenWrt · GitHub (закинул в /tmp и установил через консоль)

  4. на android через аппку ByeDPI 1.2.0 работает сейчас такой конфиг (для ютуба и данного форума):
    -s1 -q1 -Y -Ar -s5 -o1+s -At -f-1 -r1+s -As -s1 -o1 +s -s-1 -An

  5. зашел в конфиг на роутере - там дефолт такой (и он не работает):
    option cmd_opts '--split 1 --disorder 3+s --mod-http=h,d --auto=torst --tlsrec 1+s'
    меняю его на:
    option cmd_opts '-s1 -q1 -Y -Ar -s5 -o1+s -At -f-1 -r1+s -As -s1 -o1 +s -s-1 -An'

  6. делаю restart через System - Startup

  7. проверяю System Log на наличие каких-то ошибок от ciadpi - ничего нет

  8. проверяю Processes - там есть:
    2314 nobody /usr/bin/ciadpi -s1 -q1 -Y -Ar -s5 -o1+s -At -f-1 -r1+s -As -s1 -o1 +s -s-1 -An

  9. проверяю через консоль: netstat -tulpn и там есть строка:
    tcp 0 0 0.0.0.0:1080 0.0.0.0:* LISTEN 2314/ciadpi

НО доступа на устройствах, что подключены к этому роутеру к ютубу и тд. - нет. как будто оно не работает, хотя по всем данным выше - оно активно.

Куда копать и что можно попробовать сделать?

Спасибо!


p.s. пробовал писать в конфиг так:
option cmd_opts '--split 1 --disoob 1 --drop-sack --auto r --split 5 --oob 1+s --auto t --fake -1 --tlsrec 1+s --auto s --split 1 --oob 1+s --split -1 --auto n'

но я так понимаю это необязательно и можно писать короткую версию как выше (как для Android) - верно?)

Так же пробовал добавлять --ip 127.0.0.1 - ничего не меняется.

2024-10-16T15:56:38.575Z
holy-filipp(Filipp)

Здарова ребята. Имеется роутер с OpenWRT, на нём стоит byedpi версии 14.1. Также стоит tun2socks и он настроен на подключение к socks5 от byedpi. В firewall прописано правило для перенаправления траффика из LAN в tun0. Все работало до сегодняшнего дня. Но ночью в ТГ пришло сообщение об изменении IPшника, я сразу понял что снова пропатчили ТСПУ. Перестал работать Ютуб с Дискордом (Дискорд до этого работал без обходов).
Tl;Dr
Нужны новые параметры для byedpi (я не особо разбираюсь как настроить обход под индивидуальный случай), и желательно, если возможно, чтобы Войс дискорда тоже был рабочим через byedpi. Всем добра

2024-10-17T11:13:22.532Z
mark17(Марк)

Спасибо! нужная опция.

в новых версия есть прозрачный прокси если что, можно и без tun2socks обойтись.

попробуйте --fake 1 --disoob 3+s --ttl 3
на ростелекоме в нижнем новгороде youtube работает, правда ttl надо вам подбирать свой, насчет дискорда не могу подсказать, это вам надо по на гитхабе наверное полазить в обсуждениях.

2024-10-17T12:36:03.418Z
holy-filipp(Filipp)

Спасибо за ответ, параметры рабочие, даже с таким же ttl. Можете поподробнее про прозрачный прокси, как его настроить на openwrt?

2024-10-17T17:05:28.969Z
TesterTi(TesterIt)

А как самому собрать exe с исходников гихаба? Может кто-нибудь дать инструкцию для чайников?

2024-10-17T17:12:12.559Z
spv82

Можно форкнуть и в Actions собрать. Для линукса такое настроил Releases · spvkgn/byedpi · GitHub , для винды там еще проще (см. в readme). Сам пока с телефона, неудобно это сделать.

2024-10-17T17:58:23.400Z
yocx_xcoy

Подскажите, пробую эти параметры подсунуть в byedpi.bat и после запустить его (не запуская сервисом) - открывается командная строка и всё.
Ютуб не работает.

Может как-то можно проверить что byedpi работает?

Спасибо!

2024-10-17T18:33:44.568Z
rewhat

а вы прокси прописали?

2024-10-17T18:35:46.242Z
yocx_xcoy

вот тут как раз вопрос - где его и какой прописывать?
пробовал на win10 в настройках писать socks5://127.0.0.1 port 9090
но не понимаю помогает ли.

а второй момент - в рамках винды - это тест, далее хочу его на роутере openwrt запустить-настроить - там я вот не очень понимаю, нужно ли где-то прокси прописывать?

Подскажите пожалуйста.

2024-10-17T19:53:52.365Z
rewhat

В роутерах не шарю, но на винде сокс так можно прописать: How can I set socks proxy on windows? - Super User (либо не морочиться, и использовать nekoray например, ибо так удобнее)

И еще у вас порт неправильный:

-i, --ip <ip>
    Прослушиваемый IP, по умолчанию 0.0.0.0

-p, --port <num>
    Прослушиваемый порт, по умолчанию 1080

Т.е если не используете -i, -p параметры, то прописывайте 127.0.0.1, а порт 1080.

2024-10-17T19:56:47.916Z
yocx_xcoy

Спасибо большое!
Да, есть вариант прописать как по ссылке + там же есть для винды10 в прокси настройках так:
socks=127.0.0.1

Да, про порт - согласен - те конфигурации которые выдает чеккер порт иной, в итоге на винде настроил и указал так:
socks=127.0.0.1 | port 18081

Заработало.


Теперь бы понять как такое настроить на openwrt - что я ставил и как, вот тут

Понимаю что по роутерам это не к вам - но может кто подскажет где и что там дополнительно прописать, чтобы на роутере всё заработало, раз на винде всё заработало с указанием прокси.


В рамках роутера, я думал, что если я там НЕ указываю порт и не указываю ИП, то оно висит на 0.0.0.0 и это как бы будет доступно всем клиентам кто подключен к роутеру - но как будто это не так.

Вот хочу понять а как тогда там сделать надо?

2024-10-17T20:12:24.528Z
mark17(Марк)

вот тут почитайте, правда там с прозрачным прокси с дискордом судя по всему проблемы, для вас скорее всего не подойдет.

Надо скачать mingw и make, посмотрите в ютубе как это сделать, а потом просто откройте в папке с исходниками консоль и вбейте make windows.

2024-10-17T20:13:39.919Z
TesterTi(TesterIt)

Можно добавить параметр --debug 1 или --debug 2, тогда все будет логироваться. А насчет роутера, если что - то можно его заменить хотспотом на windows - подробнее по ссылке Окологудбайдипиайный флуд - #741 by TesterTi

2024-10-17T21:20:44.790Z
TesterTi(TesterIt)

Огромное спасибо! Пойду разбираться

И вам спасибо, но сначала попробую с mingw и make

2024-10-17T21:21:11.743Z
yocx_xcoy

Про логи понимаю, спасибо.
А про хотспот - так у меня задача завести byedpi на роутере, где он уже стоит, чтобы не запускать его на каждом устройстве.

Вот хочу понять, почему он не хочет работать там или как там прокси прописать, аналогично винде - где не работало, пока не прописал.

2024-10-17T21:26:14.770Z
TesterTi(TesterIt)

Возможно тут есть что полезное Поднять на роутере Keenetic · hufrea/byedpi · Discussion #65 · GitHub

2024-10-17T21:33:51.164Z
mark17(Марк)

кстати make не обязательно устанавливать, он в mingw уже есть, я что-то забыл. mingw32-make windows команда.

для того чтобы программа заработала, на нее надо траффик направить через iptables/nftables либо через прозрачный режим, либо с использованием сторонних программ, если не ответит никто, то завтра вечером напишу, там с nftables не так тривиально, как я думал, меня вон человек спросил, я и задумался, сам я через netfilter-queue сижу с другой программой, там всего одна строчка в nft.

2024-10-17T22:03:17.614Z
yocx_xcoy

а --transparent не поможет, если указать в роутере?

судя по ссылке выше (спасибо за неё) - то по умолчанию на роутере оно идёт на 0.0.0.0 и вот в моем понимании, это значит что все клиенты подключенные к нему - будут через него сидеть, но судя по не рабочему ютубу - это не так.

2024-10-17T22:03:22.450Z
TesterTi(TesterIt)

У меня нет роутера, не знаю. Проверьте, может и поможет.

2024-10-17T22:30:58.059Z
spv82

Добавил сборку для винды https://github.com/spvkgn/byedpi/releases/download/latest/byedpi-6dca571-x86_64-w64.zip
Также там есть для 32-бит (i686-w64)

2024-10-18T06:07:11.919Z
Sanek184

Спасибо за компилирование. -o 2 -s -5+se работает отлично

2024-10-18T07:21:19.039Z
yocx_xcoy

Подскажите, а какие есть простые варианты настройки прокси, после настройки byedpi на openwrt? (чтобы все клиенты шли через него)

2024-10-18T07:47:26.280Z
holy-filipp(Filipp)

Спасибо, я в общем забил на прозрачный прокси, буду также через tun2socks сидеть.

К слову войс дискорда фиксится с помощью --udp-fake 1. Ну и в hosts нужно ещё домены дискорда добавить.

У меня другая проблема появилась, вчера конфиг --fake 1 --disoob 3+s --ttl 3 работал на ютуб. Сегодня он не работает на youtube, зато работает на дс. То есть с дискордом всё хорошо, войс работает, он грузится, а у ютуба не грузятся именно видео. В devtoolsах я смотрю на запросы, videoplayback создаются и потом у них появляется статус cancelled. В логах byedpi вот такое:

Fri Oct 18 09:28:21 2024 daemon.err ciadpi[11281]: host: rr8---sn-pivhx-n8vz.googlevideo.com (127)
Fri Oct 18 09:28:21 2024 daemon.err ciadpi[11281]: split: pos=0-1 (1), m: DESYNC_FAKE
Fri Oct 18 09:28:21 2024 daemon.err ciadpi[11281]: split: pos=1-130 (129), m: DESYNC_DISOOB
Fri Oct 18 09:28:21 2024 daemon.err ciadpi[11281]: send: pos=130-1809
Fri Oct 18 09:28:21 2024 daemon.err ciadpi[11281]: desync params index: 1
Fri Oct 18 09:28:21 2024 daemon.err ciadpi[11281]: host: fonts.gstatic.com (154)
Fri Oct 18 09:28:21 2024 daemon.err ciadpi[11281]: accept: fd=45
Fri Oct 18 09:28:21 2024 daemon.err ciadpi[11281]: new conn: fd=46, addr=85.112.121.48:443

В целом ничего выдающегося.
Помогите пожалуйста пофиксить эту проблему, у меня уже голова кружится :woozy_face:

2024-10-18T09:37:10.638Z
danaYatsuta

Прошу прощения если в этой теме уже где-то есть ответ на этот вопрос, я ее прочитала с даты блокировки дискорда и так и не нашла.

Подскажите пожалуйста, в конечном итоге есть какой-нибудь способ заставить войс дискорда работать с ByeDPI на линуксе? Пробовала --udp-fake и заходила на дискорд как с веб клиента на firefox который настроен на использование прокси, так и линукс клиента запущенного через discord --proxy-server=socks5://127.0.0.1:1080, все безрезультатно. Нужен ли еще какой-то софт или через ByeDPI на линуксе заставить голос работать в принципе невозможно?

2024-10-18T10:05:09.711Z
hufrea

@holy-filipp @danaYatsuta
Почему бы вам не использовать Zapret? Это проще, чем возиться с tun2socks.

2024-10-18T10:20:02.467Z
holy-filipp(Filipp)

у меня сейчас упирается всё чисто в настройку byedpi, вся тех часть работает уже

2024-10-18T10:20:41.832Z
danaYatsuta

Честно говоря просто устала возиться и изучать новый софт лол. Но если через запрет будет таки легче, то придется изучать. Спасибо за ответ.

2024-10-18T10:22:42.207Z
Sanek184

Кстати. Если кому достаточно в Windows, чтобы было прописано в системном прокси, то socks5 прописывается именно так (не просто socks) http://socks=127.0.0.1:порт - тогда все приложения,что умеют брать из системного прокси настройки будут работать и на socks5.

2024-10-18T10:47:20.035Z
TesterTi(TesterIt)

Круто, спасибо!

2024-10-18T15:27:41.963Z
TesterTi(TesterIt)

Попробуйте менять --disoob на --oob/--split/--tlsrec, менять 3+s на 1+s 2+s и т.д а также добавить --tls-sni=www.google.com (или drive.google.com или translate.google.ru т.е. на адрес любого доступного сервиса гугла) Плюс поиграйтесь c --ttl от 1 до 10,
Если не поможет, прогоните скрипт гудчека для запрета GoodCheck - блокчек-скрипт для GoodbyeDPI, Zapret, ByeDPI
или блокчек для запрета Подбор рабочего конфига для GGC ютуба через blockcheck для rr8---sn-pivhx-n8vz.googlevideo.com
Будет примерно понятно , какие параметры рабочие и сможете подобрать аналог на byedpi

2024-10-18T15:37:48.945Z
irregular-circle

Да, есть способ заставить войс чат дискорда работать, с запуском byedpi от другого юзера чтобы избежать бесконечной петли трафика и использованием tun2socks или hevsocks5tunnel, но Zapret наверное проще. Если запускать дискорд с флагом --proxy-server, то он просто не будет проксировать udp трафик, нужно его заворачивать в прокси вручную.

2024-10-19T03:27:01.803Z
mark17(Марк)

могу только посоветовать собрать самому или скачать сборку, поддерживающую указание смещения сплита с конца sni. тогда либо --disoob -5+se пробовать (без фейка или с фейком) или Sanek184 скидывал свои параметры -o 2 -s -5+se.

2024-10-19T15:40:15.189Z
3km(Karim)

Добрый днень!
Хочу вынести домены из строки в отдельный файл такого плана -K t -H youtube.txt
Не могу понять где в Linux должен распологаться этот файл?

2024-10-19T21:22:04.973Z
us3r

Все как везде) :

  • либо в каталоге с запускаемым приложением, тода необходимо указать только наименование файла:
    ./byedpi -i 127.0.0.1 -p 1080 -s1 --hosts youtube.txt
  • либо в произвольном каталоге, главное чтобы у приложения был достук к файлу:
    ./byedpi -i 127.0.0.1 -p 1080 -s1 --hosts "/home/user_name/byedpi/youtube.txt"

Не знают только, в каком порядке, в списке параметров должны указываться --hosts, если их более одного и необходимо чтобы к каждому файлу применялись свои правила.

./byedpi -s1 --hosts youtube.txt -s2 --hosts ntc.txt
Или
./byedpi --hosts youtube.txt -s1 --hosts ntc.txt -s2

P.s. исходный ciadpi_64 - переименован в byedpi для удобства.

2024-10-20T02:53:39.596Z
Sanek184

Нужно обязательно каждое правило закрывать условием, например –auto=none : -H list.txt -o 2 –auto=none -H list2.txt -r 2 -f -1 -t 5 –auto=none -H youtube.txt -o 2 -s -5+se –auto=none

2024-10-20T05:21:41.768Z
Rex214

GoodCheck выдал такие варианты для ciadpi

–split 1 --disorder 3+s --mod-http=h,d --auto=torst --tlsrec 1+s
–split 2 --disorder 7
–split 2 --disoob 3+sni --fake 517 --ttl 5
-s 3+s -d 20+s
-s2 -d3
–split 1 --disorder 3+s --mod-http=h,d --auto none --fake -1 --tlsrec 3+h
–split 1 --disorder 3+s --mod-http=h,d --auto none --tlsrec 1+s
–split 2 --disorder 3+s --mod-http=h,d --auto none --tlsrec 1+s
–split 3 --disorder 3+s --mod-http=h,d --auto none --tlsrec 1+s
–split 1 --disorder 1+s --mod-http=h,d --auto none --tlsrec 1+s
–split 1 --disorder 2+s --mod-http=h,d --auto none --tlsrec 1+s
–split 1 --disorder 3+s --mod-http=h,d
–split 1+s --disorder 3+s --mod-http=h,d --auto none --tlsrec 1+s

На первом видео не всегда стартует сразу, и периодически останавливается. Оживает, если перемотать. Другие не лучше первого, некоторые в браузере видео не показывают. Что можно улучшить?

2024-10-22T00:05:22.035Z
Dimon228El(Dimon228 El)

Привет амигосы. Есть какое-то решение для самсунга? Юзаю этот конфиг, но в телеге не грузятся картинки, плюс отваливаются некоторые приложения для работы. Постоянный дрочь кнопки выключит/включить
-s1 -q1 -Y -Ar -s5 -o1+s -At -f-1 -r1+s -As -s1 -o1 +s -s-1 -An
Либо если как-то можно, вставить файл блеклиста, но хз где он на андройде и есть ли вообще

2024-10-22T12:31:30.837Z
us3r

А в режеме прокси не работает?
ByeByeDPI запущен в режеме прокси.
В браузере Firefox установлено расширение FoxyProxy Base, в котором соответсвенно добавлено подключение 127.0.0.1:1080 socks5.

Если не обману, то примерно так --hosts “: yotube.com googlevideo”.

2024-10-22T12:44:35.745Z
Enobarbous

Доброго дня всем.
Не подскажите, кто какие использует конфиги для обхода блокировки сайтов с tls 1.2 (rezka.ag, psiphon.ca для примера)?
Такто все остальные блокировки у меня пробиваются через split +tlsrec, но сайты с tls 1.2 оно (закономерно) не берет. Пару дней пробовал разные варианты fake (+ split + disoob +fake-data +tls-sni +ttl1-64 +tlsrec) с разными параметрами и в разных сочетаниях, но ни в какую.
Погонял blokcheck/zapret, из него рабочие

 --dpi-desync=fake --dpi-desync-fooling=badseq
 --dpi-desync=fake --dpi-desync-fooling=md5sig
 --dpi-desync=syndata --dpi-desync-fake-syndata=tls_clienthello_www_google_com.bin
 --dpi-desync=syndata,split2 --dpi-desync-fake-syndata=tls_clienthello_www_google_com.bin
 --dpi-desync=syndata,disorder2 --dpi-desync-fake-syndata=tls_clienthello_www_google_com.bin

badseq byedpi не умеет, md5sig не работает под вин. С syndata непонятно, но вроде тоже аналога нет?
Так что может у кого есть что-нибудь (не)монструзное (из разряда “десяток сплитов-пяток фейков и еще сверху”) или еще что? А то у меня уже фантазии не хватает)
P.S. Я бы пользовался запретом/гудбаем, но они с фаерволом дружат отвратно. А он, увы, нужен…

2024-10-22T14:50:21.720Z
hufrea

--fake -1 --tlsrec 3+s
--split 10 --fake -1 --fake-offset 10

2024-10-22T15:20:29.141Z
Enobarbous

Примерно это было первое что пробовал, не работает (в том числе и с другими параметрами split и fake-offset). ssl_error_decode_error_alert или ssl_error_rx_malformed_server_hello в браузере

2024-10-22T15:33:58.622Z
Sanek184

А так ? : -r 2 -f -1 -t 5

2024-10-22T20:29:27.495Z
TesterTi(TesterIt)

У меня оба сайта открываются с таким конфигом

--disoob 2+sni --fake 517 --ttl 5 --tls-sni=translate.google.ru

Но значение ttl понятное дело нужно подбирать под себя

2024-10-22T21:46:09.175Z
Enobarbous

Неа, оба варианта не работают, без разницы от значения ttl (я пробовал все в 1-64)
У меня вообще похоже fake ломает обход - стоит добавить даже fake 0 в рабочий набор и кирдык.
В любом случае, спасибо ответившим. И если вдруг у кого будут еще какие мысли, я не откажусь)

2024-10-23T19:16:58.749Z
MayanKoyote(Mayan Koyote)

Вижу что там появились пакеты v0.15 и для 19.07. Можно ожидать для 18.06?

2024-10-30T21:30:49.763Z
spv82

На докерхабе нет контейнеров ниже 19.07 версии.

2024-10-31T03:27:41.236Z
MayanKoyote(Mayan Koyote)

Эх, жаль. Придётся самому тогда. 18.06 - последняя официальная для многих 4/32 была (и с которой на некоторых 4/32 еще оставалось достаточно места под что-нибудь дополнительное).

2024-10-31T06:23:28.002Z
RandomNamelessUser(Random Nameless User)

удалено
*немного темой ошибся, перепостил в тему по андроидовской версии

2024-11-09T14:14:50.772Z
ZugDuk

Настроил прозрачность с использованием tun2socks. Но без отключения в лисе параметра security.tls.enable_kyber не работает (а в винде работает, но мне надо чтоб везде).
Можно это пофиксить?

2024-11-10T20:01:36.525Z
mark17(Марк)

а без использования tun2socks, просто подключаясь браузером через socks работает?

2024-11-11T13:56:52.784Z
ZugDuk

Выяснил поточнее, что нигде никак не работает с включенным kyber. Что это за протокол такой? Почему он не работает через byedpi?

2024-11-11T23:54:53.438Z
mark17(Марк)

вот тут почитайте.

У меня с kyber работает, причина видимо в другом.

С какими параметрами запускаете? и какую версию?

2024-11-12T01:36:32.436Z
ZugDuk

Последнюю версию с параметрами (взяты из этой ветки):
-s1 -q1 -Y -Ar -s5 -o1+s -At -f-1 -r1+s -As -s1 -o1 +s -s-1 -An
что из этого может ломать kyber ?

2024-11-12T13:47:00.912Z
mark17(Марк)

да ничего не должно, более того у меня с вашими параметрами все работает и на винде и на линуксе. Вы когда выключаете security.tls.enable_kyber у вас сразу начинает работать?

2024-11-12T14:18:05.435Z
ZugDuk

Да, довольно четко - включаю ролик ютуба, он не идет, стоит на месте. Затем инвертирую параметр security.tls.enable_kyber в false, проходит секунд 10, данные прогружаются и ролик воспроизводится.

2024-11-12T14:23:37.957Z
mark17(Марк)

ну у меня с вашими параметрами с kyber тоже дольше грузит, но грузит.
А если просто --disorder 3+s --proto tls попробовать?
или --disoob 3+s --proto tls

2024-11-12T14:37:53.020Z
irregular-circle

Мб ещё стоит попробовать -q1 -r25+s или -d1 -s25+s -d30+s для ютуба потестить?

2024-11-12T15:18:40.248Z
ZugDuk

Спасибо! Это сработало. (откуда люди такие умные? наверное нужно меньше ютуба смотреть и больше книг читать))

2024-11-12T15:51:05.420Z
irregular-circle

С включенным кибером сработало?

2024-11-12T16:04:21.641Z
ZugDuk

Ага. Ну я потестирую еще конечно в виндовсе и на смартфонах, а в лисе в линуксе работает с включеным кибером.

2024-11-12T16:07:25.747Z
ZugDuk

ок…

2024-11-12T16:11:05.511Z
ZugDuk

Твоя программа лучше, чем механизм с DNS ответами, работает со списком доменов. Можешь сделать опцию, чтобы можно было перенаправлять трафик от определенных доменов в другой socks5 сервер? Потому что есть много сайтов, трафик к которым лучше заворачивать в xray.

2024-11-16T18:11:27.575Z
hufrea

Там вроде есть режим sniff для точечного перенаправления отдельных доменов. В других прокси-тулчейнах, в singbox, например, точно есть подобное.

2024-11-17T13:17:35.195Z
anonimnyj81(anonimnyj81)

Здравствуйте а подскажите почему может не работать byedpi и прокси ставил. И без прокси. Я про ciadpi для виндовс.

2024-11-17T16:49:12.446Z
mark17(Марк)

что конкретно делаете? как подключаетесь, через системный прокси, через настройки браузера или через pac-файл? какие параметры byepdi? до этого запускался и работал или первый раз настраиваете?

2024-11-18T12:56:36.834Z
anonimnyj81(anonimnyj81)

Запускал через фаерфокс туда вписывал 127.0.0.1 порт 9090 вроде. Пак файлы не использовал. Ещё помню что- то бай дпи ссыпал какую то ошибку сейчас не вспомню. Но не один сайт не открывается даже Яндекс. Это был первый запуск раньше не использовал bye dpi. Запрет и гудбай дпи работают, если что. Конфиг был простой типо ip, порт, disorder и ттл 3

2024-11-18T15:12:22.615Z
mark17(Марк)

ну тут либо в настройках about:config найти параметр network.proxy.allow_hijacking_localhost выставить в true, либо если вам только ютуб нужен, ну и этот сайт, допустим, то проще наверное создать pac-файл, то есть открыть блокнот вбить текст примерно такого содержания:

Спойлер

function FindProxyForURL(url, host) {
if (dnsDomainIs(host, “youtube.com”) ||
dnsDomainIs(host, “googlevideo.com”) ||
dnsDomainIs(host, “ggpht.com”) ||
dnsDomainIs(host, “ytimg.com”) ||
dnsDomainIs(host, “play.google.com”) ||
dnsDomainIs(host, “googleapis.com”) ||
dnsDomainIs(host, “googleusercontent.com”) ||
dnsDomainIs(host, “gstatic.com”) ||
dnsDomainIs(host, “l.google.com”) ||
dnsDomainIs(host, “ntc.party”)) {
return “SOCKS5 127.0.0.1:9090”;
}
}

и сохранить в формате .pac, например firefox_proxy_byedpi.pac и указать к нему путь в настройках прокси. Тогда network.proxy.allow_hijacking_localhost трогать не надо.

2024-11-19T00:13:35.495Z
anonimnyj85(anonimnyj85)

Да помог вариант именно с пак файлом. Грузить вроде начало. А можно сделать чтобы проксировало весь трафик это что нужно прописать?

2024-11-19T15:17:00.440Z
mark17(Марк)

ну если весь трафик надо, то лучше без pac файла, а вы точно вводите адрес в “узел SOCKS” а не http/https? должно работать.

2024-11-19T15:37:21.643Z
anonimnyj85(anonimnyj85)

Глухо только через Пак файл работает. И почему то грузит доступные сайты Яндекс мэил. Ntc не могу открыть. По ходу не судьба бай дпи пользоваться. И ссыпит ошибку ss: invalid version 0x43 (трех значные числа разные )

2024-11-19T18:50:02.052Z
anonimnyj85(anonimnyj85)

Все разобрался спасибо за помощь. Да в cокс надо прописывать. вот конфиг кому надо
-s1 -q1 --ttl 5 --tls-sni=www.google.com
Работает бодро все открывает почти

2024-11-19T22:33:10.442Z
slq

Есть у кого-нибудь список стратегий или может на гитхабе файл со списком, а я криво смотрю?? Пробовал подобрать стратегию через встроенный перебор в байбайдпи, но выкидывает из приложения после проверки нескольких стратегий, на древнем планшете запускал. Хочу попробовать через гудчек прогнать или через само приложение, но разделить на несколько частей, чтобы успеть проверить до выкидывания из приложения.

2024-11-22T08:04:08.219Z
Chatlanin

сравнил ради интереса, goodbyedpi работает шустрее в виндовс

2024-11-30T15:46:52.257Z
PirateSkull(unknown )

Приветствую. Подскажите пожалуйста как запустить bye dpi в linux mint, ubuntu какую версию скачать и какой командой его запустить.

2024-12-11T16:12:55.416Z
ser3zha(Ser3zha)

приветсвую, вот видеоинструкция, сам не проверял правда, загуглил за вас
https://www.youtube.com/watch?v=zlWMp8IlGCU

2024-12-11T16:41:08.804Z
PirateSkull(unknown )

Благодарю. Попробую.

2024-12-11T17:01:57.755Z
TesterTi(TesterIt)

@hufrea Подскажите, плс, будет ли работать задание сразу 2 фейков для разных протоколов?

--hosts "yt.txt" --fake -5 --ttl 5 --proto t,h --fake-data ":\x16\x03\x01\x02\x87\x01" --proto u --fake-data ":\xc3\x00\x00\x00\x01\x08" --udp-fake 11 --auto=n

Или так не выйдет?

2025-01-02T09:43:17.292Z
hufrea

Да. В примере, в первой группе, для yt.txt, будут использоваться дефолтные фейки, для других сайтов с TLS и HTTP - ":\x16\x03...", ":\xc3\x00..." для UDP, для остального (нераспознанный TCP) дефолт.

2025-01-03T18:43:34.423Z
TesterTi(TesterIt)

Отлично. Спасибо большое!

2025-01-03T19:09:48.139Z
zzr

руки дошли пощупать ету вашу байдпи - тоже топчик, из преимуществ - не требуются права админисратора чтобы запускать ето, что облегчает использование в корп. environment

2025-01-15T13:00:02.075Z
Aleksandr75ru

Подскажите, пожалуйста. Кто-нибудь может пробить данный сайт через ByeDPI - https://animego.online/

Через запрет получается пробить, а вот через ByeDPI вообще никак. Пробовал, в том числе, пробить этот домен через автоподбор стратегий в форке ByeByeDPI, но тоже безуспешно. Пробовал подобрать свои стратегии, тоже не густо. Все остальное пробивается без проблем, но этот сайт отказывается упорно.
Также попробовал стратегии, которые здесь предлагают, тоже безуспешно.

2025-01-16T16:08:40.819Z
t2000

Этот сайт один из тех для которых нужно применять реальный и целый клиентхелло, вот еще такойже сайт novichok-lordfilm.com

2025-01-16T16:53:26.163Z
Aleksandr75ru

То есть, пробить данные сайты в ByeDPI нельзя?
Или вы имеете в виду использование --tls-sni или --fake-data?

Хотя, их я тоже пробовал и это не дало пробития.

2025-01-16T16:57:30.587Z
destiny08-lab(Destiny)

глянул что там на главной - ТАКОЕ я бы и сам забанил=))

2025-01-16T18:07:01.698Z
t2000

чтобы попасть на такие сайты хватает этого -i 127.0.0.1 --disorder 1 --fake -1 --tls-sni=www.google.com

2025-01-16T19:41:01.377Z
t2000

смотрел там сериал - лихие, вполне не плохой

2025-01-16T19:42:16.824Z
Aleksandr75ru

Большое спасибо, что откликнулись!
Но, к сожалению, пробить эти сайты через Bye так и не смог.
Ладно, видимо не судьба.

2025-01-16T20:21:12.041Z
Datura_metel(Datura metel)

Not working.
freebsd-test.go:

package main

import (
	"flag"
	"fmt"
	"net"
	"runtime"
	"syscall"
	"time"
	"unsafe"
)

const SF_SYNC = 0x00000004
const SF_NOCACHE = 0x00000010

func FreeBSDSendfile(outfd int, infd int, offset *int64, count int, flags int) (written int, err error) {
	var writtenOut uint64 = 0
	_, _, e1 := syscall.Syscall9(syscall.SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), uintptr(flags), 0, 0)

	written = int(writtenOut)

	if e1 != 0 {
		err = e1
	}
	return
}
func Msync(mem []byte, flags int) error {
	_, _, errno := syscall.RawSyscall6(
		syscall.SYS_MSYNC,
		uintptr(unsafe.Pointer(&mem[0])),
		uintptr(len(mem)),
		uintptr(flags),
		0, 0, 0)
	if errno != 0 {
		return errno
	}
	return nil
}
func p(e error) {
	if e != nil {
		panic(e)
	}
}
func main() {
	var (
		dstStr      string
		ttl         int
		tmpFilePath string
	)
	flag.StringVar(&dstStr, "dst", "9.9.9.10:443", "")
	flag.IntVar(&ttl, "ttl", 10, "")
	flag.StringVar(&tmpFilePath, "path", "/tmp/sendfile-test1.txt", "")
	flag.Parse()

	dst, err := net.ResolveTCPAddr("tcp", dstStr)
	p(err)
	isIPv6 := dst.IP.To4() == nil
	conn, err := net.DialTCP("tcp", nil, dst)
	p(err)
	defer conn.Close()
	raw, _ := conn.SyscallConn()
	var sockFD int
	raw.Control(func(t uintptr) {
		sockFD = int(t)
	})
	if isIPv6 {
		syscall.SetsockoptInt(sockFD, syscall.IPPROTO_IPV6, syscall.IPV6_UNICAST_HOPS, ttl)
	} else {
		syscall.SetsockoptInt(sockFD, syscall.IPPROTO_IP, syscall.IP_TTL, ttl)
	}

	fileFD, err := syscall.Open(tmpFilePath, syscall.O_CREAT|syscall.O_RDWR|syscall.O_SYNC, 0o600)
	p(err)
	defer func() {
		syscall.Close(fileFD)
		syscall.Unlink(tmpFilePath)
	}()
	err = syscall.Ftruncate(fileFD, 4)
	p(err)
	firstSegment, err := syscall.Mmap(fileFD, 0, 4, syscall.PROT_WRITE, syscall.MAP_SHARED)
	p(err)
	defer syscall.Munmap(firstSegment)
	copy(firstSegment, []byte("haha"))

	var n int64
	fmt.Printf("GOOS: %s\n", runtime.GOOS)
	if runtime.GOOS == "freebsd" {
		_, err = FreeBSDSendfile(sockFD, fileFD, &n, 4, SF_NOCACHE)
	} else {
		_, err = syscall.Sendfile(sockFD, fileFD, &n, 4)
	}
	p(err)

	copy(firstSegment, []byte("1234"))
	err = Msync(firstSegment, syscall.MS_SYNC)
	p(err)
	time.Sleep(100 * time.Microsecond)

	if isIPv6 {
		syscall.SetsockoptInt(sockFD, syscall.IPPROTO_IPV6, syscall.IPV6_UNICAST_HOPS, 64)
	} else {
		syscall.SetsockoptInt(sockFD, syscall.IPPROTO_IP, syscall.IP_TTL, 64)
	}
	_, err = conn.Write([]byte("567\n"))

	time.Sleep(4 * time.Second)
}

fix-syscall9.patch:

--- a/freebsd-test.go
+++ b/freebsd-test.go
@@ -13,7 +13,7 @@
 const SF_SYNC = 0x00000004
 const SF_NOCACHE = 0x00000010
 
-func FreeBSDSendfile(outfd int, infd int, offset *int64, count int, flags int) (written int, err error) {
+/*func FreeBSDSendfile(outfd int, infd int, offset *int64, count int, flags int) (written int, err error) {
 	var writtenOut uint64 = 0
 	_, _, e1 := syscall.Syscall9(syscall.SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), uintptr(flags), 0, 0)
 
@@ -23,7 +23,7 @@
 		err = e1
 	}
 	return
-}
+}*/
 func Msync(mem []byte, flags int) error {
 	_, _, errno := syscall.RawSyscall6(
 		syscall.SYS_MSYNC,
@@ -85,7 +85,7 @@
 	var n int64
 	fmt.Printf("GOOS: %s\n", runtime.GOOS)
 	if runtime.GOOS == "freebsd" {
-		_, err = FreeBSDSendfile(sockFD, fileFD, &n, 4, SF_NOCACHE)
+		//_, err = FreeBSDSendfile(sockFD, fileFD, &n, 4, SF_NOCACHE)
 	} else {
 		_, err = syscall.Sendfile(sockFD, fileFD, &n, 4)
 	}

GOOS=freebsd go build freebsd-test.go
patch -p 1 < fix-syscall9.patch
GOOS=linux go build -o linux-test freebsd-test.go

I only tested sendfile() on FreeBSD-14.2-RELEASE-amd64-bootonly.iso .

2025-01-17T06:20:45.060Z
hufrea

I wrote similar code, but it works for me on FreeBSD 14.1 (however, i’m testing in virtualbox). Can you check this?

2025-01-17T16:28:15.215Z
Datura_metel(Datura metel)

I have tested fbsd_sf branch, still not working for me. My Configuration:
GUI frontend: virt-manager
hypervisor: KVM
emulator: QEMU-system
network: default
virsh net-dumpxml default :

<network connections='1'>
  <name>default</name>
  <uuid>5f1aaee0-c200-5a54-9b03-40d2a96c69a5</uuid>
  <forward mode='nat'>
    <nat ipv6='yes'>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='66:3c:4a:64:ef:d8'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
  <ip family='ipv6' address='fdf3:a26d:a7d0:3f82::1' prefix='64'>
  </ip>
</network>
2025-01-18T02:20:31.364Z
y5uhf

Кто-нибудь может подсказать конфиг для yt music? Текущий конфиг, на котором youtube работает в yt music не может самое главное - воспроизводить музыку, интерфейс и прочий функционал грузится.
Флаги командой строки:

s1 -q1 -Y -Ar -s5 -o1+s -At -f-1 -r1+s -As -s1 -o1 +s -s-1 -An

2025-01-24T17:55:12.215Z
etry374e

разные провайдеры, разные настройки тспу, у других будет работать конфиг который у вас не будет и наоборот, подбирайте сами прочитав расшифровку ключей

2025-01-24T18:04:00.593Z