Skip to main content

Faking

The Faking tab holds methods for sending fake packets and modifying real ones to deceive the DPI. Each section is a separate accordion in the interface.

See the Payloads section for payload types and generation.

Fake SNI packets

Sends packets with fake contents before the real ClientHello. The DPI analyzes the fake packet while the real data passes unnoticed. The fake packet does not reach the server thanks to the chosen strategy.

Fake strategy

Picks how the fake packet becomes unprocessable to the server:

StrategyMechanism
TTLReduced TTL - the packet expires on an intermediate hop and never reaches the server
Random SequenceRandom TCP sequence number - the server drops packets with an unexpected seq
Past SequencePast sequence number - the server has already processed that seq and ignores the repeat
TCP CheckInvalid TCP checksum - the server kernel drops the packet before processing
MD5 SumTCP MD5 option - a server without configured MD5 drops the packet
TCP TimestampStale TCP timestamp - the server drops the packet because its timestamp is too far in the past

Payload type

The content of the fake packet. Full description of every type is in Payloads.

TypeContents
Random1200 random bytes
Preset: GoogleTLS ClientHello pretending to be Google
Preset: DuckDuckGoTLS ClientHello pretending to be DuckDuckGo
Generated payloadOptimized ClientHello from Settings -> Payloads
All zeros1200 zero bytes
Inverted originalBitwise inversion of the real TLS packet
Generated payloads

If no payload is available in the list, generate them first in Settings -> Payloads.

Parameters

ParameterDescriptionRange
Fake TTLTTL for fake packets. Must be enough to reach the DPI but expire before the server1-64
Sequence offsetTCP sequence number shift (for pastseq/randseq strategies)-
Timestamp decrementAmount to subtract from the TCP timestamp (for the timestamp strategy, default 600000)-
Fake packet countHow many fake packets to send before the real data1-20
Picking TTL

The right TTL depends on the number of network hops between you and the provider's DPI. Discovery picks TTL automatically. When tuning manually, start at 3 and adjust.

TLS modifications for fake packets

If the payload type contains a TLS structure (not Random and not all zeros), extra modifications for the fake ClientHello are available:

ParameterDescription
Randomize TLS RandomReplaces the 32-byte Random field in the fake ClientHello with random bytes. Without it, the DPI may notice the Random field is identical in the fake and the real packet
Duplicate Session IDCopies the Session ID from the real ClientHello into the fake one. The DPI may use Session ID to tie packets together

Fake SYN packets

Sends fake SYN packets during the TCP handshake - before the real connection begins. Confuses the DPI even before the connection is established.

warning

This is an aggressive technique - fake SYNs may affect some network equipment.

ParameterDescriptionRange
SYN MD5 SignatureSend a fake SYN with a TCP MD5 option before the real handshake-
Payload lengthSize of data in the fake SYN. 0 = header only, >0 = attach a fake TLS payload0-1200
TTLTTL for fake SYN packets1-100

TCP Desync

Desync injects fake TCP control packets (RST/FIN/ACK) with corrupted checksums and low TTL. These packets confuse stateful DPI but are dropped by the real server.

Desync mode

ModeWhat it sends
RSTFake RST packets with bad checksums - the DPI considers the connection torn down
FINFake FIN packets with stale sequence numbers - the DPI considers the connection finished
ACKFake ACK packets with random future sequence/ack numbers - the DPI loses state
ComboSequence of RST + FIN + ACK
FullFull attack: fake SYN, overlapping RST, PSH, and URG packets

Desync parameters

ParameterDescriptionRange
Desync TTLLow TTL ensures fake packets expire before the server1-50
Packet countNumber of fake packets per desync attack1-20
Post-ClientHello RSTSend a fake RST after the ClientHello to remove the connection from the DPI tracking table-

Window manipulation

Sends fake ACK packets with altered TCP window sizes before the real packet. Fakes use low TTL - they expire before the server but confuse the DPI on intermediate hops.

ModeDescription
Zero windowFake packets: first window=0, then window=65535
Random3-5 fake packets with random window sizes from the configured list
OscillationCycles through custom window values
EscalationGradual increase: 0 -> 100 -> 500 -> 1460 -> 8192 -> 32768 -> 65535

In Random and Oscillation modes a custom list of window values (0-65535) can be specified. When the list is empty, defaults are used.


Incoming response bypass

Manipulates the server's incoming responses. Used against DPI that throttles connections after a certain amount of data has been transferred (~15-20 KB). b4 injects fake packets toward the server that the DPI sees but that never reach the destination.

Mode

ModeDescription
Fake packetsInjects broken ACK packets toward the server with low TTL on every incoming data packet
Reset injectionInjects fake RST packets once the incoming byte threshold is reached
FIN injectionInjects fake FIN packets once the threshold is reached
Desync ComboInjects an RST+FIN+ACK combo once the threshold is reached

Corruption strategy

How the fake packet becomes unprocessable:

StrategyDescription
Bad ChecksumCorrupt the TCP checksum - packets get dropped by the kernel
Bad SequenceCorrupt the sequence number - packets get ignored by the TCP stack
Bad ACKCorrupt the ACK number - packets get ignored by the TCP stack
RandomRandom method pick per packet
AllAll corruptions at once: bad seq + bad ack + bad checksum

Incoming parameters

ParameterDescriptionRange
Fake TTLLow TTL ensures fakes expire before the server1-20
Fake countNumber of fake packets per injection1-10
Min thresholdMinimum amount of incoming data before triggering (KB)5-50
Max thresholdMaximum threshold - randomized between min and max per connection5-50
Thresholds and Fake mode

In Fake packets mode, thresholds are unused - fakes are sent on every incoming packet. Thresholds only apply to Reset, FIN, and Desync Combo modes.


ClientHello mutation

Modifies the structure of the real TLS ClientHello (not a fake). Randomizes the extension order and adds noise so the ClientHello does not match known DPI signatures.

Mutation changes the real packet

Unlike other sections on this tab, mutation modifies the real ClientHello that reaches the server. If a site stops working after mutation is turned on, disable it.

Mutation mode

ModeDescription
GREASE ExtensionsInsert GREASE extensions to deceive the DPI
PaddingAdd a padding extension up to a target size
Fake ExtensionsInsert fake/unknown TLS extensions
Fake SNIsAdd extra fake SNI entries
RandomRandomize extension order and add noise
AdvancedCombine several mutation techniques with manual tuning

Parameters by mode

GREASE:

ParameterDescriptionRange
GREASE countHow many GREASE extensions to insert1-10

Padding:

ParameterDescriptionRange
Padding sizeTarget ClientHello size with padding256-16384 bytes

Fake Extensions:

ParameterDescriptionRange
Fake Extensions countHow many fake TLS extensions to insert1-15

Fake SNIs:

Adds extra SNI values to the ClientHello. Enter domains (for example, ya.ru, vk.com) - they are injected into the SNI extension alongside the real domain.

Advanced exposes every parameter above for manual combination.