sockit 1.0.6 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e1c3573605d7f098845826d1e1be93105351ba8c
4
- data.tar.gz: a4dfbbe50dc3458b2f82144fae7163fba1b2073e
3
+ metadata.gz: 9f119ae1ef934eccc52447bc1a6858ba528fd246
4
+ data.tar.gz: 32c92a29a247a47ae15951c0e136fe6aebe2b320
5
5
  SHA512:
6
- metadata.gz: dd52aeffe4d0e8f19050faab68669bb8b7c0309164fe207b984542e21432206b4726f5030f449d52dd13900010a886d0e6dd32bbac76fbfb5cb39469416e796d
7
- data.tar.gz: f198b98c10ff53ca6c7889f46165af6eb50d428e05a1a432d0d141b01854cbace19beb0bd091d44e78d1aa3446f5a543562b0545a6eb2009cc7fc7d6c8fa3130
6
+ metadata.gz: 1631707e3357000ff835b13b5ad788a1c94b7c1d7b8b178cfd8410c2d92c8e5899522f968c30cc83afdf28d04edb3f22160b9215fb721a16ddb41f4429dab86a
7
+ data.tar.gz: 26422b90f818c9cb59b07d7101fefc0238198e51e3343c24cfde5e5338774d826cabfc916f3c2d08be89435106f7ea9cc56201d4f7a4e60e2f9d69272497c5db
@@ -2,7 +2,7 @@ module Sockit
2
2
  module V5
3
3
  module Authentication
4
4
 
5
- def perform_v5_authenticate(socket)
5
+ def build_v5_authentication_request(socket)
6
6
  log(:yellow, "Authenticating with SOCKS server #{config.host}:#{config.port}")
7
7
 
8
8
  # The authentication methods supported are numbered as follows:
@@ -33,10 +33,12 @@ module Sockit
33
33
  dump(:write, data)
34
34
  socket.write(data)
35
35
  end
36
+ end
36
37
 
37
- # The server's choice is communicated:
38
- # field 1: SOCKS version, 1 byte (0x05 for this version)
39
- # field 2: chosen authentication method, 1 byte, or 0xFF if no acceptable methods were offered
38
+ # The server's choice is communicated:
39
+ # field 1: SOCKS version, 1 byte (0x05 for this version)
40
+ # field 2: chosen authentication method, 1 byte, or 0xFF if no acceptable methods were offered
41
+ def process_v5_authentication_response(socket)
40
42
  log(:yellow, "Waiting for SOCKS authentication reply")
41
43
  auth_reply = socket.recv(2).unpack("C*")
42
44
  dump(:read, auth_reply)
@@ -53,51 +55,60 @@ module Sockit
53
55
  log(:green, build_v5_authentication_method_message(server_auth_method))
54
56
  end
55
57
 
56
- # The subsequent authentication is method-dependent. Username and password authentication (method 0x02) is described in RFC 1929:
57
- case server_auth_method
58
+ server_auth_method
59
+ end
60
+
61
+ def perform_v5_password_authentication_request(socket)
62
+ # For username/password authentication the client's authentication request is
63
+ # field 1: version number, 1 byte (must be 0x01)
64
+ # field 2: username length, 1 byte
65
+ # field 3: username
66
+ # field 4: password length, 1 byte
67
+ # field 5: password
68
+ data = Array.new
69
+ data << [0x01].pack("C*")
70
+ data << [config.username.length.to_i].pack("C*")
71
+ data << config.username
72
+ data << [config.password.length.to_i].pack("C*")
73
+ data << config.password
74
+ data = data.flatten.join
75
+
76
+ log(:yellow, "Sending username and password")
77
+ dump(:write, data)
78
+ socket.write(data)
79
+
80
+ # Server response for username/password authentication:
81
+ # field 1: version, 1 byte
82
+ # field 2: status code, 1 byte.
83
+ # 0x00 = success
84
+ # any other value = failure, connection must be closed
85
+ log(:yellow, "Waiting for SOCKS authentication reply")
86
+ auth_reply = socket.recv(2).unpack("C*")
87
+ dump(:read, auth_reply)
88
+ version = auth_reply[0]
89
+ status_code = auth_reply[1]
90
+
91
+ if status_code == 0x00
92
+ log(:green, build_v5_authentication_status_message(status_code))
93
+ else
94
+ raise SockitError, build_v5_authentication_status_message(status_code)
95
+ end
96
+
97
+ log(:green, "Authenticated to SOCKS server #{config.host}:#{config.port}")
98
+ end
99
+
100
+ def perform_v5_authenticate(socket)
101
+ build_v5_authentication_request(socket)
102
+
103
+ case process_v5_authentication_response(socket)
58
104
  when 0x00 then
59
105
  # No authentication
60
106
  when 0x01 then
61
107
  # GSSAPI
62
108
  raise SockitError, "Authentication method GSSAPI not implemented"
63
109
  when 0x02 then
64
- # For username/password authentication the client's authentication request is
65
- # field 1: version number, 1 byte (must be 0x01)
66
- # field 2: username length, 1 byte
67
- # field 3: username
68
- # field 4: password length, 1 byte
69
- # field 5: password
70
- data = Array.new
71
- data << [0x01].pack("C*")
72
- data << [config.username.length.to_i].pack("C*")
73
- data << config.username
74
- data << [config.password.length.to_i].pack("C*")
75
- data << config.password
76
- data = data.flatten.join
77
-
78
- log(:yellow, "Sending username and password")
79
- dump(:write, data)
80
- socket.write(data)
81
-
82
- # Server response for username/password authentication:
83
- # field 1: version, 1 byte
84
- # field 2: status code, 1 byte.
85
- # 0x00 = success
86
- # any other value = failure, connection must be closed
87
- log(:yellow, "Waiting for SOCKS authentication reply")
88
- auth_reply = socket.recv(2).unpack("C*")
89
- dump(:read, auth_reply)
90
- version = auth_reply[0]
91
- status_code = auth_reply[1]
92
-
93
- if status_code == 0x00
94
- log(:green, build_v5_authentication_status_message(status_code))
95
- else
96
- raise SockitError, build_v5_authentication_status_message(status_code)
97
- end
110
+ perform_v5_password_authentication_request(socket)
98
111
  end
99
-
100
- log(:green, "Authenticated to SOCKS server #{config.host}:#{config.port}")
101
112
  end
102
113
 
103
114
  end
@@ -21,7 +21,7 @@
21
21
  module Sockit
22
22
 
23
23
  unless const_defined?(:VERSION)
24
- VERSION = "1.0.6"
24
+ VERSION = "1.0.7"
25
25
  end
26
26
 
27
27
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sockit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zachary Patten