• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Расшифровка hash(скорее всего SHA256)

SomeStrangeUser

New member
15.07.2019
3
0
BIT
0
Всем привет. В свободное время решил сделать бота для браузерной игры( ), на данный момент столкнулся с подписью запроса (sign-code в HEADERS POST запроса). Знаю, что при аутентификации она не меняется уже несколько дней, а это значит, что hash зависит от запроса. Но вот проблема, если я буду хэшировать сам запрос(json), то не получу, что мне надо. В дизассемблирование пока лезть не хочу, пытался, но ничего так и не нашёл нужного. Предположил, что хэш будет строиться с каких-либо HEADERS + запрос + секрет. Принял решение использовать hashcat и, зная какие-то части попробовать расшифровать. Можете подсказать, как такое осуществить? Запрос на 796 символов. Атака по маске? Как эту маску сделать, если я даже не знаю длины? Нужно понять, каким образом создаётся хэш, чтобы потом подписывать свои запросы
Запрос:
Host: pvppru2s00.plrm.zone
Connection: keep-alive
Content-Length: 796
sign-code: 3b89e7f6f0079907d11e67f735fe882a4e6de6d2c2cfac30bdfcab51c42c98a9
Origin:
signin-userId: pp72739242
server-method: SignIn
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36
client-ver: 628
signin-authSeed: ..
X-Requested-With: ShockwaveFlash/23.0.0.162
signin-authKey: ..
locale-name: ru-RU
Content-Type: text/html
client-type: 1
Accept: */*
Referer:
Accept-Encoding: deflate
Accept-Language: en-US,en;q=0.9

{"s":{"m":"sthypercube@gmail.com","x":null,"tg":0,"a":true,"im":false,"ar":null,"gr":null,"p":null,"fl":false,"n":"hermn","vk":{"b":false},"de":null,"s":null,"i":"pp72739242","t":0,"np":false,"u":" ","gci":["[\"117250192.1605711790\"]"],"d":"hermn;null;null;ru_RU;0;;","l":"ru-RU","usi":"un-50254d09-6e29-4465-8c4e-4ba12c43020c"},"f":[""],"i":"0","t":-180,"l":"?clientId=117250192.1605711790","mr":"","c":{"x":3440,"y":1440,"i":5,"mc":"MZbCwfUWUabmyaqkU8QWvYP5/f7ixVegA1YcS8ZHO9BxfxPlbHvFdK1l9S7qpl5TpTIEqfsLLEX0M6FVB4IJbAtYRM44eqdy97Ger2q5PYTXhHr8F/UDq9xPnIMFU3CJJbzVyU1NUcjf/kRxFZlVE5jjZtgZyqUnqUyACWnzv1eUE00p2/AujZXVoAm FAr/au9IyPKFQ2NLKiNbMMIegSd7e2AoixmtxGqQjNXDsPE=","v":"1.0","pht":"2","ht":"Portal Desktop"},"rr":null}
 
Скорее всего там идентификатор пользователя. Пробовал что-то типа sha256(email+pass) или sha256(userid+pass) ?
В hashcat, соответственно, брутить маски email/login + потенциальный разделитель (например . или : или ;) + пароль.
 
Скорее всего там идентификатор пользователя. Пробовал что-то типа sha256(email+pass) или sha256(userid+pass) ?
В hashcat, соответственно, брутить маски email/login + потенциальный разделитель (например . или : или ;) + пароль.
проблема в том, что подпись есть у каждого запроса и что-то мне кажется, что каждый запрос должен строиться по одной схеме.
Твой вариант не подойдёт, потому что при авторизации через бразуер и приложение получаются разные запросы. А там меняется только порядок элементов в json'e
 
Чтобы понять как устроен хэш, нужно вскрывать движок игры,если хэш ни при каких условиях не изменяется,то тогда возможно можно будет сбрутить,но если изменяется - то тогда надо знать соль и ее алгоритм.
"Запрос на 796 символов?" ты собирался брутить 796 символов? или я что-то не понял?
 
Чтобы понять как устроен хэш, нужно вскрывать движок игры,если хэш ни при каких условиях не изменяется,то тогда возможно можно будет сбрутить,но если изменяется - то тогда надо знать соль и ее алгоритм.
"Запрос на 796 символов?" ты собирался брутить 796 символов? или я что-то не понял?
Я знаю исходные данные, брут в таком случае мне показался довольно быстрым(что по факту и было) Генерировал словарь из всех возможных размещений(от 1 до кол-ва данных), пришёл к выводу, что плюсуется код, который можно узнать только если вскрыть движок. За неимением опыта в этом деле решил бросить эту затею.
 
Если кому будет интересно, то sign-code собирается так:
Python:
x = hashlib.sha256(('The Matrix has you...' + запрос + server-method + signin-userId + signin-authKey).encode('utf-8')).hexdigest()
 
А с signin-authSeed и signin-authKey возникли проблемы.

Код:
POST https://pvppru2s01.plrm.zone/GeoPortalRus2/Segment01/segment.ashx HTTP/1.1
Host: pvppru2s01.plrm.zone
Connection: keep-alive
Content-Length: 21
sign-code: 4d44427bd105846ce6731a37fcef2ab17f2fe196a24a700d4cf32ad05ed9ab2d
Origin: https://cdn01.x-plarium.com
signin-session: 20220307120434.20220322081002.563570
signin-userId: pp88600010
server-method: GetMap
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36
client-ver: 646
signin-authSeed: kc03kELQwwJaxTK5NfPId4X996H4Gu+a16YTvMIKwmDMJEaYq1azCq/7lv3CgmBGG0t8vcbXoiy9ZQsx5mhGgHr6y1OKQU2IgvscPOONclk=
X-Requested-With: ShockwaveFlash/50.0.20.402
signin-authKey: 9df573d3ed5e8fbcbd243445483d829220b6032f06cdd7db31c3b4f30bd78496ec9a42ed50377e32f50953eb05791c9e100f9091bebe19a2480b031f0ef65ebf
locale-name: ru-RU
Content-Type: text/html
client-type: 1
Accept: */*
Referer: https://cdn01.x-plarium.com/geo/new_client/prod/ppru/20220302_1443_xuyn0uoabx2.swf
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9

{"b":[{"y":0,"x":0}]}

signin-authKey статичен и при смене почты и пароля не меняется.
signin-authSeed так-же не реагирует на смену почты/пароля, но не статичный. За несколько дней получил у одного аккаунта такие варианты:
Код:
kc03kELQwwJaxTK5NfPId2EE9E0hBCeBwvospK06TBMNOGIYuuxcKfzL3e+7KAjIIr+9xJRSBzq+75Mx2+rM/H+vJ8LnelYZykcp63voahY=
kc03kELQwwJaxTK5NfPId2eB5a9MXcl5lA9ULroAIdVJvHnrTFFCG4qQgzxBn19G0OsRPT0bFoOUF0s2IMh498sW+FNNcCP0NpRqzu5Ga3w=
kc03kELQwwJaxTK5NfPId4X996H4Gu+a16YTvMIKwmDMJEaYq1azCq/7lv3CgmBGG0t8vcbXoiy9ZQsx5mhGgHr6y1OKQU2IgvscPOONclk=
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!