Здравствуйте уважаемые ачатовцы,сейчас актуальный вопрос о новых куках вконтакте,видел не одну тему где выясняли и спорили насчёт них,вот хочу рассказать об своих экспериментах с ними и чтобы не создавались новые темы по этому поводу. Всем известно что после 13.09.09 теперь в куках храниться только remixsid,но и в нём то не без хитрости,я посидел и пробивал разные способы входа по ним,вот такие неутешительные результаты с моих тестов: Скажу сразу,remixsid имеет привязку к вашему IP,но и не только к нему,и эта привязка скорее для удобства а не для зашиты,прочтя дальше мои тесты и выводы Вы в этом убедитесь. Я пробовал сменять IP,но не железо,а именно IP...Делал так: 1.Логинюсь вконтакте. 2.Включаю прокси,который маскирует мой IP. 3.Жму F5 (обновляю страницу). После этих действий идут запросы между вашим компьютером и вконтакте,а именно: 1.GET запрос к http://login.vk.com/?vk= В ответ получает это: HTML: <html><head><meta http-equiv='content-type' content='text/html; charset=windows-1251' /></head><body onload="document.getElementById('l').submit();"><form id='l' method='post' action='http://vkontakte.ru/login.php?op=slogin'><input type='hidden' name='s' id='s' value='17b1bfber144d30b13d2557c29c141fd61f1e2843e95ed11f396efa5'></form></body></html> Тут мы видим,что в ответ нам прислали уже новый remixsid для передачи со страницы... 2.POST запрос к http://vkontakte.ru/login.php?op=slogin с данными,переданными нам в первом шаге,а именно 17b1bfber144d30b13d2557c29c141fd61f1e2843e95ed11f396efa5 и в ответ получаем это: HTML: <html></html> и записывается в куки новый remixsid,а именно 56fdc0ecf38774088cac86d5c1be1514ee0828428264217e34d061e0 3.Потом шлётся POST запрос уже к вашей странице,с вашим ID в конце,а в нашем случае к http://vkontakte.ru/id1234 В запросе указаны такие данные: id: 1234 IP_ADDRESS: 10.0.13.3 request_method: get pda : и в ответ получаем уже нашу собственную страницу вконтакте,на которой мы и были. Это мы разобрали какие действия контакт производит после смены IP на одном и том же компе,теперь рассмотрим случай который нам более интересен,заберём куки с чужого компа и вставим себе. Теперь выполняем эти действия: 1.Логинимся на другом компе. 2.Берём получивший remixsid. 3.Подменяем его на своём компе и жмём F5 (Обновляем страницу). Контакт делает следующие манипуляции: 1.После обновления страницы получаем этот ответ: HTML: <html> <head> <meta http-equiv='content-type' content='text/html; charset=windows-1251' /> <script> var t = setTimeout("location.href='http://vkontakte.ru/login.php?op=logout'", 7000); </script> </head> <body> <div> <img src='http://vkontakte.ru/images/progress.gif'> </div> <form id='f' name='f' method='post' action='http://vkontakte.ru/id1234'> <input type='hidden' name='id' value='1234' /><input type='hidden' name='IP_ADDRESS' value='10.11.13.15' /><input type='hidden' name='request_method' value='get' /><input type='hidden' name='pda' value='' /> </form> <iframe name="mf" onload="try{if (this.contentWindow.location.href.indexOf('slogin') != -1) {clearTimeout(t); if (this.contentWindow.location.href.indexOf('nonenone') != -1) {location.href='http://vkontakte.ru/login.php?op=logout&to=aWQ0Nzg2NDgwMw--'; return false;} document.f.submit();}} catch(e) {}" border=0 style='border:0px; background-color:#FFF' src='http://login.vk.com/?vk=' width='1' height='1'></iframe> </body> </html> 2.Отправляет GET запрос к http://login.vk.com/?vk= Получает ответ: HTML: <html><head><meta http-equiv='content-type' content='text/html; charset=windows-1251' /></head><body onload="document.getElementById('l').submit();"><form id='l' method='post' action='http://vkontakte.ru/login.php?op=slogin'><input type='hidden' name='s' id='s' value='http://vkontakte.ru/login.php?op=slogin'></form></body></html> По нём мы видим что получили новый параметр s со значением 482eec34a42374aab06e2766039161f6db292550c115f5c7daac1908 3. POST запрос к http://vkontakte.ru/login.php?op=slogin с данными 482eec34a42374aab06e2766039161f6db292550c115f5c7daac1908 В ответ получаем это: HTML: <html></html> И запись в куки нового remixsid,а именно 482eec34a42374aab06e2766039161f6db292550c115f5c7daac1908 4. Отправляет POST запрос уже к вашей странице,с вашим ID в конце,а в нашем случае к http://vkontakte.ru/id1234 В запросе указаны такие данные: id: 1234 IP_ADDRESS: 10.11.13.11 request_method: get pda : и в ответ получаем старицу которой мы сменили remixsid, тоисть не та страница,которую мы взяли с другого компа а та,в которой мы билы до этого залогинены... То есть доступ к странице мы не получили,а нас тупо переадресовало в нашу,родную страницу...Самое хитрое то,что мы то сменяли уже remixsid в куках,а вот нам его уже от страницы контакт новый сам выдал,то ли по IP то ли я не знаю по чём... Выводы 1.Заходить вконтакте с одного и того же компа но с другим IP можно. 2.Взять куки с чужого компа и зайти со своего невозможно,по крайней мере не подменяя привязки,которой я пока еще не знаю. 3.remixsid имеет привязку,и не одну,к IP привязка есть 100% но суть её не в том чтоб не могли зайти с другого компа,а чтоб получить новый remixsid на эту страницу для уже другого IP,если всё же определит что последний вход в этот профиль был именно с этого компа. Если Вы заметили еще какие то привязки или еще что то на подобии,описывайте здесь,буду рад любой помощи и новых тестов этих зависимостей вконтакте.
Что можете сказать по поводу параметров l и p в cookies? Также попробовал схитрить. Попросил свежую куку, зашел на свою страницу вконтакте, изменил remixsid и обновил. Действительно - переадресация на свою же страницу. Я думаю, при первом GET запросе на http://login.vk.com/?vk= идет проверка - авторизовывались ли с помощью логина / пароля для чужого аккаунта с этого IP. Если ранее не авторизовывались - идем нафиг. Это можно объяснить недавним экспериментом. Проверял на днях базу логинов / паролей. Разумеется, по разу авторизовывался на каждый аккаунт, с сохранением кук. Так вот сегодня куки работают, прекрасно себя чувствуют. Также можно попробовать кое-что сменить: id: id нашей страницы меняем на id чужой (вот только как его достать) IP_ADDRESS: 10.11.13.11 request_method: get pda :
В принципе ничего,я пока рассматриваю авторизацию вконтакте,а она зависит только от сессии,это уже проверялось не раз...поэтому думаю эти параметры вовсе не относятся к входу в вконтакте... нет! я уже писал,что IP тут практически роли не играет,сегодня,как я описал я проводил этот эксперимент со сменой моего IP,ранее акк на этом IP небыл никогда аворизирован...Я уже писал,что привязка идёт еще к чему то в компе,не только к IP,вконтакте записал еще какой то параметр твоего компа,только не IP,и всё работает идеально... 1.Реально,ID не достать никак,потому как он более тоже не храниться в куках. 2.Мне лично кажется что подмена абсолютно никакого толку не даст...Потому как привязка к машине,а это просто проверка на капчу или что либо...Но это не проверено...Узнать бы к чему еще вяжется акк,было бы вовсе чудесно...
Mixon, вы уверены, что IP сменили? Попробуйте с совершенно левого компьютера - все и выяснится. Далее можно попытаться подменять все заголовки запроса. Стандартный метод если уж и это не получится - искать баги в самой системе авторизации, более чем уверен, что они там есть. Все это, конечно, 99% результата не даст, но попытка - не пытка.
Вы видимо чего то не поняли...С совершенно левого компьютера не зайдёт никак,потому как железо другое,что я и пытался доказать первым постом темы! IP я точно сменил,я сам программист и уж поверьте,я могу нормально поставить прокси,которая маскирует мой IP полностью...
Mixon, не думаю, что из-за железа. Я, все же, грешу на IP. Подумаем логически - какие данные может получить веб-форма? Заголовки запроса, разве что... Не знаю. Можно попробовать сэмулировать полностью заголовки запроса, банально скопировать, и посмотреть, что будет.
Максимум, что они могу определить, это информация указанная в хидах HTTP запроса и IP. Code: POST /login.php HTTP/1.1 Host: vkontakte.ru User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Content-Type: application/x-www-form-urlencoded; charset=UTF-8 X-Requested-With: XMLHttpRequest Referer: http://vkontakte.ru/ Content-Length: 18 Cookie: remixlang=X; remixchk=X; remixnews_privacy_filter=X; remixnews_types=X; remixgroup_closed_tabs=X; remixclosed_tabs=X; remixap=X; audio_vol=X; remixsid=X Pragma: no-cache Cache-Control: no-cache Тобишь useragent, cookie, referer... Так что привязки именно к железу быть не может. P.S. Снифайте трафик, сравнивайте пакеты и ищите отличия.
GlooK, это все понятно. Однако, когда нет отличий, грешить приходится именно на IP адрес. Грубо говоря - на компьютере, где был залогинен аккаунт, через idhttp грузим http://vkontakte.ru, перед этим сунув куки. На компьютере, где ни разу не был залогинен аккаунт, через idhttp грузим http://vkontakte.ru, перед этим сунув куки. Первый вариант - редирект на нужную страницу, второй - редирект на главную.
Не совсем... Вот смотри,есть два компьютера,разных,пусть назовём их Linux и Windows... Если ты вошел в акк с Linux,и сменил на нём IP,то тебя переадресует на твою страницу. Но если ты вошел с Windows на этот же акк,взял сессию и вставил в Линукс (на котором уже был когда то вход в этот профиль) то тебя выбросит на главную... Их привязка идёт к одному компьютеру,но к разным его IP! Ты глубоко ошибаешься! В стандартном HTTP запросе как таково передаёться множество параметров кроме этого...Смотри ф-цию phpinfo...
Есть параметры которые нельзя никак подделать,например IP свой как таково ты не поставишь... Вот сейчас сижу и роюсь в phpinfo,и вот какой параметр мну заинтересовал,имя компьютера,только тут непонятно,это имя компьютера который подключился или имя компьютера на котором стоит сервер... А как таково то надо думаю мутить с хидерами пока,остально всёравно походу подменить невозможно как таково... Сейчас вот такая идея в голову стукнула...А серверу даты создания куков доступны??? Если да,то могли сравнивать,когда создан кук на одном компьютере а когда на другом...
Не понял...ну мы вовсе сошли с темы...лучше давай с ссид что то мутить а не тут обговаривать фиг знай что))
Mixon, это да. Сегодня еще раз попробую пошагово все отпарсить, все что утекает и притекает обратно, потом сэмулировать на другом, рабочем ПК. Результаты опишу здесь.
phpinfo() - http://www.1gb.ru/phpinfo.php Что он такого определяет, о чем я не сказал выше? Если открыть пакет в снифере полностью, так чтобы отображались все протоколы, в которые "завернут" HTTP запрос, то можно увидеть что он передает. Кроме как SOURCE IP, SOURCE PORT, DESTINATION IP, DESTINATION PORT ничего полезного там нет. Такие параметры как mac-адрес убираются на первом рубеже провайдера. Поправьте, если не так...