[VK] base64

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by cel, 27 Mar 2010.

  1. cel

    cel New Member

    Joined:
    11 Nov 2008
    Messages:
    63
    Likes Received:
    0
    Reputations:
    0
    Памогите пожалуйсто сделать автаризацию, я уже неделю голову ламаю.

    Вот код:

    PHP:
    var
     
    PageText TStringList;
     
    PostData TStringList;
     
    TempStr  string;
     
    I        Integer;
    begin
        
    Создаем объекты в памяти }
         
    HTTP := TidHTTP.Create(nil);
         
    Cookie := TidCookieManager.Create(HTTP);
         
    PageText := TStringList.Create;
         
    PostData := TStringList.Create;

        { 
    Задаем нужные параметры }
         
    HTTP.Request.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.7) Gecko/20091221 MRA 5.6 (build 03278) Firefox/3.5.7 sputnik unknown';
         
    HTTP.Request.Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
         
    HTTP.Request.AcceptLanguage := 'ru,en-us;q=0.7,en;q=0.3';
         
    HTTP.Request.Connection := 'keep-alive';
         
    HTTP.Request.Referer := 'http://vk.com/login.php';
         
    HTTP.Request.ContentType := 'application/x-www-form-urlencoded; charset=UTF-8';
         
    HTTP.Request.AcceptCharset := 'windows-1251,utf-8;q=0.7,*;q=0.7';
         
    HTTP.CookieManager := Cookie;
         
    HTTP.AllowCookies := True;
         
    HTTP.HandleRedirects := True;

        { 
    1. Запрос на страницу }
         
    HTTP.Post('http://vk.com/login.php'PostData);

        { 
    2. Формируем запрос }
         
    PostData.Add('act=login');
         
    PostData.Add('email=' edit1.Text);
         
    PostData.Add('pass=' edit2.Text);

         
    PageText.Text := HTTP.Post('http://login.vk.com/'PostData);



         For 
    := 0 To PageText.Count -do
         
    begin
           
    If Pos('id=' #39 + 's' + #39, PageText[I]) <> 0 Then
           
    begin
              TempStr 
    := PageText[I];
              
    TempStr := Copy(TempStrPos('value='TempStr) +7Length(TempStr));
              
    Delete(TempStrPos(#39, TempStr), Length(TempStr));
           
    end;
         
    end;

        { 
    3. Отсылаем ключ на сервер }
         
    PostData.Clear;
         
    PostData.Add('op=slogin');
         
    PostData.Add('s=' TempStr);

         
    HTTP.Post('http://vk.com/login.php'PostData);

        
    HTTP.GET('http://vk.com/profile.php');

         
    PageText.Free;
         
    PostData.Free;
    Он меня наченает кидать с профиля на логин
    http://vk.com/login.php?u=1&to=cHJvZmlsZS5waHA-

    cHJvZmlsZS5waHA- - base64 profile.php

    Как это можно обойти,или как и куда приррутить decode base64 ?
     
  2. cel

    cel New Member

    Joined:
    11 Nov 2008
    Messages:
    63
    Likes Received:
    0
    Reputations:
    0
    Хм... разве некто не знает как это сделать?
     
  3. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    809
    Reputations:
    231
    Хм... Разве так трудно воспользоваться поиском и найти пример авторизации?
    http://u.nu/9xvw7
    /thread180075.html
    /thread175598.html
     
    _________________________
  4. cel

    cel New Member

    Joined:
    11 Nov 2008
    Messages:
    63
    Likes Received:
    0
    Reputations:
    0
    поиском я пользовался, жаль тока я не нашол раюочих ответов(
     
  5. cel

    cel New Member

    Joined:
    11 Nov 2008
    Messages:
    63
    Likes Received:
    0
    Reputations:
    0
    Подскажите хотябы напровление по теме
     
  6. Jingo Bo

    Jingo Bo Member

    Joined:
    25 Oct 2009
    Messages:
    368
    Likes Received:
    51
    Reputations:
    7
    Ня! недавно ток сделал, код кривой потому что декомпилированный и портированный, оптимизировать не составит труда.
    Правда если в конце url "--" то меняй(в твоём случае)
    Code:
          BASE64_CHARS : String = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
    
    на
    Code:
          BASE64_CHARS : String = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/[b]-[/b]';
    
    Вот сам код :
    Code:
    const version : String = '1.0.0';
          BASE64_CHARS : String = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
    function encode(inStr : String) : String;
    Var ba : TByteArray;
        utf : String;
    Begin
        utf := AnsiToUtf8(inStr);
        SetLength(ba, Length(utf));
        Move(utf[1], ba[0], Length(utf));
        Result := encodeByteArray(ba);
    end;
    function encodeByteArray(data : TByteArray) : String;
    Var inBuf : Array of Byte;
        i, j, k : Cardinal;
        outBuf : array[0..3] of Byte;
        dataPos : Cardinal;
    Begin
        dataPos := 0; Result := '';
        i := 0;
        while (dataPos <= High(data)) do
        Begin
            SetLength(inBuf, 3);
            FillChar(inBuf[0], 3, 0);
            i := 0;
            while ((i < 3) and (dataPos <= High(data))) do
            Begin
                inBuf[i] := data[dataPos];
                i := i + 1;
                Inc(dataPos);
            end;
            outBuf[0] := (inBuf[0] and 252) shr 2;
            outBuf[1] := ((inBuf[0] and 3) shl 4) or (inBuf[1] shr 4);
            outBuf[2] := ((inBuf[1] and 15) shl 2) or (inBuf[2] shr 6);
            outBuf[3] := inBuf[2] and 63;
            while (i < 3) do
            Begin
                outBuf[(i + 1)] := 64;
                i := i + 1;
            end;
            k := 0;
            while (k < 4) do
            Begin
                Result := Result + BASE64_CHARS[outBuf[k]+1];
                k := k + 1;
            end;
        end;
    end;
    
    function decode (inStr : String) : String;
    Var ba : TByteArray;
        utf : String;
    Begin
        ba := decodeToByteArray(inStr);
        SetLength(utf, High(ba)+1);
        Move(ba[0], utf[1], High(ba)+1);
        Result := System.Utf8ToAnsi(utf);
    end;
    
    function decodeToByteArray(data : String) : TByteArray;
    Var
        i, j, k : Cardinal;
        inBuf : Array[0..3] of Byte;
        outBuf : Array[0..2] of Byte;
        _HypArray : TByteArray;
        _HypLength : Cardinal;
    const ReAlignStep = 1024*1024*512; {Эт для того что бы менеджер память по байту не насиловать}
    Begin
        i := 0; _HypLength := 0;
        SetLength(_HypArray, ReAlignStep);
        while (i < Length(data)) do
        Begin
            j := 0;
            while ((j < 4) and (i + j < Length(data))) do
            Begin
                 inBuf[j] := Pos(data[i + j + 1], BASE64_CHARS) - 1;
                 Inc(j);
            end;
            outBuf[0] := (inBuf[0] shl 2) + ((inBuf[1] and 48) shr 4);
            outBuf[1] := ((inBuf[1] and 15) shl 4) + ((inBuf[2] and 60) shr 2);
            outBuf[2] := ((inBuf[2] and 3) shl 6) + inBuf[3];
            k := 0;
            while (k < 3) do
            Begin
                if (inBuf[(k + 1)] = 64) then
                  Break;
                _HypArray[_HypLength] := outBuf[k];
                Inc(_HypLength);
                if _HypLength > High(_HypArray) then
                    SetLength(_HypArray, High(_HypArray)+ReAlignStep+1);
                Inc(k);
            end;
            Inc(i, 4);
        end;
        SetLength(Result, _HypLength);
        Move(_HypArray[0], Result[0], _HypLength);
    end;
    
     
  7. cel

    cel New Member

    Joined:
    11 Nov 2008
    Messages:
    63
    Likes Received:
    0
    Reputations:
    0
    как декодировать я знаю, я незнаю куда это применить
     
  8. cel

    cel New Member

    Joined:
    11 Nov 2008
    Messages:
    63
    Likes Received:
    0
    Reputations:
    0
    Актуально
     
  9. cel

    cel New Member

    Joined:
    11 Nov 2008
    Messages:
    63
    Likes Received:
    0
    Reputations:
    0
    ответце ктонебуть пожалуйсто
     
  10. Fliplab

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

    Joined:
    29 Jul 2008
    Messages:
    123
    Likes Received:
    20
    Reputations:
    3
  11. cel

    cel New Member

    Joined:
    11 Nov 2008
    Messages:
    63
    Likes Received:
    0
    Reputations:
    0
    у мну ссылка не грузится(((
     
  12. Fliplab

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

    Joined:
    29 Jul 2008
    Messages:
    123
    Likes Received:
    20
    Reputations:
    3
    У меня тоже.... Думал, что только у меня, вообщем могу выложить, но он немного старенькие, попробуй его юзнуть.
     
  13. cel

    cel New Member

    Joined:
    11 Nov 2008
    Messages:
    63
    Likes Received:
    0
    Reputations:
    0
    ок, хоть что то
     
  14. cel

    cel New Member

    Joined:
    11 Nov 2008
    Messages:
    63
    Likes Received:
    0
    Reputations:
    0
    актуалтно
     
  15. Jingo Bo

    Jingo Bo Member

    Joined:
    25 Oct 2009
    Messages:
    368
    Likes Received:
    51
    Reputations:
    7
    Так, а в чём именно проблема?
     
  16. RedFern.89

    RedFern.89 Member

    Joined:
    20 Jan 2010
    Messages:
    557
    Likes Received:
    45
    Reputations:
    0
    ыыы)) увидел свой код для авторизации )) ваще если у тебя возвращается такой ответ, то значит, что авторизация не прошла, и/или не сохранились куки)))
     
  17. RedFern.89

    RedFern.89 Member

    Joined:
    20 Jan 2010
    Messages:
    557
    Likes Received:
    45
    Reputations:
    0
    просто тебя бросает на страницу логина с ключем base64. Этот ключ - это путь, куда тебя после логина переадресует. При нормальной авторизации этого быть не должно..