ByeDPI: обсуждение

Кажется, не работает или что-то не так делаю?
Запускаю с --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 не срабатывает?

–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 уже нет смысла.

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

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

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

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

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

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

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

я так понимаю вся неопределеность возникает на 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 в остальных?

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

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

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 байтов)

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

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

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/

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
}

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

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

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

Нет.

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

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

вроде выше писали про работу 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)