Сейчас на ВКонтакте почти все запросы используют хеш. Например для отправки поста на стену используется запрос: 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 Условие - найденный способ сообщается только мне. Приз достается только первому разгадавшему хеш.
Точно выяснить от каких параметров зависит возможно? (ну меняя их и смотреть есть ли изменения хэша).
нужно отправить через браузер сообщение просниферить его посмотреть какой ХЭШ был сгенерирован и после получить хэш подстановкой может это ХЭШ сообщения может ХЭШ ID а может и того и того попробывать все параметры , которыми обладает акк
Хеш генерируется на странице с которой происходит запрос. Например я хочу написать что-то на своей стене. Я открываю страницу своего профиля и там будет хеш "post_hash":"15442801d1e3581229"Соответственно он точно не зависит от параметров сообщения, которое я собираюсь написать. А вот если я захочу написать на чьей-то еще стене или вступить в какую-то группу, то хеш будет уже другой. Различные хеши можно собрать полазив немного по контакту. Проще всего это сделать если установить сниффер (я использую fiddler) и посмотреть какие запросы отправляются при различных действиях.
Для примера попробовал менять один параметр - 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)
Kairos /showpost.php?p=1802794&postcount=9 /showpost.php?p=1802911&postcount=10 Где входной параметр это post_hash со страницы.
Сейчас почти для всех действий post_hash такой же как и тот что в запросе отправляется, его не нужно расшифровывать.
ну и еще как только тут будет написано, что метод обнаружен - умные люди этот метод сменят. Умные люди ведь тоже читают наш форум. не забывай об этом, %username% >_<
мне в начали показалось что это не 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?)))
ну я думаю что это всё таки обрезанный md5, но там скорее всего вложено что-то типа md5(username.id.и мб ещё пасс) так что сбрутить такой будет практический не реально и ещё попробуй меня на 1 акке пасс, айпи и т.д. что бы примерно знать как хэш образуется
Хеш может встречаться в самых разных местах, не только при постинге на стену. А т.к. в разных местах разные наборы параметров, то я практически уверен что хеш вычисляется от склейки всех значимых переменных и (возможно) их имен, ну и плюс соль. В случае с постингом на стену, параметры запроса, которые могут участвовать в формировании хеша, это: act=post и to_id=<id>. Параметры сообщения (текст) точно влиять не может, выше я писал почему. type=all не обязательный, поэтому тоже не влияет. al=1 обязательный, но если его изменить на al=5 сообщение отправляется, значит в хеше он не участвует, иначе была бы ошибка безопасности. Остаются всего 2 параметра + параметры не зависящие от выполняемого действия, например id пользователя и соль. Скорее всего кроме названного в хеше больше ничего и нет. Теперь нужно как-то попытаться найти функцию, которая из названных параметров сделает хеш. Здесь могу посоветовать обратить внимание на то, как генерируются подписи запросов для приложений вконтакте. Скорее всего эти подписи генерируются почти так-же: sig = md5(viewer_idname1=value1name2=value2secret) Только в отличие подписи для API здесь после формирования хеша применяется еще какая-то функция. Могу предположить что она похожа на функцию DecodeHash, которая раньше преобразовывала хеш перед отправкой запроса. Конкретный вид ее можно узнать воспользовавшись поиском. Вкратце - она состояла из разрезания, склеивание и обращения строки с хешом.
Всё это канешн очень интересно, но похоже, ребята, вы маетесь хернёй. Мотивирую: Я надеюсь, всё знают, что такое AUTH_KEY для приложений и как он формируется? Проведём аналогию: Допустим, твои хеши - это обрезаные md5 длиной 18 симв (хотя на VK работают довольно неглупые люди, которые запросто смогли бы придумать свой хеширующий алгоритм, ну да ладно...). Допустим, хеш получается по принципу: substr(md5($uid . '_' . $post_id . '_' . $secret), 0, 18); Параметр $secret находится в базе VK. Пусть даже он один (хотя, что мешает для каждого пользователя сгенерить некий случайный ключ длиной, ну скажем, 10 символов). Даже, если я сейчас попал пальцем в небо. Алгоритм вточности такой, как я описал. Подумай, сколько лет ты будишь брутить? А если $secret не 10 символов а 20 и для каждого пользователя он свой? Смысл ещё видишь? И напоследок: Смысл всего этого? Я понимаю, когда люди проектируют сложные системы AI, когда создаются целые програмные комплексы для решения серьёзных задач, наконец, я даже пойму, когда люди пытались придумать алгоритм для обхода или распознания капчи на том же VK. Но какой смысл в этих хешах? Ну кто мешает заранее отпраить запрос, пропарсить его, вытянуть хеш и дальше делать то, что ты хочешь делать?
Я тоже подозреваю что хеш так устроен, но вдруг кто-нибудь сможет сделать. А смысл вот какой. Хеши хранятся обычно на страницах, которые нельзя загружать более 1 раза в секунду. А запросы с хешом можно отправлять без ограничений. Пример использования - сделать акк, который будет в подписках у всего контакта.