@Denis0309 https://2captcha.com/ru/demo/geetest
Посмотрите тут - оно?
@HustleMan said in Как хешировать password_type 4 средствами BAS:
@Fox благодарю за ответ, пробовал, не могу сообразить последовательность. В снифере длинная строка получается, а у меня короткая
psd = "admin" psd = b64(sha256(psd)) psd = "admin" + psd + token psd = b64(sha256(psd))и в снифере явно кодировка не base64
В таком случае смотрите код данных функций на сайте или хотя бы приложите значения переменных "username", "password", "TokInfo"
@Fox Это веб морда модема Huawei E8372h-153
Проблема с авторизацией, не могу никак побороть из-за этой беды
Если получиться разгадать хеш выложу шаб с функционалом отправки смс для данного модема
Дано:
username = admin
password = adminadmin
token = dSKEGHkAHQKVFgDNBOfKIwaDXi4+RvZc
password = "adminadmin"
password = sha256(password)
password = b64(password)
password = "admin" + password + token
password = sha256(password)
password = b64(password)
Итог:
3f1489ff1a632ab7fc31e7d1b899c5946eb6fa3ee8b6b86e53bfcac88ffc7227dc832f76e71fe38261673f310d2da3a42318fd32eaba43bd4e0ec96e33dbd0bcad25c771260a8dd1ae45828846660c17e1986f4d12313fd11e160175b45f8adc3eb804f6b84feacd1758dc26762e2e4d57d6d39b845f8415fd302cdcfd5e2ee0631c843c35c76e1766c91bb9369c6705d1cb3a6a1f5f85e8b641b694681c10f863c15fe0c9a231e1e2e18277d93828ff80bf3d62a0b4a340b987c042bf098eb700c00d1d224da3a97e9d77f7b0a34d81481aaf17644aac1bd870af70a23150109148137fc9c1122463561f8df9e34016eb874887a4b34f15ad2bea684b233dd61422094df08437a0064387d2acb7d64b61a0010d917d65c19131b8f9612530f84d6b2e98dd13a4f9a981b04632aa913118a953b4d11a9b51f9bbc733949a925d6dae198ade5b651a881452caf85777a0d5c36473201881417d37674cf4e9671b9390c363bdee9cf2566c8786c6263f1d98f53d96fb177357c67eaa19fbff9302d33c29318ac7e0e2d5afecc99bcc8ddc5d835a5c276d77d8f1e2e7bcc07f6805d336a60e06b4dcf3ef8f195787a66bf7da99db77671f7163e2a6b68d7ec2fe4cbc94e32553fcddc92251b521233e679d852aeb035e6deb540c5de75e4122e4e0bff2424e19dc36ea310a26f10e91a89e180a153db53506f9c64c9fc638867555
@HustleMan said in Как хешировать password_type 4 средствами BAS:
@Fox Это веб морда модема Huawei E8372h-153
Проблема с авторизацией, не могу никак побороть из-за этой беды
Обратите внимание на последние две строки кода:
password = sha256(password)
password = b64(password)
Предыдущие преобразования данных неважны, так как функция sha256() получает хеш фиксированной длины в 64 символа:

Преобразование 64 символов в base64 ни как не превратит их в 1024 символа. Смотрите код формирования токена более внимательнее
@Fox нашел запрос который отдает чет похожее: http://192.168.8.1/api/webserver/publickey
<?xml version="1.0" encoding="UTF-8"?>
<response>
<encpubkeyn>afe8cd6241e06477736584e66df85dfd4b2baf45c443267c87a2fbf987e174bf607ef1cfa6027400ece641436b333debcf5e7a5cfb3670e86b30add0b739c92cd8829892dd51a15b16176abf9a265141ca51b5bfd8fbc953ab40f7c0694747dd2a1265c2a7c5da0a56d8d068205de521825ca6f0f702ed4d6b520cee5f48b8a0858c8a2bbc80ea17f6ab81fa7e3d3dcb69ffcd05cd23f57bec12442763f726f5b8b9928131f890f821b310d4c6307d860fea419edba188fbe3d09a4d668cbd473abd68be269f39a30424c6bde5f15ceeabc7953dce76447e20839249840be3b85e41436a9e8ee8f2f3296bd645fd6f131f64f3c101cfb2fddeba3fc7f58f967f</encpubkeyn>
<encpubkeye>010001</encpubkeye>
</response>
@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