-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathzscaler_otp.ps1
91 lines (66 loc) · 2.24 KB
/
zscaler_otp.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# Script zscaler_otp.ps1
# Used for obtaining On Time Password to disable zscaler
# Version: 1.2
param ([string]
[Parameter(Mandatory=$true)][string]$Usager
)
$user = $Usager
$apiKEY = "YOUR API KEY"
$apiSecret = "YOUR API SECRET"
$apiURL = https://api-mobile.zscalerthree.net/papi
$apiEPlogin = "/auth/v1/login"
$apiEPdev = "/public/v1/getDevices"
$apiEPotp = "/public/v1/getOtp"
$loginPayload = @{
apiKey = $apiKEY
secretKey = $apiSecret
}
# Do Login
$url = $apiURL + $apiEPlogin
$loginPayloadJson = $loginPayload | ConvertTo-Json
try {
$login_response = Invoke-RestMethod -Method 'Post' -Uri $url -ContentType 'application/json' -Body $loginPayloadJson
} catch {
throw ("Error: " + $_)
}
$headers = @{
'auth-token' = $login_response.jwtToken
}
# Do Get Devices List
$url = $apiURL + $apiEPdev + "?username=" + $user
try {
$device_response = Invoke-RestMethod -Method 'Get' -Uri $url -Headers $headers
} catch {
throw ("Error: " + $_)
}
# Do Get OTP
if ( $device_response.Length -gt 1 ) {
for ($id = 0; $id -lt $device_response.Length; $id++) {
$url = $apiURL + $apiEPotp + "?udid=" + $device_response.udid[$id]
try {
$otp_response = Invoke-RestMethod -Method 'Get' -Uri $url -Headers $headers
} catch {
throw ("Error: " + $_)
}
if ( [string]::IsNullOrWhitespace($otp_response.otp) ) {
$otp_pass = $otp_response.ziaDisableOtp
} else {
$otp_pass = $otp_response.otp
}
Write-Host "OTP for" $device_response.machineHostname[$id] "Version:" $device_response.agentVersion[$id] "User:" $user "is: " $otp_pass
#$otp_pass = ''
}
} else {
$url = $apiURL + $apiEPotp + "?udid=" + $device_response.udid
try {
$otp_response = Invoke-RestMethod -Method 'Get' -Uri $url -Headers $headers
} catch {
throw ("Error: " + $_)
}
if ( [string]::IsNullOrWhitespace($otp_response.otp) ) {
$otp_pass = $otp_response.ziaDisableOtp
} else {
$otp_pass = $otp_response.otp
}
Write-Host "OTP for" $device_response.machineHostname "Version:" $device_response.agentVersion "User:" $user "is: " $otp_pass
}