Skip to content

Proxy toolkit including SOCKS5, HTTP, port forward and reverse base proxying

License

Notifications You must be signed in to change notification settings

shoriwe/fullproxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FullProxy

made-with-Go GitHub go.mod Go version of a Go module Go Report Card Release


Bind and reverse connection (with encryption) based, SOCKS5, HTTP and PortForward proxy. \

Description

FullProxyLogo
FullProxy is a Bind and Reverse Connection (with encryption) based HTTP, SOCKS5 and PortForward portable proxy

Index

Usage

Implemented protocols

user@linux:~$ fullproxy help
Usage:
         fullproxy PROTOCOL *FLAGS

Protocols available:
         - socks5
         - http
         - local-forward
         - remote-forward
         - master
         - translate

SOCKS5

user@linux:~$ fullproxy socks5 --help
Usage of socks5:
  -host string
        Host to listen on. When "-slave" flag is set, is the IP of master to connect
  -inbound-blacklist string
        File with a host per line. Denied incoming connections to the proxy (ignored in slave mode and when inbound-whitelist is set)
  -inbound-whitelist string
        File with a host per line. Allowed incoming connections to the proxy (ignored in slave  mode and when inbound-blacklist is set)
  -outbound-blacklist string
        File with a host per line. Denied outgoing connections (ignored when outbound-whitelist is set)
  -outbound-whitelist string
        File with a host per line. Allowed outgoing connections (ignored when outbound-blacklist is set)
  -password string
        Password of the running proxy, requires "-username". It will be ignored if is an empty string
  -port string
        Port to listen on. When "-slave" flag is set, is the Port of the master to connect. I both modes the default port is 1080 (default "1080")
  -slave
        Connect to a master, no bind proxying
  -timeout int
        The number of second before re-trying the connection between target and client (default is 10 seconds) (default 10)
  -tries int
        The number of re-tries that will maintain the connection between target and client (default is 5 tries) (default 5)
  -username string
        Username of the running proxy, requires "-password". It will be ignored if is an empty string

HTTP

HTTP proxy could be implemented thanks to GoProxy

user@linux:~$ fullproxy local-forward -help
Usage of http:
  -host string
        Host to listen on. When "-slave" flag is set, is the IP of master to connect
  -inbound-blacklist string
        File with a host per line. Denied incoming connections to the proxy (ignored in slave mode and when inbound-whitelist is set)
  -inbound-whitelist string
        File with a host per line. Allowed incoming connections to the proxy (ignored in slave  mode and when inbound-blacklist is set)
  -outbound-blacklist string
        File with a host per line. Denied outgoing connections (ignored when outbound-whitelist is set)
  -outbound-whitelist string
        File with a host per line. Allowed outgoing connections (ignored when outbound-blacklist is set)
  -password string
        Password of the running proxy, requires "-username". It will be ignored if is an empty string
  -port string
        Port to listen on. When "-slave" flag is set, is the Port of the master to connect. I both modes the default port is 8080 (default "8080")
  -slave
        Connect to a master, no bind proxying
  -tls
        Use HTTPS
  -username string
        Username of the running proxy, requires "-password". It will be ignored if is an empty string

Forward

Local

user@linux:~$ fullproxy local-forward -help
Usage of local-forward:
  -forward-host string
        Host to forward the traffic received from master
  -forward-port string
        Port to forward the traffic received from master
  -inbound-blacklist string
        File with a host per line. Denied incoming connections to the proxy (ignored when inbound-whitelist is set)
  -inbound-whitelist string
        File with a host per line. Allowed incoming connections to the proxy (ignored when inbound-blacklist is set)
  -master-host string
        Host of the master
  -master-port string
        Port of the master
  -timeout int
        The number of second before re-trying the connection between target and client (default is 10 seconds) (default 10)
  -tries int
        The number of re-tries that will maintain the connection between target and client (default is 5 tries) (default 5)

Remote

user@linux:~$ fullproxy remote-forward -help
Usage of remote-forward:
  -inbound-blacklist string
        File with a host per line. Denied incoming connections to the proxy (ignored when inbound-whitelist is set)
  -inbound-whitelist string
        File with a host per line. Allowed incoming connections to the proxy (ignored when inbound-blacklist is set)
  -local-host string
        Host to bind by slave
  -local-port string
        Port to bind by slave
  -master-host string
        Host of the master
  -master-port string
        Port of the master
  -timeout int
        The number of second before re-trying the connection between target and client (default is 10 seconds) (default 10)
  -tries int
        The number of re-tries that will maintain the connection between target and client (default is 5 tries) (default 5)

Master

user@linux:~$ fullproxy remote-forward -help
Usage of master:
  -forward-host string
        Argument required to handle correctly the "remote-forward" (This is the service that the master can only acceded)
  -forward-port string
        Argument required to handle correctly the "remote-forward" (This is the service that the master can only acceded)
  -host string
        Host to listen on. (default "0.0.0.0")
  -inbound-blacklist string
        File with a host per line. Denied incoming connections to the proxy (ignored when inbound-whitelist is set)
  -inbound-whitelist string
        File with a host per line. Allowed incoming connections to the proxy (ignored when inbound-blacklist is set)
  -port string
        Port to listen on. (default "1080")
  -timeout int
        The number of second before re-trying the connection between target and client (default is 10 seconds) (default 10)
  -tries int
        The number of re-tries that will maintain the connection between target and client (default is 5 tries) (default 5)

Translate

user@linux:~$ fullproxy translate help
Usage:
         fullproxy translate TARGET *FLAGS

TARGETS available:
         - port_forward-socks5

Port Forward To SOCKS5

user@linux:~$ fullproxy translate port_forward-socks5 -help
Usage of port_forward-socks5:
  -bind-host string
        Host to listen on. (default "0.0.0.0")
  -bind-port string
        Port to listen on. (default "8080")
  -inbound-blacklist string
        File with a host per line. Denied incoming connections to the proxy (ignored when inbound-whitelist is set)
  -inbound-whitelist string
        File with a host per line. Allowed incoming connections to the proxy (ignored when inbound-blacklist is set)
  -socks5-host string
        SOCKS5 server host to use (default "127.0.0.1")
  -socks5-password string
        Password for the SOCKS5 server; leave empty for no AUTH
  -socks5-port string
        SOCKS5 server port to use (default "1080")
  -socks5-username string
        Username for the SOCKS5 server; leave empty for no AUTH
  -target-host string
        Host of the target host that is accessible by the SOCKS5 proxy
  -target-port string
        Port of the target host that is accessible by the SOCKS5 proxy
  -timeout int
        The number of second before re-trying the connection between target and client (default is 10 seconds) (default 10)
  -tries int
        The number of re-tries that will maintain the connection between target and client (default is 5 tries) (default 5)

Concepts

Master/Slave

Handles the proxying between a reverse connected (with encryption) proxy and the clients. In other words, it will receive the connections of the clients and will forward the traffic to the proxy that is reverse connected to it.

How it works

  1. It first binds to the host specified by the user.
  2. Then accept the connection from the proxy server.
  3. Finally, it proxy the traffic of all new incoming connections to the proxy server that was reverse connected to it in the second step. In other words, is the proxy of another proxy but totally invisible for the client.

Applications

This could be specially useful when you need to proxy a network that a machine have access to, but you can't bind with it

Considerations

  • The master protocol may loss some setup connections if it is extremely stressed, but it should work just fine if the connections where already made

Translation

This protocol is simple, it receives proxying request in a specific proxying protocol to them forward them to another proxy with another protocol; this means that if you only speaks SOCKS5, you will be able to talk to an HTTP proxy using this "translator"

Installation

Pre-compiled binaries

You can find pre-compiled binaries for windows and linux Here

Build from source code

Run this command:

go get github.com/shoriwe/FullProxy

Suggestions

If you have any suggestion for new features, also leave them in the issue section or create the proper branch, add what do you want and request a pull request