@genericname1
Does this happen specifically when copying something inside BAS? In the script panel where the actions are or from the browser?
What version of BAS are you using?
Please record a video demonstrating the problem so that we can understand what is happening.
Как хешировать password_type 4 средствами BAS
-
Здравствуйте, подскажите кто сталкивался, как решить такую задачу средствами BAS?
За верное решение подкину монет. Заранее спасибо.private function login(){ if($this->password_type == '4') { $password = base64_encode(hash('sha256', $this->username . base64_encode(hash('sha256', $this->password)) . $this->TokInfo)); } else { $password = base64_encode($this->password); }` -
@HustleMan said in Как хешировать password_type 4 средствами BAS:
Здравствуйте, подскажите кто сталкивался, как решить такую задачу средствами BAS?
За верное решение подкину монет. Заранее спасибо.Используйте действие "Контрольная сумма строки" из модуля "Контрольная сумма"

-
@Fox благодарю за ответ, пробовал, не могу сообразить последовательность. В снифере длинная строка получается, а у меня короткая
psd = "admin" psd = b64(sha256(psd)) psd = "admin" + psd + token psd = b64(sha256(psd))и в снифере явно кодировка не base64
-
@Fox вот такой хеш должен выйти
290d60b713098096ae8d4018f609c403b145c71165dedd9ed392ba245a6036ae712d15f81c3ac348d1801781783b995f4b8c96b72e7f9397fa8176510e37c72f036222c9ce09a79b1744b51ecf542844fc454443f4fcffe6cb32bbf3cbbb3e6f160aa74af3a1a6af036210e4cd36a601003a9a2e8d549523c94a84a74f4e8a437f75bc8697efa7a726ad95e4258a8919a7a67b0efe4a7ac5a9c2e68cab16e1b397c90d238dbe99815d1a748490d013028cf8a6d94cec22d22b6fe3a7e16235de89de5a5c8f2f8f924cef25faa07240b080d06bbfe95ab42431dfa58334ec7fceb8709c9b966288e6a1cc95da49ff606edf06f8c82cbb679f6689cf6584805f9d09584132f29367f88f22ebd45055aecee464292598dfd927299bc107e2894e656438f6b097ed071a1ac56e5c26f48074aa6652386fe700bc4509edc098619174cdd1c87607f1431ebd3abf1884eff4dae793cc9ced6dbab6c0ef7bf795d2ee446e3bdef865830745dc02cbd968ab353059aec62ace8e32a562ab4b2c038ffe3140bb284877a84d9a6ee5fdf06fbd9835da6e8f21c8527a309b8c831adbd9f1b58d53e3be8bb14f27fcc2bad0d76e34f5a019d19915a95458e7027400240a37f3be7512b661791308d04e65841c31e75501800e34276f3911e5f76ccb458dc5b8b0930d3ea1b8fb7a35f99f59267644c2c2f2c9d9871ba3696231aa94a113534f -
@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