@ax333l

Как расшифровать капчу sha1 hash?

Есть frontend приложение, которое отправляет POST запрос на backend защищая его sha1 хэшом с помощью npm модуля object-hash. На backend'e уже проверяется корректность капчи. Капча генерируется на фронте и отправляется вместе с запросом. Пример:
{
  "operationName": "promocode",
  "variables": {
    "code": "hello",
    "captcha": "a9c761a0be87d0e96d9203887725f1ac0f2acddf"
  },
  "query": "mutation promocode($code: String!, $captcha: String!) {\n  promocode(code: $code, captcha: $captcha) {\n    error\n    message\n    __typename\n  }\n}\n"
}

Возможно ли как-то узнать строку с которой генерируется хэш, если на 99% гарантируется, что строка состоит исключительно из элементов этого запроса(куки и другие данные запроса никак не влияют на генерацию капчи) и в строке точно содержится сам code, так как капча изменяется с другим кодом. Так же может возможно декомпилировать apk и там окажется код генерации капчи?
  • Вопрос задан
  • 684 просмотра
Решения вопроса 1
15432
@15432
Системный программист ^_^
для начала точно определите, с чего генерируется хеш-сумма, получите примеры этих данных. в идеале - в отладчике.
как только вы получите примеры хешируемых данных, определите изменяемую часть. допустим, изменяется только 6 символов, сама captcha - в этом случае перебор данных возможен и не займет много времени. но если, к примеру, в этих данных содержится случайный идентификатор символов на 16, перебор чрезвычайно усложняется и подбор становится невозможным в разумное время
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev
software engineer
никак.
Хеширование это не шифрование. Это односторонняя операция со сжатием, то есть с потерей информации.
По хешу восстановить изначальную строку невозможно.
При наличии алгоритма хеширования, можно попробовать перебрать разные строки, чтобы найти какие из них сгенерят такой же хеш. Но из-за коллизий, это не дает возможности гарантировано сказать какая именно строка была изначальной.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы