79 lines
1.6 KiB
Python
79 lines
1.6 KiB
Python
|
|
|
|
import base64
|
|
import os
|
|
import sys
|
|
|
|
import requests
|
|
|
|
|
|
def encrypt_password(password: str, key_word: str) -> str:
|
|
from Crypto.Cipher import AES
|
|
|
|
key = key_word.encode('utf-8')
|
|
iv = key
|
|
cypher = AES.new(key, AES.MODE_CFB, iv=iv, segment_size=128)
|
|
ciphertext = cypher.encrypt(password.encode('utf-8'))
|
|
return base64.b64encode(ciphertext).decode('utf-8')
|
|
|
|
|
|
def build_basic_auth(client: str) -> str:
|
|
b64 = base64.b64encode(client.encode('utf-8')).decode('utf-8')
|
|
return f'Basic {b64}'
|
|
|
|
|
|
def get_token(base_url: str, username: str, password: str) -> dict:
|
|
enc_key = 'hongxyundapp2025'
|
|
oauth_client = 'hongxapp:hongxplapp'
|
|
|
|
enc_password = encrypt_password(password, enc_key)
|
|
print(enc_password)
|
|
url = f"{base_url.rstrip('/')}/auth/oauth2/token"
|
|
params = {
|
|
'username': username,
|
|
'randomStr': 'clickWord',
|
|
'code': '',
|
|
'grant_type': 'password',
|
|
'scope': 'server',
|
|
}
|
|
data = {
|
|
'password': enc_password,
|
|
}
|
|
|
|
resp = requests.post(
|
|
url,
|
|
params=params,
|
|
data=data,
|
|
headers={
|
|
'Authorization': build_basic_auth(oauth_client),
|
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|
'Enc-Flag': 'false',
|
|
},
|
|
timeout=30,
|
|
)
|
|
|
|
resp.raise_for_status()
|
|
return resp.json()
|
|
|
|
|
|
def main() -> int:
|
|
base_url ='http://192.168.0.209:9999'
|
|
username ='admin'
|
|
password ='123456'
|
|
|
|
try:
|
|
res = get_token(base_url, username, password)
|
|
print(res)
|
|
access_token = res.get('access_token')
|
|
if access_token:
|
|
print('\nACCESS_TOKEN=')
|
|
print(access_token)
|
|
return 0
|
|
except Exception as e:
|
|
print(str(e), file=sys.stderr)
|
|
return 1
|
|
|
|
|
|
if __name__ == '__main__':
|
|
raise SystemExit(main())
|