@@ -102,23 +102,25 @@ def login_2(user, pass, epmp_ver)
102
102
}
103
103
)
104
104
105
+ cookies = res . get_cookies_parsed
106
+ check_sysauth = cookies . values . select { |v | v . to_s =~ /sysauth_/ } . first . to_s
107
+
105
108
good_response = (
106
109
res &&
107
110
res . code == 200 &&
108
- res . headers . include? ( 'Set-Cookie' ) &&
109
- res . headers [ 'Set-Cookie' ] . include? ( 'sysauth' )
111
+ check_sysauth . include? ( 'sysauth' )
110
112
)
111
113
112
114
if good_response
113
- sysauth_value = res . headers [ 'Set-Cookie' ] . match ( /((.*)[$ ])/ )
114
- cookie1 = " #{ sysauth_value } "
115
+ sysauth_dirty = cookies . values . select { | v | v . to_s =~ /sysauth_/ } . first . to_s
116
+ sysauth_value = sysauth_dirty . match ( /((.*)[$ ])/ )
115
117
prevsessid = res . body . match ( /((?:[a-z][a-z]*[0-9]+[a-z0-9]*))/ )
116
118
117
119
res = send_request_cgi (
118
120
{
119
121
'uri' => '/cgi-bin/luci' ,
120
122
'method' => 'POST' ,
121
- 'cookie' => cookie1 ,
123
+ 'cookie' => sysauth_value ,
122
124
'headers' => {
123
125
'X-Requested-With' => 'XMLHttpRequest' ,
124
126
'Accept' => 'application/json, text/javascript, */*; q=0.01' ,
@@ -136,7 +138,6 @@ def login_2(user, pass, epmp_ver)
136
138
good_response = (
137
139
res &&
138
140
res . code == 200 &&
139
- res . headers . include? ( 'Set-Cookie' ) &&
140
141
!res . body . include? ( 'auth_failed' ) &&
141
142
!res . body . include? ( 'Maximum number of users reached.' )
142
143
)
@@ -152,20 +153,23 @@ def login_2(user, pass, epmp_ver)
152
153
)
153
154
154
155
# get the cookie now
155
- sysauth_value_2 = res . headers [ 'Set-Cookie' ] . match ( /((.*)[$ ])/ )
156
- stok_value_2_dirty = res . body . match ( /"stok": "(.*?)"/ )
157
- stok_value_2 = "#{ stok_value_2_dirty } " . split ( '"' ) [ 3 ]
158
- final_cookie = "#{ sysauth_value_2 } " + 'usernameType_80=admin; stok_80=' + "#{ stok_value_2 } "
156
+ cookies = res . get_cookies_parsed
157
+ stok_value_dirty = res . body . match ( /"stok": "(.*?)"/ )
158
+ stok_value = "#{ stok_value_dirty } " . split ( '"' ) [ 3 ]
159
+ sysauth_dirty = cookies . values . select { |v | v . to_s =~ /sysauth_/ } . first . to_s
160
+ sysauth_value = sysauth_dirty . match ( /((.*)[$ ])/ )
161
+
162
+ final_cookie = "#{ sysauth_value } " + 'usernameType_80=admin; stok_80=' + "#{ stok_value } "
159
163
160
164
# create config_uri for different modules
161
- config_uri_dump_config = '/cgi-bin/luci/;stok=' + "#{ stok_value_2 } " + '/admin/config_export?opts=json'
162
- config_uri_reset_pass = '/cgi-bin/luci/;stok=' + "#{ stok_value_2 } " + '/admin/set_param'
163
- config_uri_get_chart = '/cgi-bin/luci/;stok=' + "#{ stok_value_2 } " + '/admin/get_chart'
165
+ config_uri_dump_config = '/cgi-bin/luci/;stok=' + "#{ stok_value } " + '/admin/config_export?opts=json'
166
+ config_uri_reset_pass = '/cgi-bin/luci/;stok=' + "#{ stok_value } " + '/admin/set_param'
167
+ config_uri_get_chart = '/cgi-bin/luci/;stok=' + "#{ stok_value } " + '/admin/get_chart'
164
168
165
169
return final_cookie , config_uri_dump_config , config_uri_reset_pass , config_uri_get_chart
166
170
else
167
171
print_error ( "FAILED LOGIN - #{ rhost } :#{ rport } - #{ user . inspect } :#{ pass . inspect } " )
168
- vprint_status ( 'Either the credentials are incorrect or Maximum number of logged-in users reached.' )
172
+ print_status ( 'Either the credentials are incorrect or Maximum number of logged-in users reached.' )
169
173
final_cookie = 'skip'
170
174
config_uri_dump_config = 'skip'
171
175
config_uri_reset_pass = 'skip'
@@ -193,17 +197,20 @@ def login_1(user, pass, epmp_ver)
193
197
}
194
198
)
195
199
200
+ cookies = res . get_cookies_parsed
201
+ check_sysauth = cookies . values . select { |v | v . to_s =~ /sysauth_/ } . first . to_s
202
+
196
203
good_response = (
197
204
res &&
198
205
res . code == 200 &&
199
- res . headers . include? ( 'Set-Cookie' ) &&
200
- res . headers [ 'Set-Cookie' ] . include? ( 'sysauth' )
206
+ check_sysauth . include? ( 'sysauth' )
201
207
)
202
208
203
209
if good_response
204
- sysauth_value = res . headers [ 'Set-Cookie' ] . match ( /((.*)[$ ])/ )
210
+ sysauth_dirty = cookies . values . select { |v | v . to_s =~ /sysauth_/ } . first . to_s
211
+ sysauth_value = sysauth_dirty . match ( /((.*)[$ ])/ )
205
212
206
- cookie1 = "#{ sysauth_value } ; " + "globalParams=%7B%22dashboard%22%3A%7B%22refresh_rate%22%3A%225%22%7D%2C%22#{ user } %22%3A%7B%22refresh_rate%22%3A%225%22%7D%7D"
213
+ cookie1 = "#{ sysauth_value } " + "globalParams=%7B%22dashboard%22%3A%7B%22refresh_rate%22%3A%225%22%7D%2C%22#{ user } %22%3A%7B%22refresh_rate%22%3A%225%22%7D%7D"
207
214
208
215
res = send_request_cgi (
209
216
{
@@ -223,11 +230,12 @@ def login_1(user, pass, epmp_ver)
223
230
}
224
231
)
225
232
233
+ cookies = res . get_cookies_parsed
234
+
226
235
good_response = (
227
236
res &&
228
237
res . code == 200 &&
229
- res . headers . include? ( 'Set-Cookie' ) &&
230
- res . headers [ 'Set-Cookie' ] . include? ( 'stok=' ) &&
238
+ cookies . has_key? ( 'stok' ) &&
231
239
!res . body . include? ( 'Maximum number of users reached.' )
232
240
)
233
241
@@ -241,11 +249,13 @@ def login_1(user, pass, epmp_ver)
241
249
password : pass
242
250
)
243
251
244
- # get the cookie now
245
- get_stok = res . headers [ 'Set-Cookie' ] . match ( /stok=(.*)/ )
246
- stok_value = get_stok [ 1 ]
247
- sysauth_value = res . headers [ 'Set-Cookie' ] . match ( /((.*)[$ ])/ )
248
- final_cookie = "#{ sysauth_value } ; " + "globalParams=%7B%22dashboard%22%3A%7B%22refresh_rate%22%3A%225%22%7D%2C%22#{ user } %22%3A%7B%22refresh_rate%22%3A%225%22%7D%7D; userType=Installer; usernameType=installer; stok=" + "#{ stok_value } "
252
+ # get the final cookie now
253
+ cookies = res . get_cookies_parsed
254
+ stok_value = cookies . has_key? ( 'stok' ) && cookies [ 'stok' ] . first
255
+ sysauth_dirty = cookies . values . select { |v | v . to_s =~ /sysauth_/ } . first . to_s
256
+ sysauth_value = sysauth_dirty . match ( /((.*)[$ ])/ )
257
+
258
+ final_cookie = "#{ sysauth_value } " + "globalParams=%7B%22dashboard%22%3A%7B%22refresh_rate%22%3A%225%22%7D%2C%22#{ user } %22%3A%7B%22refresh_rate%22%3A%225%22%7D%7D; userType=Installer; usernameType=installer; stok=" + "#{ stok_value } "
249
259
250
260
# create config_uri for different modules
251
261
config_uri_dump_config = '/cgi-bin/luci/;stok=' + "#{ stok_value } " + '/admin/config_export?opts=json'
@@ -256,7 +266,7 @@ def login_1(user, pass, epmp_ver)
256
266
return final_cookie , config_uri_dump_config , config_uri_reset_pass , config_uri_get_chart , config_uri_ping
257
267
else
258
268
print_error ( "FAILED LOGIN - #{ rhost } :#{ rport } - #{ user . inspect } :#{ pass . inspect } " )
259
- vprint_status ( 'Either the credentials are incorrect or Maximum number of logged-in users reached.' )
269
+ print_status ( 'Either the credentials are incorrect or Maximum number of logged-in users reached.' )
260
270
final_cookie = 'skip'
261
271
config_uri_dump_config = 'skip'
262
272
config_uri_reset_pass = 'skip'
0 commit comments