Расшифровать хеш вконтакте, 10 000 WMR

Discussion in 'Криптография, расшифровка хешей' started by Kairos, 27 Feb 2011.

  1. Kairos

    Kairos Elder - Старейшина

    Joined:
    5 Oct 2009
    Messages:
    37
    Likes Received:
    21
    Reputations:
    21
    Сейчас на ВКонтакте почти все запросы используют хеш. Например для отправки поста на стену используется запрос:
    GET http://vkontakte.ru/al_wall.php?act=post&al=1&hash=15442801d1e3581229&message=test&to_id=39343970&type=all​
    Хеш всегда располагается на странице с которой идет запрос. Скорее всего он зависит от id пользователя и фиксированных параметров запроса, в данном случае это act, to_id и, возможно, имя скрипта al_wall.
    Длина хеша небольшая и, учитывая что его разрабатывали весьма умные люди, расшифровка должна оказаться довольно интересной задачей.

    Тому, кто сможет предоставить способ, как сформировать хеш из параметров запроса - приз 10 000 WMR
    Условие - найденный способ сообщается только мне. Приз достается только первому разгадавшему хеш.
     
    #1 Kairos, 27 Feb 2011
    Last edited: 27 Feb 2011
  2. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,803
    Likes Received:
    1,957
    Reputations:
    594
    Точно выяснить от каких параметров зависит возможно? (ну меняя их и смотреть есть ли изменения хэша).
     
  3. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    487
    Likes Received:
    184
    Reputations:
    5
    нужно отправить через браузер сообщение
    просниферить его
    посмотреть какой ХЭШ был сгенерирован
    и после получить хэш подстановкой
    может это ХЭШ сообщения
    может ХЭШ ID
    а может и того и того
    попробывать все параметры , которыми обладает акк
     
  4. Kairos

    Kairos Elder - Старейшина

    Joined:
    5 Oct 2009
    Messages:
    37
    Likes Received:
    21
    Reputations:
    21
    Хеш генерируется на странице с которой происходит запрос. Например я хочу написать что-то на своей стене. Я открываю страницу своего профиля и там будет хеш
    "post_hash":"15442801d1e3581229"​
    Соответственно он точно не зависит от параметров сообщения, которое я собираюсь написать. А вот если я захочу написать на чьей-то еще стене или вступить в какую-то группу, то хеш будет уже другой. Различные хеши можно собрать полазив немного по контакту. Проще всего это сделать если установить сниффер (я использую fiddler) и посмотреть какие запросы отправляются при различных действиях.
     
  5. Kairos

    Kairos Elder - Старейшина

    Joined:
    5 Oct 2009
    Messages:
    37
    Likes Received:
    21
    Reputations:
    21
    Для примера попробовал менять один параметр - to_id, вот получившиеся хеши
    Code:
    hash=a6eb75dad29b8b3ce0 to_id=32999851
    hash=a8e80dfe317cf6204e to_id=54491076
    hash=c6c5d9a7dbb38a5acc to_id=54060978
    hash=006a7352940e14aab8 to_id=66934623
    hash=c4c6bff8050a94160c to_id=44319831
    hash=91d4bc3078d8412ab9 to_id=57644554
    hash=f97b3039159ae7c0ae to_id=125405468
    hash=75635864c576471324 to_id=56506598
    hash=79c364afb7b050e6b9 to_id=126964473
    hash=a1b9fe092aa9912810 to_id=126929622
    hash=6dbb25cfefef18a9e8 to_id=57128915
    Если нужно могу собрать пару сотен таких, и еще могу собрать варианты хешей для постинга на стену от разных пользователей (изменять только параметр user_id)
     
    #5 Kairos, 27 Feb 2011
    Last edited: 27 Feb 2011
  6. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Kairos

    /showpost.php?p=1802794&postcount=9
    /showpost.php?p=1802911&postcount=10

    Где входной параметр это post_hash со страницы.
     
    _________________________
  7. immortalist

    immortalist Member

    Joined:
    16 Jan 2010
    Messages:
    99
    Likes Received:
    64
    Reputations:
    37
    Читай внимательнее: Тому, кто сможет предоставить способ, как сформировать хеш из параметров запроса
     
  8. Kairos

    Kairos Elder - Старейшина

    Joined:
    5 Oct 2009
    Messages:
    37
    Likes Received:
    21
    Reputations:
    21
    Сейчас почти для всех действий post_hash такой же как и тот что в запросе отправляется, его не нужно расшифровывать.
     
  9. ErrorNeo

    ErrorNeo Elder - Старейшина

    Joined:
    2 May 2009
    Messages:
    923
    Likes Received:
    836
    Reputations:
    402
    ну и еще как только тут будет написано, что метод обнаружен - умные люди этот метод сменят. Умные люди ведь тоже читают наш форум. :)

    не забывай об этом, %username% >_<
     
  10. N@b$ter

    N@b$ter Elder - Старейшина

    Joined:
    6 Oct 2009
    Messages:
    290
    Likes Received:
    70
    Reputations:
    21
    Если честно такое чувство что это обрезанные md5, но так и не понял как их мона сбрутить :D
     
  11. eXtreX

    eXtreX Member

    Joined:
    27 Aug 2009
    Messages:
    64
    Likes Received:
    5
    Reputations:
    0
    мне в начали показалось что это не md5...пытался найти зависимость между самими значениями и id/
    hash=a6eb75dad29b8b3ce0 to_id=32999851
    6-75-29-8-3-0===32-99-98-51
    13-7-17-3===5-18-17-6
    20-20===23=23

    А это не может быть обрезанный md5,продолжение которого зашифровано в самом обрезанном md5?)))
     
  12. N@b$ter

    N@b$ter Elder - Старейшина

    Joined:
    6 Oct 2009
    Messages:
    290
    Likes Received:
    70
    Reputations:
    21
    ну я думаю что это всё таки обрезанный md5, но там скорее всего вложено что-то типа md5(username.id.и мб ещё пасс) так что сбрутить такой будет практический не реально
    и ещё попробуй меня на 1 акке пасс, айпи и т.д. что бы примерно знать как хэш образуется
     
    #12 N@b$ter, 1 Mar 2011
    Last edited: 1 Mar 2011
  13. Kairos

    Kairos Elder - Старейшина

    Joined:
    5 Oct 2009
    Messages:
    37
    Likes Received:
    21
    Reputations:
    21
    Хеш может встречаться в самых разных местах, не только при постинге на стену. А т.к. в разных местах разные наборы параметров, то я практически уверен что хеш вычисляется от склейки всех значимых переменных и (возможно) их имен, ну и плюс соль. В случае с постингом на стену, параметры запроса, которые могут участвовать в формировании хеша, это: act=post и to_id=<id>. Параметры сообщения (текст) точно влиять не может, выше я писал почему. type=all не обязательный, поэтому тоже не влияет. al=1 обязательный, но если его изменить на al=5 сообщение отправляется, значит в хеше он не участвует, иначе была бы ошибка безопасности. Остаются всего 2 параметра + параметры не зависящие от выполняемого действия, например id пользователя и соль. Скорее всего кроме названного в хеше больше ничего и нет.

    Теперь нужно как-то попытаться найти функцию, которая из названных параметров сделает хеш. Здесь могу посоветовать обратить внимание на то, как генерируются подписи запросов для приложений вконтакте. Скорее всего эти подписи генерируются почти так-же: sig = md5(viewer_idname1=value1name2=value2secret)

    Только в отличие подписи для API здесь после формирования хеша применяется еще какая-то функция. Могу предположить что она похожа на функцию DecodeHash, которая раньше преобразовывала хеш перед отправкой запроса. Конкретный вид ее можно узнать воспользовавшись поиском. Вкратце - она состояла из разрезания, склеивание и обращения строки с хешом.
     
    #13 Kairos, 5 Mar 2011
    Last edited: 5 Mar 2011
  14. #Smith

    #Smith New Member

    Joined:
    20 Jun 2010
    Messages:
    97
    Likes Received:
    2
    Reputations:
    0
    Всё это канешн очень интересно, но похоже, ребята, вы маетесь хернёй.

    Мотивирую:
    Я надеюсь, всё знают, что такое AUTH_KEY для приложений и как он формируется?
    Проведём аналогию:
    Допустим, твои хеши - это обрезаные md5 длиной 18 симв (хотя на VK работают довольно неглупые люди, которые запросто смогли бы придумать свой хеширующий алгоритм, ну да ладно...).
    Допустим, хеш получается по принципу: substr(md5($uid . '_' . $post_id . '_' . $secret), 0, 18);
    Параметр $secret находится в базе VK.
    Пусть даже он один (хотя, что мешает для каждого пользователя сгенерить некий случайный ключ длиной, ну скажем, 10 символов).
    Даже, если я сейчас попал пальцем в небо.
    Алгоритм вточности такой, как я описал.
    Подумай, сколько лет ты будишь брутить?
    А если $secret не 10 символов а 20 и для каждого пользователя он свой?
    Смысл ещё видишь?


    И напоследок:
    Смысл всего этого?
    Я понимаю, когда люди проектируют сложные системы AI, когда создаются целые програмные комплексы для решения серьёзных задач, наконец, я даже пойму, когда люди пытались придумать алгоритм для обхода или распознания капчи на том же VK.
    Но какой смысл в этих хешах?
    Ну кто мешает заранее отпраить запрос, пропарсить его, вытянуть хеш и дальше делать то, что ты хочешь делать?
     
    #14 #Smith, 19 Mar 2011
    Last edited: 19 Mar 2011
  15. Kairos

    Kairos Elder - Старейшина

    Joined:
    5 Oct 2009
    Messages:
    37
    Likes Received:
    21
    Reputations:
    21
    Я тоже подозреваю что хеш так устроен, но вдруг кто-нибудь сможет сделать.
    А смысл вот какой. Хеши хранятся обычно на страницах, которые нельзя загружать более 1 раза в секунду. А запросы с хешом можно отправлять без ограничений. Пример использования - сделать акк, который будет в подписках у всего контакта.