Commit 7a2bc39e by Michael Pastushkov

initial commit

parents
This diff is collapsed. Click to expand it.
2024-09-15
* First public release.
all:
$(MAKE) -C src
install:
$(MAKE) -C src install
uninstall:
$(MAKE) -C src uninstall
clean:
$(MAKE) -C src clean
FLAGS=CC=i586-mingw32msvc-g++ LD=i586-mingw32msvc-g++ LDFLAGS=-lws2_32 NAME=bytevia.exe
all:
$(MAKE) -C src $(FLAGS)
install:
$(MAKE) -C src $(FLAGS) install
uninstall:
$(MAKE) -C src $(FLAGS) uninstall
clean:
$(MAKE) -C src $(FLAGS) clean
bytevia is a TCP and UDP proxy with built-in encryption (obfuscation) to avoid protocol detection and bypass any censorship in the middle
## Help
```
$ bytevia --help
Usage: bytevia [options]
Options:
--version
--help
--local-port=PORT local port
--remote-port=PORT remote port
--remote-host=HOST remote host
--bind-address=IP bind address
--client-address=IP only accept connections from this IP address
--buffer-size=BYTES buffer size
--fork fork-based concurrency
--log=LEVEL 0 - no logging, 3 - maximum logging
--stay-alive don't exit on errors
--mode=MODE 0 - client side, 1 - server side ()
--encryption=ALG 0 - no encryption, 1 - time-based obfuscation
```
## Building
### For Unix
```
$ git clone https://github.com/XXX/bytevia.git
$ cd bytevia
$ ./configure
$ make
$ ./bytevia --version
$ ./bytevia --help
```
### For Mac OS X
You will need the [Command Line Tools for Xcode](https://developer.apple.com/xcode/) to build bytevia under Mac OS X.
```
$ uname -mrs
Darwin 12.5.0 x86_64
$ git clone https://github.com/XXX/bytevia.git
$ cd bytevia
$ ./configure --prefix=/usr/bin
$ make
$ ./bytevia --version
$ ./bytevia --help
$ file bytevia
bytevia: Mach-O 64-bit executable x86_64
```
### For Mac OS X (Homebrew)
Thanks to [Edward Samson's](https://github.com/esamson) [pull request](https://github.com/Homebrew/homebrew/pull/23977), you can also use [Homebrew](http://brew.sh/) to install bytevia under Mac OS X.
```
$ uname -mrs
Darwin 12.5.0 x86_64
$ brew --version
0.9.5
$ brew update
$ brew info bytevia
$ brew install bytevia
$ bytevia --version
$ bytevia --help
$ file $(which bytevia)
/usr/local/bin/bytevia: Mach-O 64-bit executable x86_64
```
### For Windows (Cygwin)
You will need the Cygwin environment for Windows from http://www.cygwin.com/ with the following additional packages installed:
* gcc
* git
* make
```
$ uname -a
CYGWIN_NT-6.1-WOW64 computer 1.7.25(0.270/5/3) 2013-08-31 20:39 i686 Cygwin
$ git clone git://github.com/XXX/bytevia.git
$ cd bytevia
$ ./configure
$ make
$ ./bytevia --version
$ ./bytevia --help
$ file bytevia.exe
bytevia.exe: PE32 executable (console) Intel 80386, for MS Windows
```
### For Windows (MinGW32)
You will need MinGW32 to cross-compile bytevia. Please see http://www.mingw.org/ for more details. If you are using a Debian-based distribution then you will need to install the following packages:
* mingw32
* mingw32-binutils
* mingw32-runtime
```
$ apt-get install mingw32 mingw32-binutils mingw32-runtime
$ git clone https://github.com/XXX/bytevia.git
$ cd bytevia
$ ./configure
$ make -f Makefile.MinGW32
$ file bytevia.exe
bytevia.exe: PE32 executable (console) Intel 80386, for MS Windows
```
Note: The MinGW32-based version does not support the fork-based concurrent client handling. If you need this feature under Windows, then you should use the Cygwin-based version.
## ChangeLog
See [ChangeLog](https://raw.github.com/XXX/bytevia/master/ChangeLog).
## License
Copyright (c) 2000-2021 Clemens Fuchslocher,
Copyright (c) 2024 Michael Pastushkov,
released under the GPL.
#!/bin/sh
# Help option?
HELP=`echo $* | sed -n -e 's/.*--help.*/HELP/p'`
if [ "$HELP" = "HELP" ]; then
cat << END
Usage: configure [options]
Options:
--prefix=PATH
--help
END
exit 1
fi
# Prefix option?
PREFIX=`echo $* | sed -n -e 's/.*--prefix=\([^\ ]*\).*/\1/p'`
if [ ! "$PREFIX" ]; then
PREFIX="/usr/local/bin/"
fi
PREFIX=`sh -c "echo $PREFIX"` # eval PREFIX=$PREFIX
if [ ! -d "$PREFIX" ]; then
echo "configure: error: $PREFIX isn't a directory."
exit 1
fi
OS=`uname -s 2> /dev/null`
case "$OS" in
FreeBSD)
;;
Linux)
;;
HP-UX)
;;
SunOS)
LDFLAGS='-lxnet'
;;
esac
echo "checking host system type... $OS"
PREFIX=`echo $PREFIX | sed 's#\/#\\\/#g'`
LDFLAGS=`echo $LDFLAGS | sed 's#\/#\\\/#g'`
sed -n -e "s/@PREFIX@/$PREFIX/g;" \
-e "s/@LDFLAGS@/$LDFLAGS/g;" \
-e "w ./src/Makefile" \
./src/Makefile.in
echo "configure: configure complete, now type 'make' and 'make install'."
#!/bin/sh
make clean && make && ./bytevia temp/1984-proxy2-tcp.ovpn --local-port=12345 --remote-host=p4pn.net --remote-port=3389
#!/bin/sh
make clean && make && ./bytevia --local-port=3389 --remote-host=172.31.13.132 --remote-port=1194 --mode=server
\ No newline at end of file
#!/bin/sh
make clean && make && ./bytevia --local-port=1984 --remote-host=p4pn.net --remote-port=3389 --proto=udp --secret=52341
\ No newline at end of file
#!/bin/sh
make clean && make && ./bytevia --local-port=3389 --remote-host=172.31.13.132 --remote-port=1194 --mode=server --proto=udp --secret=52341
\ No newline at end of file
NAME = bytevia
CC = gcc
LD = gcc
CFLAGS = -Wall -I./
LDFLAGS =
OBJS = bytevia.o
BINDIR = /usr/local/bin/
INSTALL = install
STRIP = strip
RM = /bin/rm -f
CP = cp
all: bytevia
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
bytevia: $(OBJS)
@echo $(CC)
$(LD) -o $(NAME) $(OBJS) $(LDFLAGS)
$(CP) $(NAME) ..
install:
$(INSTALL) -d $(BINDIR)
$(INSTALL) -m 0755 $(NAME) $(BINDIR)
$(STRIP) $(BINDIR)/$(NAME)
uninstall:
$(RM) $(BINDIR)/$(NAME)
clean:
$(RM) *.o *~ $(NAME) ../$(NAME)
NAME = bytevia
CC = gcc
LD = gcc
CFLAGS = -Wall -I./
LDFLAGS = @LDFLAGS@
OBJS = bytevia.o
BINDIR = @PREFIX@
INSTALL = install
STRIP = strip
RM = /bin/rm -f
CP = cp
all: bytevia
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
bytevia: $(OBJS)
@echo $(CC)
$(LD) -o $(NAME) $(OBJS) $(LDFLAGS)
$(CP) $(NAME) ..
install:
$(INSTALL) -d $(BINDIR)
$(INSTALL) -m 0755 $(NAME) $(BINDIR)
$(STRIP) $(BINDIR)/$(NAME)
uninstall:
$(RM) $(BINDIR)/$(NAME)
clean:
$(RM) *.o *~ $(NAME) ../$(NAME)
This diff is collapsed. Click to expand it.
#ifndef bytevia_H
#define bytevia_H
#define NAME "bytevia"
#define VERSION "1.0"
#define LOCAL_PORT_OPTION 'a'
#define REMOTE_HOST_OPTION 'b'
#define REMOTE_PORT_OPTION 'c'
#define BIND_ADDRESS_OPTION 'd'
#define CLIENT_ADDRESS_OPTION 'e'
#define BUFFER_SIZE_OPTION 'f'
#define FORK_OPTION 'g'
#define LOG_OPTION 'h'
#define STAY_ALIVE_OPTION 'i'
#define HELP_OPTION 'j'
#define VERSION_OPTION 'k'
#define MODE_OPTION 'l'
#define ENCRYPT_OPTION 'm'
#define SECRET_OPTION 'n'
#define PROTO_OPTION 'o'
#define MODE_CLIENT 0
#define MODE_SERVER 1
#define MINIMUM_BUFFER_SIZE 4096
#define PATH_SEPARATOR '/'
struct struct_options {
unsigned int local_port;
char *remote_host;
unsigned int remote_port;
char *bind_address;
char *client_address;
unsigned int buffer_size;
unsigned int fork;
unsigned int log;
unsigned int stay_alive;
unsigned int mode;
unsigned int encrypt;
unsigned int secret;
unsigned int proto;
};
struct struct_rc {
int server_socket;
int client_socket;
int remote_socket;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
struct sockaddr_in remote_addr;
struct hostent *remote_host;
};
#endif
client
dev tun
proto tcp
remote 52.204.74.175 1194
route 192.168.1.0 255.255.255.0 net_gateway
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
ignore-unknown-option block-outside-dns
block-outside-dns
verb 3
<key>
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDQ5krBZH3J+eFW
haRNTQb4FNcUo1OW/0lK+/9JZ4n8iRCwuHBeJvlls3Vzc/bDvWK9pMVeoI+s7ib/
LiaI8u0Vz+pCiLVh77fMtpu++cmIupzx7oNftU8g5sMzwebmel6/8oQr5oUWgGFT
C/Y1u8mlWUFXyaQX864LWRRFMfZhs6Lzqgz2OpWcu4CB7iGBJDp38MfIWi1cK/0H
vOHnhbqMHk4vgeVLUV3WwBCiUytRMYhBlaJkXO8aamNba/umI49Xlt1T0UEQoLpR
waw+fiJ4aon7mgwJ5umaz/DpUJ4yo1RmnQCeBuYWGceUvGUOnYn7hMJihukU5AY1
Qm3LdnyFAgMBAAECggEBAKHCcginBDCuaitReRTSnJ7lpFa60jOOovaJg/kXT+ZZ
TK9LYtfFXkG+YShxl5eiwx8OxDauJhNGprPazMQnOCc3xLKYobugoLbIgHm1erWB
q547j0dBYnCbwHQHpgC6qTwBUw+bhVsTNknUbWbWbyK2pr6PyZ0yeIcZB3U9Zwfn
ZwyatyEZ8DL7LHuR2JTy/GNJmSHcksoHxVRHyB5kEi3NyX4PTC7BJ+FImmHN+Hza
fq+CWsS7URw0MjE1EMmV5LRSR0bYpMI8zt9Z/YAoXUaASBADlu2W6p0gP96bBDDc
1m9/KWFXqQKEeIH7VHxhRFlP0hKM+gr/V5eBHJ40KlECgYEA+YtkYuiiduGSghS2
n3RvjUA3weEXsL9cbBJBVU/KsTRJ1BcFSuI2m5ycKaE7T0EgzyKg4yfuVBJ8n6jt
sUME3fx7Evkox5WrqB0fz6KpyrT6QbrfkuInIsKiaCQfKk4PxzbFNZmjrxmh7ZnY
j5e1JciC7AufAmlHq2cbg0Df3XcCgYEA1k26njrJsO/t2rzjdx6BS93rht1Szr6d
z2j0264WR3ZMlKvIe1iXkT4Ski700Z3NOsaHu7Whr/VHD49YxPS7Ynfoaz+4f3qW
ER17zS6JB+JIel+0H1tLgmE7xmZsDltrn12ee5LCXO4nhvmZcd3eMqD0/KVSqRtk
ARlfX71KxOMCgYB6QtYbM5ktn5T1UIqtExH4ZYcr4UmHGiqA9Gy4DJDlQxYM6H56
UtyoXxGPv+PcD6+wbGnhAVZeMHSIkO5r08cVr7bo89QL/QOOKT7Frw97NjIKdDFH
uK+t8yg418HBK1/Fncr/WNf+WROh4qdcqtpguZ2TYpo0RzqK+shbBTTpPwKBgANW
sKqYZd4AzubSfIS1j/Qbn/i45/pak+DQVMg7XRN971F9n6D0T2Au5GEspBnD6Jea
0jCFcuBn5NSEOjDPU0AEeDV7h6dMxJu9ptkaeX4K83Acn5TBelqsox7DJ7nNiM6x
ya9JKQgDmdALgW15tGV7hnWNKc2CpLszpv252DlbAoGAJZKiOzMHzFGBzgX7pMP/
dCDWwV2kz0YXGOfu/zrfwPDB/4OmFdAlLufVfMkjAg0LCS3IDl4IrIUYguTJZWDd
MA+MUAMbOetF6oVcIaVFGJF0JR9ChjtlN2/EwaWsG2aVj+di7vxwRAOK7uXhL9jF
YZywvoNWsZWPKtrZQTL7eoE=
-----END PRIVATE KEY-----
</key>
<cert>
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
9e:b7:24:f9:7a:50:c6:93:5b:16:dd:ab:46:b7:5d:0c
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=ChangeMe
Validity
Not Before: Jul 20 21:04:53 2024 GMT
Not After : Oct 23 21:04:53 2026 GMT
Subject: CN=mpastushkov-dynamixsoftware-com_p4pn-virginia2
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
Modulus:
00:d0:e6:4a:c1:64:7d:c9:f9:e1:56:85:a4:4d:4d:
06:f8:14:d7:14:a3:53:96:ff:49:4a:fb:ff:49:67:
89:fc:89:10:b0:b8:70:5e:26:f9:65:b3:75:73:73:
f6:c3:bd:62:bd:a4:c5:5e:a0:8f:ac:ee:26:ff:2e:
26:88:f2:ed:15:cf:ea:42:88:b5:61:ef:b7:cc:b6:
9b:be:f9:c9:88:ba:9c:f1:ee:83:5f:b5:4f:20:e6:
c3:33:c1:e6:e6:7a:5e:bf:f2:84:2b:e6:85:16:80:
61:53:0b:f6:35:bb:c9:a5:59:41:57:c9:a4:17:f3:
ae:0b:59:14:45:31:f6:61:b3:a2:f3:aa:0c:f6:3a:
95:9c:bb:80:81:ee:21:81:24:3a:77:f0:c7:c8:5a:
2d:5c:2b:fd:07:bc:e1:e7:85:ba:8c:1e:4e:2f:81:
e5:4b:51:5d:d6:c0:10:a2:53:2b:51:31:88:41:95:
a2:64:5c:ef:1a:6a:63:5b:6b:fb:a6:23:8f:57:96:
dd:53:d1:41:10:a0:ba:51:c1:ac:3e:7e:22:78:6a:
89:fb:9a:0c:09:e6:e9:9a:cf:f0:e9:50:9e:32:a3:
54:66:9d:00:9e:06:e6:16:19:c7:94:bc:65:0e:9d:
89:fb:84:c2:62:86:e9:14:e4:06:35:42:6d:cb:76:
7c:85
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Key Identifier:
F3:BF:1B:F8:55:16:51:E1:DB:A6:A0:36:D6:64:D1:00:B3:0B:42:E7
X509v3 Authority Key Identifier:
keyid:64:FA:C3:FA:14:55:DB:A6:98:A8:24:3F:E8:F8:AE:02:08:B9:91:1C
DirName:/CN=ChangeMe
serial:75:E3:5E:B0:89:46:D4:9B:1F:65:4F:FE:85:C2:49:A1:EE:E8:3D:49
X509v3 Extended Key Usage:
TLS Web Client Authentication
X509v3 Key Usage:
Digital Signature
Signature Algorithm: sha256WithRSAEncryption
1c:ea:9b:89:b1:8b:d4:f8:86:23:db:3c:79:c7:ed:14:2c:44:
fc:d8:b0:f0:3b:67:a5:72:00:9f:8e:d7:57:e7:aa:86:7f:64:
66:b4:a1:1c:7d:74:c4:8c:d9:61:87:67:9b:c4:80:c3:60:77:
a4:38:1d:a6:ec:d5:80:34:53:88:00:0f:8d:d9:47:ff:f3:47:
f7:92:14:da:38:04:0b:a8:9f:46:73:f0:59:8e:12:c2:f9:44:
1a:71:21:1c:3a:5d:3e:b5:eb:cf:74:7a:81:99:ed:a8:26:30:
81:9c:9b:62:31:a0:90:5f:cd:c3:01:0f:fb:f9:08:c2:ed:b8:
3b:e1:39:e0:06:50:cb:c3:af:4a:85:12:bc:f3:70:21:13:6b:
e4:06:b7:a0:5f:49:4a:20:5a:b7:41:29:a5:ce:b2:30:45:af:
15:58:ce:8b:4e:91:b5:a5:ba:56:c8:07:8e:45:f0:fb:b7:d7:
e5:02:61:08:62:51:d8:2a:b6:fe:e2:bd:11:85:03:1d:12:6a:
be:b7:07:31:b8:97:e7:f2:b4:51:86:6a:12:8e:4e:4f:a7:57:
7b:2f:00:3e:69:4b:eb:cd:cc:ba:b3:0a:b5:45:91:ff:90:6b:
70:5b:a9:a9:4d:17:44:ab:24:62:b6:5f:83:6a:b5:ae:86:2e:
a4:cb:19:a4
-----BEGIN CERTIFICATE-----
MIIDdzCCAl+gAwIBAgIRAJ63JPl6UMaTWxbdq0a3XQwwDQYJKoZIhvcNAQELBQAw
EzERMA8GA1UEAwwIQ2hhbmdlTWUwHhcNMjQwNzIwMjEwNDUzWhcNMjYxMDIzMjEw
NDUzWjA5MTcwNQYDVQQDDC5tcGFzdHVzaGtvdi1keW5hbWl4c29mdHdhcmUtY29t
X3A0cG4tdmlyZ2luaWEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
0OZKwWR9yfnhVoWkTU0G+BTXFKNTlv9JSvv/SWeJ/IkQsLhwXib5ZbN1c3P2w71i
vaTFXqCPrO4m/y4miPLtFc/qQoi1Ye+3zLabvvnJiLqc8e6DX7VPIObDM8Hm5npe
v/KEK+aFFoBhUwv2NbvJpVlBV8mkF/OuC1kURTH2YbOi86oM9jqVnLuAge4hgSQ6
d/DHyFotXCv9B7zh54W6jB5OL4HlS1Fd1sAQolMrUTGIQZWiZFzvGmpjW2v7piOP
V5bdU9FBEKC6UcGsPn4ieGqJ+5oMCebpms/w6VCeMqNUZp0AngbmFhnHlLxlDp2J
+4TCYobpFOQGNUJty3Z8hQIDAQABo4GfMIGcMAkGA1UdEwQCMAAwHQYDVR0OBBYE
FPO/G/hVFlHh26agNtZk0QCzC0LnME4GA1UdIwRHMEWAFGT6w/oUVdummKgkP+j4
rgIIuZEcoRekFTATMREwDwYDVQQDDAhDaGFuZ2VNZYIUdeNesIlG1JsfZU/+hcJJ
oe7oPUkwEwYDVR0lBAwwCgYIKwYBBQUHAwIwCwYDVR0PBAQDAgeAMA0GCSqGSIb3
DQEBCwUAA4IBAQAc6puJsYvU+IYj2zx5x+0ULET82LDwO2elcgCfjtdX56qGf2Rm
tKEcfXTEjNlhh2ebxIDDYHekOB2m7NWANFOIAA+N2Uf/80f3khTaOAQLqJ9Gc/BZ
jhLC+UQacSEcOl0+tevPdHqBme2oJjCBnJtiMaCQX83DAQ/7+QjC7bg74TngBlDL
w69KhRK883AhE2vkBregX0lKIFq3QSmlzrIwRa8VWM6LTpG1pbpWyAeORfD7t9fl
AmEIYlHYKrb+4r0RhQMdEmq+twcxuJfn8rRRhmoSjk5Pp1d7LwA+aUvrzcy6swq1
RZH/kGtwW6mpTRdEqyRitl+DarWuhi6kyxmk
-----END CERTIFICATE-----
</cert>
<ca>
-----BEGIN CERTIFICATE-----
MIIDQjCCAiqgAwIBAgIUdeNesIlG1JsfZU/+hcJJoe7oPUkwDQYJKoZIhvcNAQEL
BQAwEzERMA8GA1UEAwwIQ2hhbmdlTWUwHhcNMjIwMzEwMDMxMzE4WhcNMzIwMzA3
MDMxMzE4WjATMREwDwYDVQQDDAhDaGFuZ2VNZTCCASIwDQYJKoZIhvcNAQEBBQAD
ggEPADCCAQoCggEBAMR2KwpcJf/Px6vhOY/7+cntcvxf9WqqN0gC4sDQOgfronLr
/Vn/i7DK0/74tR+fvM2sLXzsYTTtFJT5E/EBbWyRvRhizgw+TFmnAlotItfck6t6
uwe5iQavtlqWnrJWJo2AZvw7ai6gLyO5stIdnZuNOgJ3MjCyxBJogp0C11OGgpOf
j3MQ+7aQilFYgarNub6Jc7bx0sCU0F12HIFzm8yvdG95Rsu8TqaG5YuLt0vnyEIB
ksqIXJNy9DxjdfvFjmofV83bFDKJHL1YGEK7cibn+yQlJ3Z3KYFZKDx8IO1erHO8
ZIDsT8bA4ed42U/DUOy+7plzN3rtFrqJt+VBrusCAwEAAaOBjTCBijAdBgNVHQ4E
FgQUZPrD+hRV26aYqCQ/6PiuAgi5kRwwTgYDVR0jBEcwRYAUZPrD+hRV26aYqCQ/
6PiuAgi5kRyhF6QVMBMxETAPBgNVBAMMCENoYW5nZU1lghR1416wiUbUmx9lT/6F
wkmh7ug9STAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsF
AAOCAQEALyAyS8wt8LrXaP7H7AwzYQMYZlYg6kV0YObUNa119TRWEQFx0EOnQlxA
/ZaHJGxOxVwSLvWNoZbTs/n3WeGQptr64S+mcoCwgKNAIIZeeoFYOLDv8s13Qy4N
y4sHpyzwU8x+JIdgmI3xqL5bQeJVm8aIIUczzeAIdQ0yWGfxI/gNWm2GhbUXrwhV
dIxQBojvXMTKUk/7nTlMfUZ/uBesBTt9ieC7uSAsUm2Xu3z+kNqnyshOURzTF/cT
0i11Vwzq1sQMONrg6ec2A2EzEHu7cXELa4bAtsD9ckUbpnmZTWCJh4Y2rP9i9OED
sFh//pqzu3SMl4jb1inl0tdg0Po0zw==
-----END CERTIFICATE-----
</ca>
<tls-crypt>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
5e713de86c5ed44307b8f44262aacd18
c9b1294631f761385df7950c7025920d
ffa15903fd1494300ef251715a8fd0a2
88a2cdd60b3e46ea08971f3d45e2025f
70542eafe3bf7889fba2e3f6a44b39c1
f97010705513f3817598bcf872c8c672
f009be68229bbfa7e215c9961e3adddb
0126e8f5f1117c312552c9143801719f
dca607214ef761e7440574b1b475a55b
a4fc0d2fe9b49fae083bde27754f394a
ea98225a3ba995833e9387a7ba698a39
0027cedf43e6064af9ef933c096d573f
6f960a7912f9646055109f9d53606dc3
9ae07006b8abceca23edc4e35b6530bf
969e79381570f2bcde949b4289ab9f5f
e134ee927944ed87529080157c74fc90
-----END OpenVPN Static key V1-----
</tls-crypt>
client
dev tun
proto udp
remote 52.204.74.175 1194
route 192.168.1.0 255.255.255.0 net_gateway
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
ignore-unknown-option block-outside-dns
block-outside-dns
verb 3
<key>
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDQ5krBZH3J+eFW
haRNTQb4FNcUo1OW/0lK+/9JZ4n8iRCwuHBeJvlls3Vzc/bDvWK9pMVeoI+s7ib/
LiaI8u0Vz+pCiLVh77fMtpu++cmIupzx7oNftU8g5sMzwebmel6/8oQr5oUWgGFT
C/Y1u8mlWUFXyaQX864LWRRFMfZhs6Lzqgz2OpWcu4CB7iGBJDp38MfIWi1cK/0H
vOHnhbqMHk4vgeVLUV3WwBCiUytRMYhBlaJkXO8aamNba/umI49Xlt1T0UEQoLpR
waw+fiJ4aon7mgwJ5umaz/DpUJ4yo1RmnQCeBuYWGceUvGUOnYn7hMJihukU5AY1
Qm3LdnyFAgMBAAECggEBAKHCcginBDCuaitReRTSnJ7lpFa60jOOovaJg/kXT+ZZ
TK9LYtfFXkG+YShxl5eiwx8OxDauJhNGprPazMQnOCc3xLKYobugoLbIgHm1erWB
q547j0dBYnCbwHQHpgC6qTwBUw+bhVsTNknUbWbWbyK2pr6PyZ0yeIcZB3U9Zwfn
ZwyatyEZ8DL7LHuR2JTy/GNJmSHcksoHxVRHyB5kEi3NyX4PTC7BJ+FImmHN+Hza
fq+CWsS7URw0MjE1EMmV5LRSR0bYpMI8zt9Z/YAoXUaASBADlu2W6p0gP96bBDDc
1m9/KWFXqQKEeIH7VHxhRFlP0hKM+gr/V5eBHJ40KlECgYEA+YtkYuiiduGSghS2
n3RvjUA3weEXsL9cbBJBVU/KsTRJ1BcFSuI2m5ycKaE7T0EgzyKg4yfuVBJ8n6jt
sUME3fx7Evkox5WrqB0fz6KpyrT6QbrfkuInIsKiaCQfKk4PxzbFNZmjrxmh7ZnY
j5e1JciC7AufAmlHq2cbg0Df3XcCgYEA1k26njrJsO/t2rzjdx6BS93rht1Szr6d
z2j0264WR3ZMlKvIe1iXkT4Ski700Z3NOsaHu7Whr/VHD49YxPS7Ynfoaz+4f3qW
ER17zS6JB+JIel+0H1tLgmE7xmZsDltrn12ee5LCXO4nhvmZcd3eMqD0/KVSqRtk
ARlfX71KxOMCgYB6QtYbM5ktn5T1UIqtExH4ZYcr4UmHGiqA9Gy4DJDlQxYM6H56
UtyoXxGPv+PcD6+wbGnhAVZeMHSIkO5r08cVr7bo89QL/QOOKT7Frw97NjIKdDFH
uK+t8yg418HBK1/Fncr/WNf+WROh4qdcqtpguZ2TYpo0RzqK+shbBTTpPwKBgANW
sKqYZd4AzubSfIS1j/Qbn/i45/pak+DQVMg7XRN971F9n6D0T2Au5GEspBnD6Jea
0jCFcuBn5NSEOjDPU0AEeDV7h6dMxJu9ptkaeX4K83Acn5TBelqsox7DJ7nNiM6x
ya9JKQgDmdALgW15tGV7hnWNKc2CpLszpv252DlbAoGAJZKiOzMHzFGBzgX7pMP/
dCDWwV2kz0YXGOfu/zrfwPDB/4OmFdAlLufVfMkjAg0LCS3IDl4IrIUYguTJZWDd
MA+MUAMbOetF6oVcIaVFGJF0JR9ChjtlN2/EwaWsG2aVj+di7vxwRAOK7uXhL9jF
YZywvoNWsZWPKtrZQTL7eoE=
-----END PRIVATE KEY-----
</key>
<cert>
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
9e:b7:24:f9:7a:50:c6:93:5b:16:dd:ab:46:b7:5d:0c
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=ChangeMe
Validity
Not Before: Jul 20 21:04:53 2024 GMT
Not After : Oct 23 21:04:53 2026 GMT
Subject: CN=mpastushkov-dynamixsoftware-com_p4pn-virginia2
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
Modulus:
00:d0:e6:4a:c1:64:7d:c9:f9:e1:56:85:a4:4d:4d:
06:f8:14:d7:14:a3:53:96:ff:49:4a:fb:ff:49:67:
89:fc:89:10:b0:b8:70:5e:26:f9:65:b3:75:73:73:
f6:c3:bd:62:bd:a4:c5:5e:a0:8f:ac:ee:26:ff:2e:
26:88:f2:ed:15:cf:ea:42:88:b5:61:ef:b7:cc:b6:
9b:be:f9:c9:88:ba:9c:f1:ee:83:5f:b5:4f:20:e6:
c3:33:c1:e6:e6:7a:5e:bf:f2:84:2b:e6:85:16:80:
61:53:0b:f6:35:bb:c9:a5:59:41:57:c9:a4:17:f3:
ae:0b:59:14:45:31:f6:61:b3:a2:f3:aa:0c:f6:3a:
95:9c:bb:80:81:ee:21:81:24:3a:77:f0:c7:c8:5a:
2d:5c:2b:fd:07:bc:e1:e7:85:ba:8c:1e:4e:2f:81:
e5:4b:51:5d:d6:c0:10:a2:53:2b:51:31:88:41:95:
a2:64:5c:ef:1a:6a:63:5b:6b:fb:a6:23:8f:57:96:
dd:53:d1:41:10:a0:ba:51:c1:ac:3e:7e:22:78:6a:
89:fb:9a:0c:09:e6:e9:9a:cf:f0:e9:50:9e:32:a3:
54:66:9d:00:9e:06:e6:16:19:c7:94:bc:65:0e:9d:
89:fb:84:c2:62:86:e9:14:e4:06:35:42:6d:cb:76:
7c:85
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Key Identifier:
F3:BF:1B:F8:55:16:51:E1:DB:A6:A0:36:D6:64:D1:00:B3:0B:42:E7
X509v3 Authority Key Identifier:
keyid:64:FA:C3:FA:14:55:DB:A6:98:A8:24:3F:E8:F8:AE:02:08:B9:91:1C
DirName:/CN=ChangeMe
serial:75:E3:5E:B0:89:46:D4:9B:1F:65:4F:FE:85:C2:49:A1:EE:E8:3D:49
X509v3 Extended Key Usage:
TLS Web Client Authentication
X509v3 Key Usage:
Digital Signature
Signature Algorithm: sha256WithRSAEncryption
1c:ea:9b:89:b1:8b:d4:f8:86:23:db:3c:79:c7:ed:14:2c:44:
fc:d8:b0:f0:3b:67:a5:72:00:9f:8e:d7:57:e7:aa:86:7f:64:
66:b4:a1:1c:7d:74:c4:8c:d9:61:87:67:9b:c4:80:c3:60:77:
a4:38:1d:a6:ec:d5:80:34:53:88:00:0f:8d:d9:47:ff:f3:47:
f7:92:14:da:38:04:0b:a8:9f:46:73:f0:59:8e:12:c2:f9:44:
1a:71:21:1c:3a:5d:3e:b5:eb:cf:74:7a:81:99:ed:a8:26:30:
81:9c:9b:62:31:a0:90:5f:cd:c3:01:0f:fb:f9:08:c2:ed:b8:
3b:e1:39:e0:06:50:cb:c3:af:4a:85:12:bc:f3:70:21:13:6b:
e4:06:b7:a0:5f:49:4a:20:5a:b7:41:29:a5:ce:b2:30:45:af:
15:58:ce:8b:4e:91:b5:a5:ba:56:c8:07:8e:45:f0:fb:b7:d7:
e5:02:61:08:62:51:d8:2a:b6:fe:e2:bd:11:85:03:1d:12:6a:
be:b7:07:31:b8:97:e7:f2:b4:51:86:6a:12:8e:4e:4f:a7:57:
7b:2f:00:3e:69:4b:eb:cd:cc:ba:b3:0a:b5:45:91:ff:90:6b:
70:5b:a9:a9:4d:17:44:ab:24:62:b6:5f:83:6a:b5:ae:86:2e:
a4:cb:19:a4
-----BEGIN CERTIFICATE-----
MIIDdzCCAl+gAwIBAgIRAJ63JPl6UMaTWxbdq0a3XQwwDQYJKoZIhvcNAQELBQAw
EzERMA8GA1UEAwwIQ2hhbmdlTWUwHhcNMjQwNzIwMjEwNDUzWhcNMjYxMDIzMjEw
NDUzWjA5MTcwNQYDVQQDDC5tcGFzdHVzaGtvdi1keW5hbWl4c29mdHdhcmUtY29t
X3A0cG4tdmlyZ2luaWEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
0OZKwWR9yfnhVoWkTU0G+BTXFKNTlv9JSvv/SWeJ/IkQsLhwXib5ZbN1c3P2w71i
vaTFXqCPrO4m/y4miPLtFc/qQoi1Ye+3zLabvvnJiLqc8e6DX7VPIObDM8Hm5npe
v/KEK+aFFoBhUwv2NbvJpVlBV8mkF/OuC1kURTH2YbOi86oM9jqVnLuAge4hgSQ6
d/DHyFotXCv9B7zh54W6jB5OL4HlS1Fd1sAQolMrUTGIQZWiZFzvGmpjW2v7piOP
V5bdU9FBEKC6UcGsPn4ieGqJ+5oMCebpms/w6VCeMqNUZp0AngbmFhnHlLxlDp2J
+4TCYobpFOQGNUJty3Z8hQIDAQABo4GfMIGcMAkGA1UdEwQCMAAwHQYDVR0OBBYE
FPO/G/hVFlHh26agNtZk0QCzC0LnME4GA1UdIwRHMEWAFGT6w/oUVdummKgkP+j4
rgIIuZEcoRekFTATMREwDwYDVQQDDAhDaGFuZ2VNZYIUdeNesIlG1JsfZU/+hcJJ
oe7oPUkwEwYDVR0lBAwwCgYIKwYBBQUHAwIwCwYDVR0PBAQDAgeAMA0GCSqGSIb3
DQEBCwUAA4IBAQAc6puJsYvU+IYj2zx5x+0ULET82LDwO2elcgCfjtdX56qGf2Rm
tKEcfXTEjNlhh2ebxIDDYHekOB2m7NWANFOIAA+N2Uf/80f3khTaOAQLqJ9Gc/BZ
jhLC+UQacSEcOl0+tevPdHqBme2oJjCBnJtiMaCQX83DAQ/7+QjC7bg74TngBlDL
w69KhRK883AhE2vkBregX0lKIFq3QSmlzrIwRa8VWM6LTpG1pbpWyAeORfD7t9fl
AmEIYlHYKrb+4r0RhQMdEmq+twcxuJfn8rRRhmoSjk5Pp1d7LwA+aUvrzcy6swq1
RZH/kGtwW6mpTRdEqyRitl+DarWuhi6kyxmk
-----END CERTIFICATE-----
</cert>
<ca>
-----BEGIN CERTIFICATE-----
MIIDQjCCAiqgAwIBAgIUdeNesIlG1JsfZU/+hcJJoe7oPUkwDQYJKoZIhvcNAQEL
BQAwEzERMA8GA1UEAwwIQ2hhbmdlTWUwHhcNMjIwMzEwMDMxMzE4WhcNMzIwMzA3
MDMxMzE4WjATMREwDwYDVQQDDAhDaGFuZ2VNZTCCASIwDQYJKoZIhvcNAQEBBQAD
ggEPADCCAQoCggEBAMR2KwpcJf/Px6vhOY/7+cntcvxf9WqqN0gC4sDQOgfronLr
/Vn/i7DK0/74tR+fvM2sLXzsYTTtFJT5E/EBbWyRvRhizgw+TFmnAlotItfck6t6
uwe5iQavtlqWnrJWJo2AZvw7ai6gLyO5stIdnZuNOgJ3MjCyxBJogp0C11OGgpOf
j3MQ+7aQilFYgarNub6Jc7bx0sCU0F12HIFzm8yvdG95Rsu8TqaG5YuLt0vnyEIB
ksqIXJNy9DxjdfvFjmofV83bFDKJHL1YGEK7cibn+yQlJ3Z3KYFZKDx8IO1erHO8
ZIDsT8bA4ed42U/DUOy+7plzN3rtFrqJt+VBrusCAwEAAaOBjTCBijAdBgNVHQ4E
FgQUZPrD+hRV26aYqCQ/6PiuAgi5kRwwTgYDVR0jBEcwRYAUZPrD+hRV26aYqCQ/
6PiuAgi5kRyhF6QVMBMxETAPBgNVBAMMCENoYW5nZU1lghR1416wiUbUmx9lT/6F
wkmh7ug9STAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsF
AAOCAQEALyAyS8wt8LrXaP7H7AwzYQMYZlYg6kV0YObUNa119TRWEQFx0EOnQlxA
/ZaHJGxOxVwSLvWNoZbTs/n3WeGQptr64S+mcoCwgKNAIIZeeoFYOLDv8s13Qy4N
y4sHpyzwU8x+JIdgmI3xqL5bQeJVm8aIIUczzeAIdQ0yWGfxI/gNWm2GhbUXrwhV
dIxQBojvXMTKUk/7nTlMfUZ/uBesBTt9ieC7uSAsUm2Xu3z+kNqnyshOURzTF/cT
0i11Vwzq1sQMONrg6ec2A2EzEHu7cXELa4bAtsD9ckUbpnmZTWCJh4Y2rP9i9OED
sFh//pqzu3SMl4jb1inl0tdg0Po0zw==
-----END CERTIFICATE-----
</ca>
<tls-crypt>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
5e713de86c5ed44307b8f44262aacd18
c9b1294631f761385df7950c7025920d
ffa15903fd1494300ef251715a8fd0a2
88a2cdd60b3e46ea08971f3d45e2025f
70542eafe3bf7889fba2e3f6a44b39c1
f97010705513f3817598bcf872c8c672
f009be68229bbfa7e215c9961e3adddb
0126e8f5f1117c312552c9143801719f
dca607214ef761e7440574b1b475a55b
a4fc0d2fe9b49fae083bde27754f394a
ea98225a3ba995833e9387a7ba698a39
0027cedf43e6064af9ef933c096d573f
6f960a7912f9646055109f9d53606dc3
9ae07006b8abceca23edc4e35b6530bf
969e79381570f2bcde949b4289ab9f5f
e134ee927944ed87529080157c74fc90
-----END OpenVPN Static key V1-----
</tls-crypt>
client
dev tun
proto tcp
remote 127.0.0.1 1984
route 52.204.74.175 255.255.255.255 net_gateway
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
ignore-unknown-option block-outside-dns
block-outside-dns
verb 3
bytevia --local-port=1984 --remote-host=p4pn.net --remote-port=3389
<key>
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC3w8E3afS2SyK5
3Am1e2BoSnZMD49RwlMcNkQMMCx2UhhyJ1raORrOTVz1hI5RVn46AgzC5z3maKMl
3HYjGlduu5PeGABbVzGL53Oe7Is7SFod/cGG6CTdU+M7QmMBse04x0YfM+G9f0wd
9q+/DnvvwGR9MDBeEQuR5rrBwoKZkYQ48tGUWyRyJeQZn6FJl3sYvAKaBIvMx47E
W2ozVKOzJisnVw7bGXXPTZjFNPguWaFCEs+FBk+9NVnHV0kxFVPkYw00MqvGUWk/
s/lAylZkcEnq6Gb9QxqKKzvKoyhaHDtU+W+/qWQe4+jOpp7v6rSsxXk06zdOmgpu
C0bFIlU3AgMBAAECggEABb1giJmPoi4AnKuJxhhfb4J75W5K/LPEIspzH6pViTCR
QOeHx+8mrjDuaWDFjTbVZHxx55iPb2XvSpxzOC93cab8PGClijTUAFmvW9RpmOVu
oycs50jS9fLL0ysEqqXjEfXvc8QMFf4m43y0CpSqPFfXC634pMeFg/4f8TNhHujG
F/u9j0o2LOsLVC7JOpP9FWgCr9iG5cldqo4DWfmlYd+JlIWiSCyf175CcEuioGl6
1/WVQ35jlhs/upLDljZUxX0UM+wuyXNcVOvMfH6c5x62BGtdwIlZ1Ni2yj+4Eklr
BrhhN6KT4QjJYpDzno6EiwNrhhDYBKfsVypXtkjPmQKBgQDh5gOOXG1hPlpY+B/S
KLgsUcJMhhgxpSDl3kNqhgHOjPV8NZqLGBUv1AfJ772ufWpb+NaZynwmzP42lH9s
TkjEEJeSADXO8D/yxQD+oVxr+0SCst+OFThobrOsOQ/imZZdaX/JFrsR1viAnyVu
pHCV3NGpvdocULDJANK+ljq+5QKBgQDQQHJCNtTxNWS2X6PmeCNCGMDr/0LtL/9F
fDUGTocQPPYZHRsV22pSMQlBcgh+VgB/Qm20x/bz+b2ZR0qmHLZtlUh0syBqk4Rr
0FmCZwOwanhMZIIilFzwnPZLCjIPWYlUVdn0sjYKy2aKKHWI5kkVfcq5JLsNjDzr
/7T7qUYl6wKBgAxEeHb3r/zy7Ocd+mRoT7AgdIPBWHkBtaqmClUzl8+GuiIXqx/Y
m/Xv9shRm6RpLSh3d/f8FgfpY/jE0bKpAaycFg8YsdNeGqrtZeNuEd3PVGYgnqFR
p7GMKXe11ZYBrze9bfIWqOwMF4ysl9TNW0vYJQ6pv7l/7EnOIKO29tO9AoGBAIGM
Zce9FnDK91DgZDRd7gkTHwhwbfDhF9rg7pdyyGCYm7t5uLy7FwP0Tz6wMops87g2
2cpJTt3tMT4l9FErsWywHjfCqtrB0/HB1bziWpAnW5iiObZLNxnTev+pYwTbfSvC
kGjBaA8FA0/U5XD5WOOOskrEh7xgzhE9rBeV8PZrAoGBANCGh6HLipiewx5zHc6X
KgCpqLCG161a9mFNqQJ0GrTbCwLT6iKfqgNxu8V3bb163zewqSbaYYUI3MegCkJ/
bFkubA3XVEtoZZ9pusP4sXf438IHkWRSSxoPeF73uG0NsAmb5xBGGswSK8Ew30RA
tGuwsWFa1Ucak4AKcfoeZV5i
-----END PRIVATE KEY-----
</key>
<cert>
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
bc:da:11:0c:48:29:18:22:1c:1c:65:9d:0b:a9:76:c3
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=ChangeMe
Validity
Not Before: Sep 12 22:31:28 2024 GMT
Not After : Dec 16 22:31:28 2026 GMT
Subject: CN=michael-3-pastushkov-com_p4pn-virginia2
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
Modulus:
00:b7:c3:c1:37:69:f4:b6:4b:22:b9:dc:09:b5:7b:
60:68:4a:76:4c:0f:8f:51:c2:53:1c:36:44:0c:30:
2c:76:52:18:72:27:5a:da:39:1a:ce:4d:5c:f5:84:
8e:51:56:7e:3a:02:0c:c2:e7:3d:e6:68:a3:25:dc:
76:23:1a:57:6e:bb:93:de:18:00:5b:57:31:8b:e7:
73:9e:ec:8b:3b:48:5a:1d:fd:c1:86:e8:24:dd:53:
e3:3b:42:63:01:b1:ed:38:c7:46:1f:33:e1:bd:7f:
4c:1d:f6:af:bf:0e:7b:ef:c0:64:7d:30:30:5e:11:
0b:91:e6:ba:c1:c2:82:99:91:84:38:f2:d1:94:5b:
24:72:25:e4:19:9f:a1:49:97:7b:18:bc:02:9a:04:
8b:cc:c7:8e:c4:5b:6a:33:54:a3:b3:26:2b:27:57:
0e:db:19:75:cf:4d:98:c5:34:f8:2e:59:a1:42:12:
cf:85:06:4f:bd:35:59:c7:57:49:31:15:53:e4:63:
0d:34:32:ab:c6:51:69:3f:b3:f9:40:ca:56:64:70:
49:ea:e8:66:fd:43:1a:8a:2b:3b:ca:a3:28:5a:1c:
3b:54:f9:6f:bf:a9:64:1e:e3:e8:ce:a6:9e:ef:ea:
b4:ac:c5:79:34:eb:37:4e:9a:0a:6e:0b:46:c5:22:
55:37
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Key Identifier:
7F:5D:4F:59:DB:55:6A:B1:79:AE:92:80:23:A4:C5:E5:3E:3F:55:71
X509v3 Authority Key Identifier:
keyid:64:FA:C3:FA:14:55:DB:A6:98:A8:24:3F:E8:F8:AE:02:08:B9:91:1C
DirName:/CN=ChangeMe
serial:75:E3:5E:B0:89:46:D4:9B:1F:65:4F:FE:85:C2:49:A1:EE:E8:3D:49
X509v3 Extended Key Usage:
TLS Web Client Authentication
X509v3 Key Usage:
Digital Signature
Signature Algorithm: sha256WithRSAEncryption
a8:04:ba:5f:0c:e7:01:fe:db:59:ad:62:1d:6e:77:c2:0a:1d:
6a:5a:8e:e4:df:17:20:42:16:c7:61:0d:b8:7f:fe:6d:1d:32:
0b:d0:7e:fc:49:72:2a:b9:97:55:e9:20:38:b2:15:fa:bc:c8:
c2:3f:5a:6a:37:08:ba:cf:33:74:af:9a:c7:7d:20:bb:95:36:
ae:0f:62:49:ef:75:b8:b7:2f:93:fa:cb:41:90:05:7e:00:31:
e1:1b:78:17:aa:00:a0:4e:86:17:64:83:fe:3a:58:7b:17:ba:
9d:ce:35:55:45:c2:d2:ac:f4:8a:1f:f5:99:ed:14:5e:2e:e8:
e4:06:7d:53:41:37:60:38:08:22:ea:5e:54:a3:59:4a:93:77:
d9:1e:fe:f4:72:8c:cd:8d:44:40:4c:bb:36:43:d6:22:30:f7:
37:1c:0b:9f:9e:f3:21:77:7d:3f:e7:79:83:37:96:fb:a0:21:
f8:79:ed:9e:2b:5c:78:2b:a2:e1:00:87:8c:97:02:d2:7a:81:
31:17:c0:0a:e1:ef:2b:f1:7c:be:e9:67:d9:ce:ad:be:a4:12:
b8:de:39:64:49:a0:94:cc:f6:96:16:68:76:2b:cd:ad:c4:8c:
6a:66:68:d7:1e:5e:85:16:9a:97:a5:1d:e4:14:db:49:49:cf:
c3:6d:a5:2f
-----BEGIN CERTIFICATE-----
MIIDcDCCAligAwIBAgIRALzaEQxIKRgiHBxlnQupdsMwDQYJKoZIhvcNAQELBQAw
EzERMA8GA1UEAwwIQ2hhbmdlTWUwHhcNMjQwOTEyMjIzMTI4WhcNMjYxMjE2MjIz
MTI4WjAyMTAwLgYDVQQDDCdtaWNoYWVsLTMtcGFzdHVzaGtvdi1jb21fcDRwbi12
aXJnaW5pYTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3w8E3afS2
SyK53Am1e2BoSnZMD49RwlMcNkQMMCx2UhhyJ1raORrOTVz1hI5RVn46AgzC5z3m
aKMl3HYjGlduu5PeGABbVzGL53Oe7Is7SFod/cGG6CTdU+M7QmMBse04x0YfM+G9
f0wd9q+/DnvvwGR9MDBeEQuR5rrBwoKZkYQ48tGUWyRyJeQZn6FJl3sYvAKaBIvM
x47EW2ozVKOzJisnVw7bGXXPTZjFNPguWaFCEs+FBk+9NVnHV0kxFVPkYw00MqvG
UWk/s/lAylZkcEnq6Gb9QxqKKzvKoyhaHDtU+W+/qWQe4+jOpp7v6rSsxXk06zdO
mgpuC0bFIlU3AgMBAAGjgZ8wgZwwCQYDVR0TBAIwADAdBgNVHQ4EFgQUf11PWdtV
arF5rpKAI6TF5T4/VXEwTgYDVR0jBEcwRYAUZPrD+hRV26aYqCQ/6PiuAgi5kRyh
F6QVMBMxETAPBgNVBAMMCENoYW5nZU1lghR1416wiUbUmx9lT/6Fwkmh7ug9STAT
BgNVHSUEDDAKBggrBgEFBQcDAjALBgNVHQ8EBAMCB4AwDQYJKoZIhvcNAQELBQAD
ggEBAKgEul8M5wH+21mtYh1ud8IKHWpajuTfFyBCFsdhDbh//m0dMgvQfvxJciq5
l1XpIDiyFfq8yMI/Wmo3CLrPM3Svmsd9ILuVNq4PYknvdbi3L5P6y0GQBX4AMeEb
eBeqAKBOhhdkg/46WHsXup3ONVVFwtKs9Iof9ZntFF4u6OQGfVNBN2A4CCLqXlSj
WUqTd9ke/vRyjM2NREBMuzZD1iIw9zccC5+e8yF3fT/neYM3lvugIfh57Z4rXHgr
ouEAh4yXAtJ6gTEXwArh7yvxfL7pZ9nOrb6kErjeOWRJoJTM9pYWaHYrza3EjGpm
aNceXoUWmpelHeQU20lJz8NtpS8=
-----END CERTIFICATE-----
</cert>
<ca>
-----BEGIN CERTIFICATE-----
MIIDQjCCAiqgAwIBAgIUdeNesIlG1JsfZU/+hcJJoe7oPUkwDQYJKoZIhvcNAQEL
BQAwEzERMA8GA1UEAwwIQ2hhbmdlTWUwHhcNMjIwMzEwMDMxMzE4WhcNMzIwMzA3
MDMxMzE4WjATMREwDwYDVQQDDAhDaGFuZ2VNZTCCASIwDQYJKoZIhvcNAQEBBQAD
ggEPADCCAQoCggEBAMR2KwpcJf/Px6vhOY/7+cntcvxf9WqqN0gC4sDQOgfronLr
/Vn/i7DK0/74tR+fvM2sLXzsYTTtFJT5E/EBbWyRvRhizgw+TFmnAlotItfck6t6
uwe5iQavtlqWnrJWJo2AZvw7ai6gLyO5stIdnZuNOgJ3MjCyxBJogp0C11OGgpOf
j3MQ+7aQilFYgarNub6Jc7bx0sCU0F12HIFzm8yvdG95Rsu8TqaG5YuLt0vnyEIB
ksqIXJNy9DxjdfvFjmofV83bFDKJHL1YGEK7cibn+yQlJ3Z3KYFZKDx8IO1erHO8
ZIDsT8bA4ed42U/DUOy+7plzN3rtFrqJt+VBrusCAwEAAaOBjTCBijAdBgNVHQ4E
FgQUZPrD+hRV26aYqCQ/6PiuAgi5kRwwTgYDVR0jBEcwRYAUZPrD+hRV26aYqCQ/
6PiuAgi5kRyhF6QVMBMxETAPBgNVBAMMCENoYW5nZU1lghR1416wiUbUmx9lT/6F
wkmh7ug9STAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsF
AAOCAQEALyAyS8wt8LrXaP7H7AwzYQMYZlYg6kV0YObUNa119TRWEQFx0EOnQlxA
/ZaHJGxOxVwSLvWNoZbTs/n3WeGQptr64S+mcoCwgKNAIIZeeoFYOLDv8s13Qy4N
y4sHpyzwU8x+JIdgmI3xqL5bQeJVm8aIIUczzeAIdQ0yWGfxI/gNWm2GhbUXrwhV
dIxQBojvXMTKUk/7nTlMfUZ/uBesBTt9ieC7uSAsUm2Xu3z+kNqnyshOURzTF/cT
0i11Vwzq1sQMONrg6ec2A2EzEHu7cXELa4bAtsD9ckUbpnmZTWCJh4Y2rP9i9OED
sFh//pqzu3SMl4jb1inl0tdg0Po0zw==
-----END CERTIFICATE-----
</ca>
<tls-crypt>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
5e713de86c5ed44307b8f44262aacd18
c9b1294631f761385df7950c7025920d
ffa15903fd1494300ef251715a8fd0a2
88a2cdd60b3e46ea08971f3d45e2025f
70542eafe3bf7889fba2e3f6a44b39c1
f97010705513f3817598bcf872c8c672
f009be68229bbfa7e215c9961e3adddb
0126e8f5f1117c312552c9143801719f
dca607214ef761e7440574b1b475a55b
a4fc0d2fe9b49fae083bde27754f394a
ea98225a3ba995833e9387a7ba698a39
0027cedf43e6064af9ef933c096d573f
6f960a7912f9646055109f9d53606dc3
9ae07006b8abceca23edc4e35b6530bf
969e79381570f2bcde949b4289ab9f5f
e134ee927944ed87529080157c74fc90
-----END OpenVPN Static key V1-----
</tls-crypt>
client
dev tun
proto udp
remote 127.0.0.1 1984
route 52.204.74.175 255.255.255.255 net_gateway
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
ignore-unknown-option block-outside-dns
block-outside-dns
verb 3
<key>
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC3w8E3afS2SyK5
3Am1e2BoSnZMD49RwlMcNkQMMCx2UhhyJ1raORrOTVz1hI5RVn46AgzC5z3maKMl
3HYjGlduu5PeGABbVzGL53Oe7Is7SFod/cGG6CTdU+M7QmMBse04x0YfM+G9f0wd
9q+/DnvvwGR9MDBeEQuR5rrBwoKZkYQ48tGUWyRyJeQZn6FJl3sYvAKaBIvMx47E
W2ozVKOzJisnVw7bGXXPTZjFNPguWaFCEs+FBk+9NVnHV0kxFVPkYw00MqvGUWk/
s/lAylZkcEnq6Gb9QxqKKzvKoyhaHDtU+W+/qWQe4+jOpp7v6rSsxXk06zdOmgpu
C0bFIlU3AgMBAAECggEABb1giJmPoi4AnKuJxhhfb4J75W5K/LPEIspzH6pViTCR
QOeHx+8mrjDuaWDFjTbVZHxx55iPb2XvSpxzOC93cab8PGClijTUAFmvW9RpmOVu
oycs50jS9fLL0ysEqqXjEfXvc8QMFf4m43y0CpSqPFfXC634pMeFg/4f8TNhHujG
F/u9j0o2LOsLVC7JOpP9FWgCr9iG5cldqo4DWfmlYd+JlIWiSCyf175CcEuioGl6
1/WVQ35jlhs/upLDljZUxX0UM+wuyXNcVOvMfH6c5x62BGtdwIlZ1Ni2yj+4Eklr
BrhhN6KT4QjJYpDzno6EiwNrhhDYBKfsVypXtkjPmQKBgQDh5gOOXG1hPlpY+B/S
KLgsUcJMhhgxpSDl3kNqhgHOjPV8NZqLGBUv1AfJ772ufWpb+NaZynwmzP42lH9s
TkjEEJeSADXO8D/yxQD+oVxr+0SCst+OFThobrOsOQ/imZZdaX/JFrsR1viAnyVu
pHCV3NGpvdocULDJANK+ljq+5QKBgQDQQHJCNtTxNWS2X6PmeCNCGMDr/0LtL/9F
fDUGTocQPPYZHRsV22pSMQlBcgh+VgB/Qm20x/bz+b2ZR0qmHLZtlUh0syBqk4Rr
0FmCZwOwanhMZIIilFzwnPZLCjIPWYlUVdn0sjYKy2aKKHWI5kkVfcq5JLsNjDzr
/7T7qUYl6wKBgAxEeHb3r/zy7Ocd+mRoT7AgdIPBWHkBtaqmClUzl8+GuiIXqx/Y
m/Xv9shRm6RpLSh3d/f8FgfpY/jE0bKpAaycFg8YsdNeGqrtZeNuEd3PVGYgnqFR
p7GMKXe11ZYBrze9bfIWqOwMF4ysl9TNW0vYJQ6pv7l/7EnOIKO29tO9AoGBAIGM
Zce9FnDK91DgZDRd7gkTHwhwbfDhF9rg7pdyyGCYm7t5uLy7FwP0Tz6wMops87g2
2cpJTt3tMT4l9FErsWywHjfCqtrB0/HB1bziWpAnW5iiObZLNxnTev+pYwTbfSvC
kGjBaA8FA0/U5XD5WOOOskrEh7xgzhE9rBeV8PZrAoGBANCGh6HLipiewx5zHc6X
KgCpqLCG161a9mFNqQJ0GrTbCwLT6iKfqgNxu8V3bb163zewqSbaYYUI3MegCkJ/
bFkubA3XVEtoZZ9pusP4sXf438IHkWRSSxoPeF73uG0NsAmb5xBGGswSK8Ew30RA
tGuwsWFa1Ucak4AKcfoeZV5i
-----END PRIVATE KEY-----
</key>
<cert>
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
bc:da:11:0c:48:29:18:22:1c:1c:65:9d:0b:a9:76:c3
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=ChangeMe
Validity
Not Before: Sep 12 22:31:28 2024 GMT
Not After : Dec 16 22:31:28 2026 GMT
Subject: CN=michael-3-pastushkov-com_p4pn-virginia2
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
Modulus:
00:b7:c3:c1:37:69:f4:b6:4b:22:b9:dc:09:b5:7b:
60:68:4a:76:4c:0f:8f:51:c2:53:1c:36:44:0c:30:
2c:76:52:18:72:27:5a:da:39:1a:ce:4d:5c:f5:84:
8e:51:56:7e:3a:02:0c:c2:e7:3d:e6:68:a3:25:dc:
76:23:1a:57:6e:bb:93:de:18:00:5b:57:31:8b:e7:
73:9e:ec:8b:3b:48:5a:1d:fd:c1:86:e8:24:dd:53:
e3:3b:42:63:01:b1:ed:38:c7:46:1f:33:e1:bd:7f:
4c:1d:f6:af:bf:0e:7b:ef:c0:64:7d:30:30:5e:11:
0b:91:e6:ba:c1:c2:82:99:91:84:38:f2:d1:94:5b:
24:72:25:e4:19:9f:a1:49:97:7b:18:bc:02:9a:04:
8b:cc:c7:8e:c4:5b:6a:33:54:a3:b3:26:2b:27:57:
0e:db:19:75:cf:4d:98:c5:34:f8:2e:59:a1:42:12:
cf:85:06:4f:bd:35:59:c7:57:49:31:15:53:e4:63:
0d:34:32:ab:c6:51:69:3f:b3:f9:40:ca:56:64:70:
49:ea:e8:66:fd:43:1a:8a:2b:3b:ca:a3:28:5a:1c:
3b:54:f9:6f:bf:a9:64:1e:e3:e8:ce:a6:9e:ef:ea:
b4:ac:c5:79:34:eb:37:4e:9a:0a:6e:0b:46:c5:22:
55:37
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Subject Key Identifier:
7F:5D:4F:59:DB:55:6A:B1:79:AE:92:80:23:A4:C5:E5:3E:3F:55:71
X509v3 Authority Key Identifier:
keyid:64:FA:C3:FA:14:55:DB:A6:98:A8:24:3F:E8:F8:AE:02:08:B9:91:1C
DirName:/CN=ChangeMe
serial:75:E3:5E:B0:89:46:D4:9B:1F:65:4F:FE:85:C2:49:A1:EE:E8:3D:49
X509v3 Extended Key Usage:
TLS Web Client Authentication
X509v3 Key Usage:
Digital Signature
Signature Algorithm: sha256WithRSAEncryption
a8:04:ba:5f:0c:e7:01:fe:db:59:ad:62:1d:6e:77:c2:0a:1d:
6a:5a:8e:e4:df:17:20:42:16:c7:61:0d:b8:7f:fe:6d:1d:32:
0b:d0:7e:fc:49:72:2a:b9:97:55:e9:20:38:b2:15:fa:bc:c8:
c2:3f:5a:6a:37:08:ba:cf:33:74:af:9a:c7:7d:20:bb:95:36:
ae:0f:62:49:ef:75:b8:b7:2f:93:fa:cb:41:90:05:7e:00:31:
e1:1b:78:17:aa:00:a0:4e:86:17:64:83:fe:3a:58:7b:17:ba:
9d:ce:35:55:45:c2:d2:ac:f4:8a:1f:f5:99:ed:14:5e:2e:e8:
e4:06:7d:53:41:37:60:38:08:22:ea:5e:54:a3:59:4a:93:77:
d9:1e:fe:f4:72:8c:cd:8d:44:40:4c:bb:36:43:d6:22:30:f7:
37:1c:0b:9f:9e:f3:21:77:7d:3f:e7:79:83:37:96:fb:a0:21:
f8:79:ed:9e:2b:5c:78:2b:a2:e1:00:87:8c:97:02:d2:7a:81:
31:17:c0:0a:e1:ef:2b:f1:7c:be:e9:67:d9:ce:ad:be:a4:12:
b8:de:39:64:49:a0:94:cc:f6:96:16:68:76:2b:cd:ad:c4:8c:
6a:66:68:d7:1e:5e:85:16:9a:97:a5:1d:e4:14:db:49:49:cf:
c3:6d:a5:2f
-----BEGIN CERTIFICATE-----
MIIDcDCCAligAwIBAgIRALzaEQxIKRgiHBxlnQupdsMwDQYJKoZIhvcNAQELBQAw
EzERMA8GA1UEAwwIQ2hhbmdlTWUwHhcNMjQwOTEyMjIzMTI4WhcNMjYxMjE2MjIz
MTI4WjAyMTAwLgYDVQQDDCdtaWNoYWVsLTMtcGFzdHVzaGtvdi1jb21fcDRwbi12
aXJnaW5pYTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3w8E3afS2
SyK53Am1e2BoSnZMD49RwlMcNkQMMCx2UhhyJ1raORrOTVz1hI5RVn46AgzC5z3m
aKMl3HYjGlduu5PeGABbVzGL53Oe7Is7SFod/cGG6CTdU+M7QmMBse04x0YfM+G9
f0wd9q+/DnvvwGR9MDBeEQuR5rrBwoKZkYQ48tGUWyRyJeQZn6FJl3sYvAKaBIvM
x47EW2ozVKOzJisnVw7bGXXPTZjFNPguWaFCEs+FBk+9NVnHV0kxFVPkYw00MqvG
UWk/s/lAylZkcEnq6Gb9QxqKKzvKoyhaHDtU+W+/qWQe4+jOpp7v6rSsxXk06zdO
mgpuC0bFIlU3AgMBAAGjgZ8wgZwwCQYDVR0TBAIwADAdBgNVHQ4EFgQUf11PWdtV
arF5rpKAI6TF5T4/VXEwTgYDVR0jBEcwRYAUZPrD+hRV26aYqCQ/6PiuAgi5kRyh
F6QVMBMxETAPBgNVBAMMCENoYW5nZU1lghR1416wiUbUmx9lT/6Fwkmh7ug9STAT
BgNVHSUEDDAKBggrBgEFBQcDAjALBgNVHQ8EBAMCB4AwDQYJKoZIhvcNAQELBQAD
ggEBAKgEul8M5wH+21mtYh1ud8IKHWpajuTfFyBCFsdhDbh//m0dMgvQfvxJciq5
l1XpIDiyFfq8yMI/Wmo3CLrPM3Svmsd9ILuVNq4PYknvdbi3L5P6y0GQBX4AMeEb
eBeqAKBOhhdkg/46WHsXup3ONVVFwtKs9Iof9ZntFF4u6OQGfVNBN2A4CCLqXlSj
WUqTd9ke/vRyjM2NREBMuzZD1iIw9zccC5+e8yF3fT/neYM3lvugIfh57Z4rXHgr
ouEAh4yXAtJ6gTEXwArh7yvxfL7pZ9nOrb6kErjeOWRJoJTM9pYWaHYrza3EjGpm
aNceXoUWmpelHeQU20lJz8NtpS8=
-----END CERTIFICATE-----
</cert>
<ca>
-----BEGIN CERTIFICATE-----
MIIDQjCCAiqgAwIBAgIUdeNesIlG1JsfZU/+hcJJoe7oPUkwDQYJKoZIhvcNAQEL
BQAwEzERMA8GA1UEAwwIQ2hhbmdlTWUwHhcNMjIwMzEwMDMxMzE4WhcNMzIwMzA3
MDMxMzE4WjATMREwDwYDVQQDDAhDaGFuZ2VNZTCCASIwDQYJKoZIhvcNAQEBBQAD
ggEPADCCAQoCggEBAMR2KwpcJf/Px6vhOY/7+cntcvxf9WqqN0gC4sDQOgfronLr
/Vn/i7DK0/74tR+fvM2sLXzsYTTtFJT5E/EBbWyRvRhizgw+TFmnAlotItfck6t6
uwe5iQavtlqWnrJWJo2AZvw7ai6gLyO5stIdnZuNOgJ3MjCyxBJogp0C11OGgpOf
j3MQ+7aQilFYgarNub6Jc7bx0sCU0F12HIFzm8yvdG95Rsu8TqaG5YuLt0vnyEIB
ksqIXJNy9DxjdfvFjmofV83bFDKJHL1YGEK7cibn+yQlJ3Z3KYFZKDx8IO1erHO8
ZIDsT8bA4ed42U/DUOy+7plzN3rtFrqJt+VBrusCAwEAAaOBjTCBijAdBgNVHQ4E
FgQUZPrD+hRV26aYqCQ/6PiuAgi5kRwwTgYDVR0jBEcwRYAUZPrD+hRV26aYqCQ/
6PiuAgi5kRyhF6QVMBMxETAPBgNVBAMMCENoYW5nZU1lghR1416wiUbUmx9lT/6F
wkmh7ug9STAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsF
AAOCAQEALyAyS8wt8LrXaP7H7AwzYQMYZlYg6kV0YObUNa119TRWEQFx0EOnQlxA
/ZaHJGxOxVwSLvWNoZbTs/n3WeGQptr64S+mcoCwgKNAIIZeeoFYOLDv8s13Qy4N
y4sHpyzwU8x+JIdgmI3xqL5bQeJVm8aIIUczzeAIdQ0yWGfxI/gNWm2GhbUXrwhV
dIxQBojvXMTKUk/7nTlMfUZ/uBesBTt9ieC7uSAsUm2Xu3z+kNqnyshOURzTF/cT
0i11Vwzq1sQMONrg6ec2A2EzEHu7cXELa4bAtsD9ckUbpnmZTWCJh4Y2rP9i9OED
sFh//pqzu3SMl4jb1inl0tdg0Po0zw==
-----END CERTIFICATE-----
</ca>
<tls-crypt>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
5e713de86c5ed44307b8f44262aacd18
c9b1294631f761385df7950c7025920d
ffa15903fd1494300ef251715a8fd0a2
88a2cdd60b3e46ea08971f3d45e2025f
70542eafe3bf7889fba2e3f6a44b39c1
f97010705513f3817598bcf872c8c672
f009be68229bbfa7e215c9961e3adddb
0126e8f5f1117c312552c9143801719f
dca607214ef761e7440574b1b475a55b
a4fc0d2fe9b49fae083bde27754f394a
ea98225a3ba995833e9387a7ba698a39
0027cedf43e6064af9ef933c096d573f
6f960a7912f9646055109f9d53606dc3
9ae07006b8abceca23edc4e35b6530bf
969e79381570f2bcde949b4289ab9f5f
e134ee927944ed87529080157c74fc90
-----END OpenVPN Static key V1-----
</tls-crypt>
File added
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/select.h>
#define LOCAL_PORT 1984
#define REMOTE_IP "52.204.74.175"
#define REMOTE_PORT 3389
#define BUFFER_SIZE 4096
void error_exit(const char *message) {
perror(message);
exit(EXIT_FAILURE);
}
int main() {
int local_socket, remote_socket;
struct sockaddr_in local_addr, remote_addr, client_addr;
socklen_t addr_len = sizeof(struct sockaddr_in);
char buffer[BUFFER_SIZE];
fd_set read_fds;
// Create local socket
if ((local_socket = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
error_exit("Local socket creation failed");
}
memset(&local_addr, 0, sizeof(local_addr));
local_addr.sin_family = AF_INET;
local_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
local_addr.sin_port = htons(LOCAL_PORT);
// Bind the local socket to 127.0.0.1:1984
if (bind(local_socket, (struct sockaddr *)&local_addr, sizeof(local_addr)) < 0) {
error_exit("Binding local socket failed");
}
// Create remote socket
if ((remote_socket = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
error_exit("Remote socket creation failed");
}
memset(&remote_addr, 0, sizeof(remote_addr));
remote_addr.sin_family = AF_INET;
remote_addr.sin_addr.s_addr = inet_addr(REMOTE_IP);
remote_addr.sin_port = htons(REMOTE_PORT);
printf("UDP Proxy running on 127.0.0.1:%d, forwarding to %s:%d\n", LOCAL_PORT, REMOTE_IP, REMOTE_PORT);
while (1) {
FD_ZERO(&read_fds);
FD_SET(local_socket, &read_fds);
FD_SET(remote_socket, &read_fds);
int max_fd = (local_socket > remote_socket) ? local_socket : remote_socket;
int activity = select(max_fd + 1, &read_fds, NULL, NULL, NULL);
if (activity < 0) {
error_exit("select() error");
}
// Traffic from local (127.0.0.1:1984) to remote (52.204.74.175:3389)
if (FD_ISSET(local_socket, &read_fds)) {
int received = recvfrom(local_socket, buffer, BUFFER_SIZE, 0, (struct sockaddr *)&client_addr, &addr_len);
if (received < 0) {
error_exit("recvfrom() failed");
}
buffer[received] = '\0'; // Null-terminate for safety
if (sendto(remote_socket, buffer, received, 0, (struct sockaddr *)&remote_addr, addr_len) < 0) {
error_exit("sendto() to remote failed");
}
printf("Forwarded %d bytes from local to remote\n", received);
}
// Traffic from remote (52.204.74.175:3389) back to local (127.0.0.1:1984)
if (FD_ISSET(remote_socket, &read_fds)) {
int received = recvfrom(remote_socket, buffer, BUFFER_SIZE, 0, NULL, NULL);
if (received < 0) {
error_exit("recvfrom() from remote failed");
}
buffer[received] = '\0'; // Null-terminate for safety
if (sendto(local_socket, buffer, received, 0, (struct sockaddr *)&client_addr, addr_len) < 0) {
error_exit("sendto() to local failed");
}
printf("Forwarded %d bytes from remote to local\n", received);
}
}
close(local_socket);
close(remote_socket);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/select.h>
#define SOURCE_IP "172.31.13.132"
#define SOURCE_PORT 3389
#define DESTINATION_IP "172.31.13.132"
#define DESTINATION_PORT 1194
#define BUFFER_SIZE 4096
void error_exit(const char *message) {
perror(message);
exit(EXIT_FAILURE);
}
int main() {
int source_socket, destination_socket;
struct sockaddr_in source_addr, destination_addr, client_addr;
socklen_t addr_len = sizeof(struct sockaddr_in);
char buffer[BUFFER_SIZE];
fd_set read_fds;
// Create source socket
if ((source_socket = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
error_exit("Source socket creation failed");
}
memset(&source_addr, 0, sizeof(source_addr));
source_addr.sin_family = AF_INET;
source_addr.sin_addr.s_addr = inet_addr(SOURCE_IP);
source_addr.sin_port = htons(SOURCE_PORT);
// Bind the source socket to 172.31.13.132:3389
if (bind(source_socket, (struct sockaddr *)&source_addr, sizeof(source_addr)) < 0) {
error_exit("Binding source socket failed");
}
// Create destination socket
if ((destination_socket = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
error_exit("Destination socket creation failed");
}
memset(&destination_addr, 0, sizeof(destination_addr));
destination_addr.sin_family = AF_INET;
destination_addr.sin_addr.s_addr = inet_addr(DESTINATION_IP);
destination_addr.sin_port = htons(DESTINATION_PORT);
printf("UDP Proxy running on %s:%d, forwarding to %s:%d\n", SOURCE_IP, SOURCE_PORT, DESTINATION_IP, DESTINATION_PORT);
while (1) {
FD_ZERO(&read_fds);
FD_SET(source_socket, &read_fds);
FD_SET(destination_socket, &read_fds);
int max_fd = (source_socket > destination_socket) ? source_socket : destination_socket;
int activity = select(max_fd + 1, &read_fds, NULL, NULL, NULL);
if (activity < 0) {
error_exit("select() error");
}
// Traffic from source (172.31.13.132:3389) to destination (172.31.13.132:1194)
if (FD_ISSET(source_socket, &read_fds)) {
int received = recvfrom(source_socket, buffer, BUFFER_SIZE, 0, (struct sockaddr *)&client_addr, &addr_len);
if (received < 0) {
error_exit("recvfrom() from source failed");
}
buffer[received] = '\0'; // Null-terminate for safety
if (sendto(destination_socket, buffer, received, 0, (struct sockaddr *)&destination_addr, addr_len) < 0) {
error_exit("sendto() to destination failed");
}
printf("Forwarded %d bytes from source to destination\n", received);
}
// Traffic from destination (172.31.13.132:1194) back to source (172.31.13.132:3389)
if (FD_ISSET(destination_socket, &read_fds)) {
int received = recvfrom(destination_socket, buffer, BUFFER_SIZE, 0, NULL, NULL);
if (received < 0) {
error_exit("recvfrom() from destination failed");
}
buffer[received] = '\0'; // Null-terminate for safety
if (sendto(source_socket, buffer, received, 0, (struct sockaddr *)&client_addr, addr_len) < 0) {
error_exit("sendto() to source failed");
}
printf("Forwarded %d bytes from destination to source\n", received);
}
}
close(source_socket);
close(destination_socket);
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment