Documentation
¶
Overview ¶
Package socks provides SOCKS4/4a/5 protocol encoding and decoding utilities.
Index ¶
- Constants
- func BuildSOCKS4ConnectRequest(ip net.IP, port uint16, userid string) []byte
- func BuildSOCKS4aConnectRequest(hostname string, port uint16, userid string) []byte
- func BuildSOCKS5BindRequest(ip net.IP, port uint16) []byte
- func BuildSOCKS5ConnectRequest(ip net.IP, port uint16) []byte
- func BuildSOCKS5ConnectRequestDomain(hostname string, port uint16) []byte
- func BuildSOCKS5Greeting(methods []byte) []byte
- func BuildSOCKS5UDPAssociateRequest(ip net.IP, port uint16) []byte
- func BuildSOCKS5UDPRequest(ip net.IP, port uint16, data []byte) []byte
- func BuildSOCKS5UsernamePasswordAuth(username, password string) []byte
- func ParseSOCKS4Reply(r io.Reader) (replyCode byte, boundIP net.IP, boundPort uint16, err error)
- func ParseSOCKS5AuthReply(r io.Reader) (success bool, err error)
- func ParseSOCKS5Reply(r io.Reader) (repCode byte, bndAddr string, bndPort uint16, err error)
- func ParseSOCKS5ServerChoice(r io.Reader) (method byte, err error)
Constants ¶
const ( Version4 byte = 0x04 Version5 byte = 0x05 )
SOCKS protocol version bytes
const ( CmdConnect byte = 0x01 CmdBind byte = 0x02 CmdUDPAssociate byte = 0x03 )
SOCKS command codes
const ( AuthNoAuth byte = 0x00 AuthGSSAPI byte = 0x01 AuthUsernamePassword byte = 0x02 AuthNoAcceptable byte = 0xFF )
SOCKS5 authentication method codes
const ( AtypIPv4 byte = 0x01 AtypDomain byte = 0x03 AtypIPv6 byte = 0x04 )
SOCKS5 address type codes
const ( RepSuccess byte = 0x00 RepGeneralFailure byte = 0x01 RepNotAllowed byte = 0x02 RepNetworkUnreachable byte = 0x03 RepHostUnreachable byte = 0x04 RepConnectionRefused byte = 0x05 RepTTLExpired byte = 0x06 RepCmdNotSupported byte = 0x07 RepAtypNotSupported byte = 0x08 )
SOCKS5 reply codes
const ( SOCKS4RepGranted byte = 0x5A // request granted SOCKS4RepRejected byte = 0x5B // request rejected or failed SOCKS4RepIdentFail byte = 0x5C // rejected: cannot connect to client's identd SOCKS4RepIdentMismatch byte = 0x5D // rejected: client program and identd report different user-ids )
SOCKS4 reply codes (Ying-Da Lee spec)
const AuthUsernamePasswordVersion byte = 0x01
SOCKS5 username/password sub-negotiation version
Variables ¶
This section is empty.
Functions ¶
func BuildSOCKS4ConnectRequest ¶
BuildSOCKS4ConnectRequest builds a SOCKS4 CONNECT request for the given IP and port. userid is the user identifier string (may be empty).
func BuildSOCKS4aConnectRequest ¶
BuildSOCKS4aConnectRequest builds a SOCKS4a CONNECT request for the given hostname and port. SOCKS4a uses a special IP (0.0.0.0/0.0.0.1) and appends the hostname after the userid.
func BuildSOCKS5BindRequest ¶
BuildSOCKS5BindRequest builds a SOCKS5 BIND request.
func BuildSOCKS5ConnectRequest ¶
BuildSOCKS5ConnectRequest builds a SOCKS5 CONNECT request using an IPv4 address.
func BuildSOCKS5ConnectRequestDomain ¶
BuildSOCKS5ConnectRequestDomain builds a SOCKS5 CONNECT request using a domain name.
func BuildSOCKS5Greeting ¶
BuildSOCKS5Greeting builds a SOCKS5 client greeting offering the specified auth methods.
func BuildSOCKS5UDPAssociateRequest ¶
BuildSOCKS5UDPAssociateRequest builds a SOCKS5 UDP ASSOCIATE request.
func BuildSOCKS5UDPRequest ¶
BuildSOCKS5UDPRequest builds a SOCKS5 UDP request encapsulation header.
func BuildSOCKS5UsernamePasswordAuth ¶
BuildSOCKS5UsernamePasswordAuth builds a SOCKS5 username/password auth sub-negotiation request.
func ParseSOCKS4Reply ¶
ParseSOCKS4Reply reads and parses an 8-byte SOCKS4 reply. Returns the reply code and bound address/port.
func ParseSOCKS5AuthReply ¶
ParseSOCKS5AuthReply reads the SOCKS5 username/password auth reply. Returns true if authentication was successful (status == 0x00).
func ParseSOCKS5Reply ¶
ParseSOCKS5Reply reads and parses a SOCKS5 reply. Returns the reply code, bound address, and bound port.
Types ¶
This section is empty.