Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Генерация Cookie (https://forum.antichat.xyz/showthread.php?t=136291)

Hwma 20.08.2009 23:14

Генерация Cookie
 
Привет, подскажите каким образом может генерироваться кукис при авторизации на сайте? Пишу прогу, которая будет логиниться на сайт и парсить некоторую инфу. По шагам:
Логинюсь на сайт, параллельно смотрю снифером какие заголовки и POST данные передаются.
Делаю POST запрос на сайт с абсолютно точно такими же заголовками и POST данными, но в ответ получаю какие-то "неправильные" кукисы, которые естественно сервер не принимает и не авторизовывает.
Для примерна, когда логинюсь браузером, то получаю вот такие кукисы:
Цитата:

Cookie: VID=1ZCdjS2_76Wg; p=KOwIAeHL3wAA; mrcu=42E54A40A8FF25C7518F4B70A753; t=obLD1AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAABAAABAAAAAAAAAACAAAEEvAcA; client_res=1280x1024; searchuid=2679434291245682884; bf=SGGGGdsLmTb6Sfszd9hbTBZG7DbrPi4BzmPEYD9HMIs8ZK1 xqBJ*GwtwFDeDsUcWbXIvd0FEGqXymy8ycpHt4H8X; cf=eGGGGdsLvmwgPEI0FN0AtyaIEHiPEYIxKYISGg2HpBmebP; c56=QJSVSgAAAALaHQEAAAAAAyc4AQAAAAAA; c8=QKuNSgAAAAMhDwMAAAAAAqfdBQAAAAADAWwCAAAAAAKgDgI AAAAAApF6AQAAAAADAW4CAAAAAAK6TAEAAAAAAv3nAgAAAAAB+ VIBAAAAAAMf+wEAAAAAAmAiAQAAAAADAW0CAAAAAAIw+wIAAAA AAkNEAQAAAAADJ5sCAAAAAAMTYAEAAAAAAyYWAQAAAAAA; partnerid=st; server=1; PHPSESSID=c8f0f3ebdd3633f94e7d9036b9888e3b; uid=629497
После посылки пост запроса программой, мне возвращаются вот такие кукисы:
Цитата:

Cookie: PHPSESSID=3a1f2ff253ae09ac4767007627141d0d; path=/,Mpop=1250794471:5a0f6b4205524a5e190502190a1d00071 c02074f6a5d5e465e070408071d030e03185f505f5156516e4 4505550105d595b5e48184a47:*****@inbox.ru:; expires=Wed, 18-Nov-2009 18:54:31 GMT; path=/; domain=.***.ru,server=1; expires=Sat, 22-Aug-2009 18:54:28 GMT; path=/; domain=.***.***.ru,uid=629497; path=/
В первом кукисе есть вот такой вот кусочек: "client_res=1280x1024". То есть кукисы как-то редактируются толи жабаскриптом, толи хз как. И вот собственно вопрос, как можно получить нормальный кукис ?

Kaimi 20.08.2009 23:21

Где конкретно авторизоваться пытаешься?

Hwma 20.08.2009 23:36

Я про что и говорю. Хочу разобраться как эти данные попадают в кукисы

Pashkela 20.08.2009 23:38

Определяются серверным скриптом + javascript скорее всего и потом прописываются в куки после авторизации, причем здесь пост запрос, от человека будут требовать в пост запросе его разрешение экрана? Смешно

Hwma 20.08.2009 23:40

Каким образом можно узнать эту инфу, которая записывается в кукисы и передать ее серверу, чтобы он ее принял?

Hwma 20.08.2009 23:45

Да разрешение это фигня, там тем более в передаваемом заголовке Cookie еще много чего непонятно откуда взявшегося, например mrcu

попугай 21.08.2009 00:08

Шлешь на сервак запрос для авторизации с паролем и логином - в ответ получаешь куки, и далее все запросы на сервак шлешь вместе с этими куками

Pashkela 21.08.2009 00:10

Цитата:

Шлешь на сервак запрос для авторизации с паролем и логином - в ответ получаешь куки, и далее все запросы на сервак шлешь вместе с этими куками
Ага, полностью согласен, два запроса, первый - авторизация и получение кук, второй - поход на нужную страницу, и не париться, откуда и что тебе в куки вставляют, просто получить

Вот пример авторизации на ачаде, именно этот пример показывает, что нам пофигу, что там в куки пишется и откуда это берется:

PHP код:

<?php 
$user 
'Pashkela'
$pass md5('лолохоцкер123$!#--?'); 
// Раззззз.......
$cl curl_init('http://forum.antichat.ru/login.php?vb_login_username='.$user.'&vb_login_password=&cookieuser=1&s=&do=login&forceredirect=1&vb_login_md5password='.$pass); 
curl_setopt($clCURLOPT_RETURNTRANSFER1); 
curl_setopt($clCURLOPT_USERAGENT'Opera/9.25 (Windows NT 5.1; U; ru)'); 
curl_setopt($clCURLOPT_REFERER'http://forum.antichat.ru/'); 
curl_setopt($clCURLOPT_HEADER1); 
curl_setopt($clCURLOPT_COOKIEJAR'coockie.txt'); 
$ex curl_exec($cl); 
curl_close($cl);
// Два...... 
$exec curl_init('http://forum.antichat.ru/index.php'); 
curl_setopt($execCURLOPT_RETURNTRANSFER1); 
curl_setopt($execCURLOPT_USERAGENT'Opera/9.25 (Windows NT 5.1; U; ru)'); 
curl_setopt($execCURLOPT_REFERER'http://forum.antichat.ru/'); 
curl_setopt($execCURLOPT_HEADER1); 
curl_setopt($execCURLOPT_COOKIEFILE'coockie.txt'); 
$page curl_exec($exec); 
curl_close($exec); 
preg_match('#<div class="bigusername">(.*)</div>#',$page,$username); 
preg_match('#\(<b>(.*)<\/b>\/(.*)\)#',$page,$messg); 
echo 
'У пользователя <b>'.$username[1].'</b>&nbsp;&nbsp;'.$messg[0].'&nbsp;сообщений.'
?>

зачем создавать отдельную тему - непонятно, таких вопросов миллион (как и ответов) по форуму

Hwma 21.08.2009 00:19

Это все понятно. Только дело то в том, что ответный заголовок вот такой:
Цитата:

Set-Cookie=PHPSESSID=40780ed9fa61684efd11155f5d35174d; path=/
server=1; expires=Sat, 22-Aug-2009 19:51:37 GMT; path=/; uid=629497; path=/
а дальше на сервер посылаются заголовки с кукисами, где от ответного заголовка только PHPSESSID и uid (как видно из первой цитаты первого поста), и куча параметров которые беруться непонятно откуда, видимо яваскриптом, но среди всех яваскриптов, которые я там увидел, яваскрипта, который хотябы будет разрешение брать я не нашел, кроме счетчика, или скрипта который будет изменять кукисы: document.cookie

Pashkela 21.08.2009 00:22

Уже заддосили:))

Цитата:

Ведутся работы, ориентировочное время окончания работ 01:30 (GMT +03:00) по московскому времени.
как заработает - наверное таки напишут

qBiN 21.08.2009 00:34

Цитата:

зачем создавать отдельную тему - непонятно, таких вопросов миллион (как и ответов) по форуму
Вы вопроса не догоняете видимо. Кароче смысл - во многих крупных проектах авторизация не так проста как кажется, благодаря js, который дает дополнительные параметры для создания сессии, и соответственно логин без них не проходит.Например данные передаются аяксом(каждый раз могут быть уникальными(соответственн 2 раза их послать уже нельзя). Столкнулся с этой проблемой сам, не так давно.
Вообщем сразу к решению:
1) Если парсер пишешь(ну или что ты там делаешь) под один проект, то можно рассматривать джаваскрипты, как они создают эти уникальные ключи, куда отсылают и прочее. Однако часто они обфускации подлежат, да и криптуют + сжимают, что разобраться с ними порой не выгодно. Овчинка выделки не стоит, как говорят. Тогда на этот случай есть 2 решение.
2) Решение 2, юзать готовые браузеры,т.к. в них есть js, причем их DOM полюбому поддерживает проект. Здесь тоже куча вариантов, берешь IE или gecko движек и вперед.Но тут уж скриптами не обойдешься.

Gifts 21.08.2009 02:12

2TC Учите пхп, в нем все написано, это для 2 сервера, с небольшими изменениями будет работать и с первым:
PHP код:

//===================================
    
$login='логин';
    
$pass='пароль';
//===================================

    
@set_time_limit(0);
    @
ini_set("max_execution_time"0);

    
$cookie=array();
    
    function 
post($url='',$content='',$referer='')
    {
        GLOBAL 
$cookie;

        
$ch curl_init();  
        
curl_setopt($chCURLOPT_URL,$url);
        
curl_setopt($chCURLOPT_HEADER1);
        
curl_setopt($chCURLOPT_RETURNTRANSFER,1);
        
curl_setopt($chCURLOPT_TIMEOUT15);
        
curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208');
        if (!empty(
$cookie)) curl_setopt($chCURLOPT_COOKIEimplode('; ',$cookie));
        if (!empty(
$content)) {curl_setopt($chCURLOPT_POST1);curl_setopt($chCURLOPT_POSTFIELDS$content);} else {curl_setopt($chCURLOPT_POST0);}
        if (!empty(
$referer)) curl_setopt($chCURLOPT_REFERER$referer);
        
        
$ss=curl_exec($ch);
        
curl_close($ch);
        if (
preg_match_all('#^Set-Cookie: (([^;=]+)=([^;=\r\n]+))#mi',$ss,$cook)) 
        {
            if (
$tmpcookie=array_combine($cook[2],$cook[1]))
                
$cookie=(array)$tmpcookie + (array)$cookie;
        }
        return 
$ss;
    }
    
post('http://g2.botva.mail.ru/login.php','server=2&email='.urlencode($login).'&email2=mail.ru&passWord='.urlencode($pass).'&b_msg_go2.x=47&b_msg_go2.y=27&main=','http://g2.botva.mail.ru/index.php');
    echo 
post('http://g2.botva.mail.ru/index.php'); 

qBiN То что один человек сделал - другой завсегда сломать сможет. А полагаться на яваскрипты - это терять многих пользователей, кто ими не пользуется

Pashkela 21.08.2009 02:34

В данном сабже про яваскрипты чушь. Вот рабочий скрипт авторизации на ботве на основании мною вышесказанного:

PHP код:

<pre>
<? 
@set_time_limit(0); 
@
ini_set("display_errors","1");
 
$mail ''// Ваша почта на mail.ru, всё, что до @mail.ru 
$pass '';// Пароль от почты  
// Раззззз....... АВТОРИЗАЦИЯ
$cl curl_init('http://g2.botva.mail.ru/login.php');  
curl_setopt($clCURLOPT_RETURNTRANSFER1);  
curl_setopt ($clCURLOPT_POST1);
 
curl_setopt ($clCURLOPT_POSTFIELDS"server=2&email=$mail&email2=mail.ru&passWord=$pass&submit.x=94&submit.y=14");
curl_setopt($clCURLOPT_USERAGENT'Opera/9.25 (Windows NT 5.1; U; ru)');  
curl_setopt($clCURLOPT_REFERER'http://g2.botva.mail.ru/index.php');  
curl_setopt($clCURLOPT_HEADER1);  
curl_setopt($clCURLOPT_COOKIEJAR'coockie.txt');  
$ex curl_exec($cl);  
curl_close($cl); 
// Два...... ИДЁМ НА ЛЮБУЮ СТРАНИЦУ САЙТА, НО УЖЕ АВТОРИЗОВАННЫЕ 
$exec curl_init('http://g2.botva.mail.ru/tour.php');  
curl_setopt($execCURLOPT_RETURNTRANSFER1);  
curl_setopt($execCURLOPT_USERAGENT'Opera/9.25 (Windows NT 5.1; U; ru)');  
curl_setopt($execCURLOPT_REFERER'http://g2.botva.mail.ru/login.php');  
curl_setopt($execCURLOPT_HEADER1);  
curl_setopt($execCURLOPT_COOKIEFILE'coockie.txt');  
$page curl_exec($exec);  
curl_close($exec);  
echo 
$page;
?>
</pre>

ну и Gifts риспект, впрочем как и всегда (практически тоже самое, только оформленное в виде функции с небольшими изменениями в алгоритме)

PS: Какие куки вы в итоге получили всегда можете посмотреть в файле, который создается автоматически в той же папке, где был запущен сам скрипт - coockie.txt

все необходимые данные элементарно цепляются из tamper data (плагин для FireFox), что было уже озвучено выше.

Итог: обычнейшая авторизация, ничем вообще не отличающаяся по сложности от авторизации на ачаде.

Приведен пример авторизации на сервере g2, так как не мог зарегица на сервере g1, потому что он официально работает только до 1 ноября 2008 года.

qBiN 22.08.2009 16:47

Цитата:

А полагаться на яваскрипты - это терять многих пользователей, кто ими не пользуется
Яхуу, всмысле yahoo.com посмотрю как ты настройки ящика будешь менять без js. Хороший пример я думаю.

qBiN 22.08.2009 17:17

Цитата:

Я бы посмотрел на код JS, который нельзя перевести к примеру на php
перевести можно, но затратно. Долго пример искать не хочу, вот пример обфускованого кода, правда он тут не закодирован escape`ами и прочим. http://l.yimg.com/d/lib/bc/bc_2.0.4.js скрипт самый маленький, который нашел)

qBiN 22.08.2009 18:08

Цитата:

Смысл его переводить?
ну если ты не заметил, то этот скриптик используется для передачи данных о пользователе картинке по урлу http://us.bc.yahoo.com/b
Цитата:

там всё просто - заменить пхп эквивалентами и выдрать двиг.... ну иногда ещё можно обфусцированные выражения просто заменить 1 строкой
вот это вообще не понял, что ты написал.
---
Это кажется все просто, пока не начнешь работать с этим.

qBiN 22.08.2009 20:24

Цитата:

если картинка как-то влияет на авторизация, то просто скопировать передаваемые данные и каждый раз их посылать
А теперь читаем выше
Цитата:

каждый раз могут быть уникальными(соответственн 2 раза их послать уже нельзя)
--
ну и народ пошел

qBiN 22.08.2009 23:03

Цитата:

если что-то разное, то легко смотрится часть кода и добавляется в отсылку данных
Цитата:

base64 + md5(pass + md5(sess))
ахаха) это js)))
--
Закончил оффтоп.


Время: 18:02