Как хешировать password_type 4 средствами BAS
-
@Fox если это поможет
VerificationToken: Ng+eeWAmJV6JFIb+ls4yjwXZKblG5zvn name = admin password = adminadminКонечный результат:
37b3c1697b91968c306a64ad9b89a93889e7bc8571f790b33dca6e78d62642e477364473dec964c331635ee115ba2fc019f9df5cd37dd4f03228117737f7ef6231b831c04dbab9ffb5197f87518b142cbe9d42f7ab8f5001398c50fa97818a9d984095946cfdb9b97937cde87a2122f1c10aad4e387395c93201df0ac68bd67dae43a5a36ade1e1c0a6c159f558ca5c3d1fd83142de5dedda1217b175d6050f182f831a4ef0f6bfc18ec02e481867a31420569814fbab640bb0b327c4464af35e83ce44358f94a6e6632af898aebcc231362d997de89c04629a7594da679eaa3f4bacf1fb0c2c7f195db659d665940afbea878c925256302f3655c1000cb5890a164dab2c5c82f2b06e01a6b3d9fa85a297cb95c96636c6ddbae0c4c3bb7877b3b4eb4eab3f3fb9f39be627804f62e13c913635c323e89dd831b9065b469db8dce0f90ef0139d33111683a129cd1fc1ea5370b0bd5b6051045671b8a8309d3d60ad8655e1070e89014f5f4bf7d06339f56a269aa621b612e6aa9c0fdb5b4d76db76e498fc369d1773a3c6eb647d16ce8b69b11e705bcd5b38a1f094e7d37de4b2b742aeaa265967d30c0fafa49041fb2646b7a737df62da40b5566a8b07d3387ba0245119c3f5b469b5383eda9fdc3fb70630458e3e19cbd14e3cd265886197348d6380f10d9066b703dc3e6f7139f00f0ca17deaeefa7dd36e6810d8fec579e -
import base64 import binascii import hashlib import json import huaweisms.api.webserver from huaweisms.api.common import ApiCtx, common_headers, get_from_url, post_to_url def b64_sha256(data): # type: (str) -> str s256 = hashlib.sha256() s256.update(data.encode("utf-8")) dg = s256.digest() hs256 = binascii.hexlify(dg) return base64.urlsafe_b64encode(hs256).decode("utf-8", "ignore") def quick_login(username, password, modem_host=None, uri_scheme="http", verify=True): # type: (str, str, str, str, bool) -> ... ctx = ApiCtx(modem_host=modem_host, uri_scheme=uri_scheme, verify=verify) token = huaweisms.api.webserver.get_session_token_info(ctx) session_token = token["response"]["SesInfo"].split("=") ctx.session_id = session_token[1] if len(session_token) > 1 else session_token[0] ctx.login_token = token["response"]["TokInfo"] response = login(ctx, username, password) if not ctx.logged_in: raise ValueError(json.dumps(response)) return ctx def login(ctx, user_name, password): # type: (ApiCtx, str, str) -> ... headers = common_headers() url = "{}/user/login".format(ctx.api_base_url) password_value = b64_sha256(user_name + b64_sha256(password) + ctx.login_token) xml_data = """ <?xml version:"1.0" encoding="UTF-8"?> <request> <Username>{}</Username> <Password>{}</Password> <password_type>4</password_type> </request> """.format( user_name, password_value ) # setup headers headers["__RequestVerificationToken"] = ctx.login_token headers["X-Requested-With"] = "XMLHttpRequest" r = post_to_url(url, xml_data, ctx, headers) if r["type"] == "response" and r["response"] == "OK": ctx.logged_in = True return r def state_login(ctx): # type: (ApiCtx) -> ... url = "{}/user/state-login".format(ctx.api_base_url) return get_from_url(url, ctx)что то как то так там (это питон)
ковыряй https://pypi.org/project/huawei-modem-api-client/#description -
@HustleMan said in Как хешировать password_type 4 средствами BAS:
@Fox походу не мой уровень(
https://stackoverflow-com.translate.goog/questions/60422836/c-sharp-encrypt-string-to-rsa-based-on-public-key-huawei-e8372?_x_tr_sl=en&_x_tr_tl=ru&_x_tr_hl=ru&_x_tr_pto=nui,scА вы искали готовые библиотеки на node js? Первые ссылки в выдаче на npm:
https://www.npmjs.com/package/hilink-nodejs-sms
https://www.npmjs.com/package/hilinkhuawei
https://www.npmjs.com/package/hilink-modem
https://www.npmjs.com/package/sms-forward
https://www.npmjs.com/package/huawei-lte-api -
@HustleMan said in Как хешировать password_type 4 средствами BAS:
@Fox Не искал, но эти не подойдут
Я бы на вашем месте посмотрел подключаемые библиотеки на сайте и просто использовал их готовый код. Для этого можете посмотреть вкладку source в фаербаге, или сохранить страницу ctrl+s и посмотреть какие файлы лежат в папке с сохранённой страницей
-
@HustleMan said in Как хешировать password_type 4 средствами BAS:
@Fox короче сделаю авторизацию через веб интерфейс, а смс уже через api. Может у кого-то потом появиться решение, потому велком в топик
Что бы у кого то появилось решение вы бы загрузили сюда архив с сохранённой страницей (со всеми файлами скриптов внутри). Ну и контрольные данные на входе и выходе для проверки
-
@Fox Задача решена.
Те кракозябры на самом деле являлись хешированным xml запросом.

Вот так собственно он выглядит.

Тему можно закрывать.
Вот рабочий скрипт авторизации для модема Huawei e8372h-153
Версия ПО: 21.328.03.00.00
Версия веб-интерфейса: 17.100.18.03.143-Mod1.21
authorization_huawei_E8372H-153.xml