Skip to content

Commit 12a4287

Browse files
doxxdoxx
doxx
authored and
doxx
committed
Added UNTESTED -p proxy support. Please someone test it and let me know if it works.
1 parent 4dea4de commit 12a4287

7 files changed

+40
-10
lines changed

bin/checksums.txt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
# DarkFlare Binary Checksums
2-
# Generated: Mon Dec 9 18:14:05 UTC 2024
2+
# Generated: Sun Dec 22 18:06:43 UTC 2024
33

4-
1d4017ad4a6ace56edf39528a7511b06bfbb2444badda2469e82fdfc14f02a37 checksums.txt
5-
fdcb0991c621b858fc467323eff3f6060df8158e69a2072df292a155d1af910c darkflare-client-darwin-amd64
6-
220e2c7395c6da0d77e2d69bb87eda0d02b81458929d999bcccd921343f993c2 darkflare-client-darwin-arm64
7-
43653e4eda240d527b58eea152d411cb3daa075ce8e022ff487f163d0163bfb4 darkflare-client-linux-amd64
8-
99042d7a72f3da8c3189a4a8ad2ba5a672c48bf08f6e7a90818ead6384067ca7 darkflare-client-linux-arm64
9-
27f404822f45afa0675a75fcf374c5c7f581cec34bf5f2f4dbad8f168ec810b8 darkflare-client-windows-amd64.exe
4+
7aca8ba2f3424a8fc7bd5b318ea64b065e2025c04b3bf56b75a580054485b65d checksums.txt
5+
b5b99d41710c1fa7c5972c16e2569e9669a5f33b3a47a43637b3c759a0b7c37e darkflare-client-darwin-amd64
6+
5fddf0bdeb8edbad23480667c52d0e80589796bd296cf0ddfde9687977af54c2 darkflare-client-darwin-arm64
7+
701ca0f8d425df0b081335d85209e3888835738d607b5595077fe53cf10ece80 darkflare-client-linux-amd64
8+
0c0576ade0937f2f5ff6999afcf22e2513f91f48aeaa0234552b7c2b9e1b509a darkflare-client-linux-arm64
9+
6d581afcdd58545577f6fe37f984237e8ceafb3a9e279128cb729e5d2507ceae darkflare-client-windows-amd64.exe
1010
047ea2e4b7adce407464ab539325d95e9258c25a83639384cea715641c6f5ca5 darkflare-server-darwin-amd64
1111
448c05be509e93de7f6dbf61121b52487654732b2b4424966715d27867df8a77 darkflare-server-darwin-arm64
1212
100ad4b1cf6f141616235be265620cf51eb12deae4c230516e6c55d28e643558 darkflare-server-linux-amd64

bin/darkflare-client-darwin-amd64

52.5 KB
Binary file not shown.

bin/darkflare-client-darwin-arm64

69.1 KB
Binary file not shown.

bin/darkflare-client-linux-amd64

60.1 KB
Binary file not shown.

bin/darkflare-client-linux-arm64

78.8 KB
Binary file not shown.
57 KB
Binary file not shown.

client/main.go

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323

2424
"crypto/x509"
2525

26+
"golang.org/x/net/proxy"
2627
"golang.org/x/time/rate"
2728
)
2829

@@ -48,6 +49,7 @@ type Client struct {
4849
writeBufferSize int
4950
pollInterval time.Duration
5051
batchSize int
52+
proxyURL string
5153
}
5254

5355
func generateSessionID() string {
@@ -59,7 +61,7 @@ func generateSessionID() string {
5961
return hex.EncodeToString(b)
6062
}
6163

62-
func NewClient(cloudflareHost string, destPort int, scheme string, destAddr string, debug bool) *Client {
64+
func NewClient(cloudflareHost string, destPort int, scheme string, destAddr string, debug bool, proxyURL string) *Client {
6365
rand.Seed(time.Now().UnixNano())
6466

6567
if scheme == "" {
@@ -86,9 +88,10 @@ func NewClient(cloudflareHost string, destPort int, scheme string, destAddr stri
8688
writeBufferSize: 32 * 1024,
8789
pollInterval: 50 * time.Millisecond,
8890
batchSize: 32 * 1024,
91+
proxyURL: proxyURL,
8992
bufferPool: sync.Pool{
9093
New: func() interface{} {
91-
return make([]byte, 64*1024) // Increase to 64KB
94+
return make([]byte, 64*1024)
9295
},
9396
},
9497
}
@@ -132,6 +135,29 @@ func NewClient(cloudflareHost string, destPort int, scheme string, destAddr stri
132135
ExpectContinueTimeout: 1 * time.Second,
133136
}
134137

138+
// Configure proxy support
139+
if proxyURL != "" {
140+
if strings.HasPrefix(proxyURL, "socks") {
141+
// Handle SOCKS proxy
142+
dialer, err := proxy.SOCKS5("tcp", proxyURL[strings.Index(proxyURL, "//")+2:], nil, proxy.Direct)
143+
if err != nil {
144+
log.Printf("Error creating SOCKS5 dialer: %v", err)
145+
} else {
146+
transport.DialContext = func(ctx context.Context, network, addr string) (net.Conn, error) {
147+
return dialer.Dial(network, addr)
148+
}
149+
}
150+
} else {
151+
// Handle HTTP/HTTPS proxy
152+
proxyURLParsed, err := url.Parse(proxyURL)
153+
if err != nil {
154+
log.Printf("Error parsing proxy URL: %v", err)
155+
} else {
156+
transport.Proxy = http.ProxyURL(proxyURLParsed)
157+
}
158+
}
159+
}
160+
135161
client.httpClient = &http.Client{
136162
Transport: transport,
137163
Timeout: 30 * time.Second,
@@ -448,6 +474,7 @@ func main() {
448474
var targetURL string
449475
var destAddr string
450476
var debug bool
477+
var proxyURL string
451478

452479
flag.Usage = func() {
453480
fmt.Fprintf(os.Stderr, "DarkFlare Client - TCP-over-CDN tunnel client component\n")
@@ -466,6 +493,8 @@ func main() {
466493
fmt.Fprintf(os.Stderr, " This is where your traffic will ultimately be sent\n\n")
467494
fmt.Fprintf(os.Stderr, " -debug Enable detailed debug logging\n")
468495
fmt.Fprintf(os.Stderr, " Shows connection details, data transfer, and errors\n\n")
496+
fmt.Fprintf(os.Stderr, " -p Proxy URL for outbound connections\n")
497+
fmt.Fprintf(os.Stderr, " Format: http://host:port or socks5://host:port\n\n")
469498
fmt.Fprintf(os.Stderr, "Examples:\n")
470499
fmt.Fprintf(os.Stderr, " Basic SSH tunnel:\n")
471500
fmt.Fprintf(os.Stderr, " %s -l 2222 -t https://cdn.miami.us.doxx.net -d ssh.destination.com:22\n\n", os.Args[0])
@@ -483,6 +512,7 @@ func main() {
483512
flag.StringVar(&targetURL, "t", "", "")
484513
flag.StringVar(&destAddr, "d", "", "")
485514
flag.BoolVar(&debug, "debug", false, "")
515+
flag.StringVar(&proxyURL, "p", "", "Proxy URL (http://host:port or socks5://host:port)")
486516
flag.Parse()
487517

488518
if len(os.Args) == 1 {
@@ -544,7 +574,7 @@ func main() {
544574
continue
545575
}
546576

547-
client := NewClient(host, destPort, scheme, destAddr, debug)
577+
client := NewClient(host, destPort, scheme, destAddr, debug, proxyURL)
548578
go client.handleConnection(conn)
549579
}
550580
}

0 commit comments

Comments
 (0)