Skip to content
Snippets Groups Projects
Commit 22c9dc3f authored by Yawning Angel's avatar Yawning Angel
Browse files

Add support for enabling IAT obfuscation and biased WDist.

Golang's command line parser is slightly cumbersome to use with
subcommands, so the arguments are "obfs4-iatObufscation" and
"obfs-distBias" instead of obfsproxy style subcommands.
parent 339c63f0
No related branches found
No related tags found
No related merge requests found
......@@ -32,6 +32,7 @@ package obfs4
import (
"bytes"
"crypto/sha256"
"flag"
"fmt"
"math/rand"
"net"
......@@ -55,25 +56,27 @@ const (
privateKeyArg = "private-key"
seedArg = "drbg-seed"
iatCmdArg = "obfs4-iatObfuscation"
biasCmdArg = "obfs4-distBias"
seedLength = 32
headerLength = framing.FrameOverhead + packetOverhead
clientHandshakeTimeout = time.Duration(60) * time.Second
serverHandshakeTimeout = time.Duration(30) * time.Second
replayTTL = time.Duration(3) * time.Hour
// Use a ScrambleSuit style biased probability table.
biasedDist = false
// Use IAT obfuscation.
iatObfuscation = false
// Maximum IAT delay (100 usec increments).
maxIATDelay = 100
maxIATDelay = 100
maxCloseDelayBytes = maxHandshakeLength
maxCloseDelay = 60
)
// iatObfuscation controls if Inter-Arrival Time obfuscation will be enabled.
var iatObfuscation bool
// biasedDist controls if the probability table will be ScrambleSuit style or
// uniformly distributed.
var biasedDist bool
type obfs4ClientArgs struct {
nodeID *ntor.NodeID
publicKey *ntor.PublicKey
......@@ -573,6 +576,11 @@ func (conn *obfs4Conn) padBurst(burst *bytes.Buffer) (err error) {
return
}
func init() {
flag.BoolVar(&iatObfuscation, iatCmdArg, false, "Enable obfs4 IAT obfuscation (expensive)")
flag.BoolVar(&biasedDist, biasCmdArg, false, "Enable obfs4 using ScrambleSuit style table generation")
}
var _ base.ClientFactory = (*obfs4ClientFactory)(nil)
var _ base.ServerFactory = (*obfs4ServerFactory)(nil)
var _ base.Transport = (*Transport)(nil)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment