GoodbyeDPI
GoodbyeDPI copied to clipboard
PowerTunnel can circumvent ISP torrent throttling but not goodbyeDPI?
Operating system / операционная система
Windows 11 22000.493
Running as service / Запуск программы как сервис
I run it as a regular program / Запускаю программу обычным образом
Describe the issue / Опишите проблему
Although PowerTunnel is based on goodbyeDPI, I was surprised that only PowerTunnel seems to circumvent my ISP's bittorrent throttling. goodbyeDPI can unlock all blcoked website so it works but it can't do anything to bittorrent throttling. I tried all presets (1-6) all of them had no effect on bittorrent throttling.
Are there any paramaters that I can try changing to make it able to circumvent my ISPs throttling just like PowerTunnel does. I'm using qBittorrent. BTW, PowerTunnel has an option called "https: full chunking mode" that when disabled it doesn't circumvent the throttling. So is there an equivalent to powertunnel's "https: full chunking mode" in goodbyeDPI?
edit: I think this is the relevant code for full chunking from power tunnel:
public static Collection<byte[]> _powerTunnelChunk(ByteBuf buf, int chunkSize, boolean fullChunking) {
byte[] bytes = new byte[buf.readableBytes()];
buf.readBytes(bytes);
int len = bytes.length;
Collection<byte[]> byteChunks = new ArrayList<>();
if(fullChunking) {
// Full Chunking
int i = 0;
while (i < len) {
byteChunks.add(Arrays.copyOfRange(bytes, i, i += chunkSize));
}
} else {
byteChunks.add(Arrays.copyOfRange(bytes, 0, chunkSize));
byteChunks.add(Arrays.copyOfRange(bytes, chunkSize, len));
}
return byteChunks;
}
Thanks for the great work on this project.
Additional information / Дополнительная информация
No response
GoodbyeDPI applies circumvention techniques only on port 80 and 443 by default, and additional ports could be added with --port
option, but only for each individual port.
I have plans to apply GoodbyeDPI to every connection of individual programs/processes, but that's not implemented yet.
Oh great, thanks for clarifiation.. from my understanding -w apply goodbyeDPI on all ports?
Are there any plans to implement something similar to "full chunking mode" of powertunnel? as it seems to be the crucial part of powertunnel that confuses my ISPs throttling mechanism.. unfortunately i'm not familiar with c language so I wasn't able to play around much with goodbyeDPI code.
from my understanding -w apply goodbyeDPI on all ports?
No, it only starts to search for HTTP requests on all additional ports passed with --port
.
Are there any plans to implement something similar to "full chunking mode" of powertunnel?
I don't know what is full chunking mode, but this may be already implemented by shrinking the window size. I'll think how it could be implemented.
Hope you are having a nice day valdik. do you know why goodbyedpi crashes after few seconds of working when compiled with edited line 288 to WinDivertOpen("true", 0, 0, 0)
in goobyedpi.c
? i was trying to make it capture all traffic.. it works for first few seconds then crashes with this edit.. unfortuantly i'm not versed in C language at all so i've been stepping on a minefield :(
Since modification of the TCP header, which includes Window Size, is impossible without administrator rights and without access to the low-level network, PowerTunnel, upon receiving the packet data, manually splits them into two packets - the first from 0 to N and the second from N to the end, which was recently implemented in GoodbyeDPI as Native Fragmentation, opposed to setting Window Size. What is called "Full Chunking Mode" splits the packet not into 2, but into (packet length / N), where N is the fragment (or chunk) size. I didn't think it had any practical use, this option was never enabled by default and I thought about removing it altogether.
goodbyedpi crashes after few seconds of working when compiled with edited line 288 to
WinDivertOpen("true", 0, 0, 0)
ingoobyedpi.c
? i was trying to make it capture all traffic.. it works for first few seconds then crashes with this edit..
~~Your filter is wrong and does not comply with WinDivert filter language.~~
Also, after a very cursory look at the filter, it seems to me that the program only listens for packets that meet certain conditions (the TCP SYN/ACK flags). Perhaps you can achieve what you want by removing the check for ports in FILTER_STRING_TEMPLATE
and FILTER_PASSIVE_STRING_TEMPLATE
.
IGNORE THIS REPLY.
I think you should look into lines 1291 and 1296 and rewrite send_native_fragment
(or create a new option for that) as a loop which sends packets each sized N (except the last one) like ~~this, but without using arrays and with sending packets instantly (it's something I should have done to save memory)~~ this, but @ValdikSS knows better.