Commit Graph

176 Commits

Author SHA1 Message Date
ValdikSS a5c2f9fac9 Introduce -5 and -6 modes and make -5 default
Modern modesets (more stable, more compatible, faster):
 -5          -f 2 -e 2 --auto-ttl --reverse-frag (this is the default now)
 -6          -f 2 -e 2 --wrong-seq --reverse-frag
2021-12-25 13:56:57 +03:00
ValdikSS 11c322aaed Show fragmentation value issues only when Window Size is used 2021-12-25 13:07:39 +03:00
ValdikSS 88d4a60cdf Merge branch 'badseq_for_master' into master 2021-12-25 12:30:08 +03:00
ValdikSS b45b463d51 Update readme 2021-12-25 12:24:25 +03:00
ValdikSS 80fcd9c5cf Replace required/optional brackets in the readme 2021-12-25 12:24:25 +03:00
ValdikSS 21ff80b43c Automatic TTL value picker for --set-ttl Fake Packet mode
This is a per-connection (per-destination) automatic TTL adjusting feature.
Basically a --set-ttl mode where you don't need to set specific TTL value.

It works as follows:
 1. All incoming SYN/ACKs (the response to client's SYN) are intercepted
 2. TTL value is extracted from SYN/ACK
 3. New TTL is calculated with the simple formula:
    128 > extracted_ttl > 64: // Server is running Windows
      fakepacket_ttl = 128 - extracted_ttl - decrement
    64 > extracted_ttl > 34: // Server is running Linux/FreeBSD/other
      fakepacket_ttl = 64 - extracted_ttl - decrement
 4. Fake packet is sent

To comply with the multi-path multi-hop server connections
where 1 hop dispersion is not rare, decrement should be at least of
value "2", which is the default.

The patch does not process "too strange" TTL values (bigger than 128,
less than 34).
2021-12-25 12:24:25 +03:00
ValdikSS bbb6af89fe New Fake Packet circumvention method: wrong SEQ/ACK numbers
This method sends Fake Packet with the TCP SEQ/ACK numbers "in the past":
-66000 is used for ACK (right out of the ACK permissive window in Linux stack),
-10000 is used for SEQ (without any reasoning).

This method is pretty effective in Russia.
It also could be handy in a networks which prohibit changing TTL values
(mobile networks with tethering block/premium feature).
2021-12-25 11:55:26 +03:00
ValdikSS b57a204d96 Apply each Fake Packet method to each packet separately
Before: --set-ttl and --wrong-chksum generated single Fake Packet with both low TTL and incorrect checksum.
Now:    --set-ttl and --wrong-chksum generate two packets: one with low TTL, another with incorrect checksum.
2021-12-25 10:49:26 +03:00
ValdikSS 3899a719c1 Update Makefile, make fortify work on modern mingw compilers 2021-12-25 10:24:43 +03:00
ValdikSS b9682ac222 Print parsed hostnames in DEBUG mode 2021-12-25 10:24:43 +03:00
ValdikSS 35c6e401db Handle TLS SNI in blacklist option
Now blacklist applies not only to HTTP websites, but also to HTTPS.

Fixes #213
2021-12-25 10:23:43 +03:00
ValdikSS cf7d1c69e0 Add TLS Server Name Indication (SNI) extractor 2021-12-25 10:09:37 +03:00
ValdikSS 5b79d8e8ba Update Makefile, make fortify work on modern mingw compilers 2021-12-25 01:50:34 +03:00
ValdikSS 787c4d25c3 Update readme 2021-12-24 22:28:59 +03:00
ValdikSS 7d50748e2e GoodbyeDPI version 0.1.7 2021-12-24 22:17:32 +03:00
ValdikSS e28cb52645 Send native-fragged fragments in the reversed order
Some websites (or more precisely, TLS terminators/balancers) can't
handle segmented TLS ClientHello packet properly, requiring the whole
ClientHello in a single segment, otherwise the connection gets dropped.

However they still operate with a proper TCP stack.
Cheat on them: send the latter segment first (with TCP SEQ "in the future"),
the former segment second (with "current" SEQ), allowing OS TCP
stack to combine it in a single TCP read().

This fixes long-standing number of TCP fragmentation issues:
Fixes #4, #158, #224, #59, #192 and many others.
2021-12-24 22:07:07 +03:00
ValdikSS e3638786da Add Native Fragmentation support (without window size)
This patch adds `--native-frag` option for userspace TCP
segmentation (packet splitting), without shrinking
TCP Window Size in SYN/ACK.

Compared to Window Size shrinking, this method does not require
waiting for ACK, which saves two RTTs.

This is preferrable method of operation since it has no cons.
It's faster and easier to handle in the software.
2021-12-24 21:36:43 +03:00
ValdikSS ad60d30caa Fix fake packet handling without other modifying parameters
Fixes #150
2021-12-24 21:30:15 +03:00
ValdikSS 505b8bf516
Merge pull request #171 from msekmfb/master
Add PowerTunnel for Android to similar projects
2020-03-08 14:38:40 +03:00
msekmfb 0c04f201eb
Add PowerTunnel for Android to similar projects 2020-03-08 11:11:35 +03:00
ValdikSS 19b777cdb2
Update README.md
Add PowerTunnel (manual merge of #168)
2020-02-09 22:24:43 +03:00
ValdikSS b69ab64d5d
Update README.md 2020-02-09 19:22:30 +03:00
ValdikSS b5d75a6c8e Version v0.1.6 2019-10-31 22:36:29 +03:00
ValdikSS f2de8fce8d Fake Request Mode 2019-10-31 22:36:12 +03:00
ValdikSS 2b3e4a4683
Merge pull request #135 from alisharifi76/master
Add 'GreenTunnel' to 'Similar projects' section.
2019-04-03 01:33:02 +03:00
alisharifi76 7e2f782376
Add 'GreenTunnel' to 'Similar projects' section. 2019-03-29 22:32:05 +04:30
ValdikSS 7a0b8f5229
Update issue templates 2019-02-18 01:33:03 +03:00
ValdikSS f569c64aca
Update issue templates 2019-02-18 01:25:06 +03:00
ValdikSS 5459181fca
Merge pull request #121 from drogga/patch-1
Update README.md
2019-01-31 15:29:18 +03:00
drogga 23485b67b4
Update README.md
add KB3033929 download link for Windows 7 x64
2019-01-31 21:23:41 +09:00
KOLANICH ff4c11a6eb Integers fixes (with small modifications), closes #84
Signed-off-by: ValdikSS <iam@valdikss.org.ru>
2019-01-03 19:31:32 +03:00
ValdikSS 1c7fe5f843 Use newlines for current options information 2019-01-03 16:10:26 +03:00
ValdikSS 46db057662 Add version number into greeting message 2019-01-03 16:10:26 +03:00
ValdikSS b95c45ee62
Update README.md 2018-10-14 18:24:36 +03:00
ValdikSS 39507e66e0
Update README.md 2018-07-24 15:54:55 +03:00
ValdikSS c4d0ba1297 Skip impostor and loopback packets. Fixes #53. 2018-07-24 15:49:50 +03:00
ValdikSS d6c2b825aa
Update README.md 2018-07-20 16:37:19 +03:00
ValdikSS aad03f2e4a Enable PIE, High Entropy ASLR and add more warnings to Makefile 2018-07-19 21:31:38 +03:00
ValdikSS a028cb01f4 WinDivert 1.4 support 2018-07-19 21:31:38 +03:00
ValdikSS 38b1ff1a92 Fix -f and -e options 2018-07-19 21:31:37 +03:00
ValdikSS 3bd92d67ac
Merge pull request #83 from KOLANICH/editorconfig
Added .editorconfig
2018-06-26 22:08:15 +03:00
KOLANICH 464bbcbb6b Added .editorconfig 2018-05-16 18:35:31 +03:00
ValdikSS 50e70ace76 Handle HTTP redirects within IPv6 Flow Label = 0x00 packets 2018-02-17 18:26:16 +03:00
ValdikSS 135c97ae69 Move program source code to src directory 2018-02-17 15:22:38 +03:00
ValdikSS c377119136 Update README.md 2018-02-17 15:21:51 +03:00
ValdikSS 185a0e0211 Merge branch 'ipv6' into masterv6 2018-02-16 23:36:26 +03:00
ValdikSS 860f483ac3 IPv6 DNS redirection 2018-02-16 19:45:55 +03:00
ValdikSS 3d36127f5b Handle IPv6 packets and prepare for IPv6 DNS redirection 2018-02-16 17:35:24 +03:00
ValdikSS aa28d3e12a Make sure to search DLLs only in safe path, not in current working dir 2018-02-15 15:41:28 +03:00
ValdikSS dc4d0a36d9 Update README.md 2018-01-21 14:37:05 +03:00