Как залогиниться через HTTPS ?

Тема в разделе "WASM.NETWORKS", создана пользователем Flasher, 16 окт 2009.

  1. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Необходимо программно залогиниться сюда. Юзаю фнукции wininet, но не знаю в каком виде передать логин и пасс.

    Вот код:
    Код (Text):
    1. Login proc
    2.      local hOpen:dword
    3.      local hRequest:dword
    4.      local hConnect:dword
    5.      local buffer[4096]:byte
    6.      local bytewrite:dword
    7.  
    8.        invoke InternetOpen,$CTA0("steam"),INTERNET_OPEN_TYPE_PRECONFIG,0,0,0
    9.         .if eax != 0
    10.            mov hOpen,eax
    11.            invoke InternetConnect,hOpen,$CTA0("store.steampowered.com"),INTERNET_DEFAULT_HTTPS_PORT,0,0,INTERNET_SERVICE_HTTP,0,0
    12.             .if eax != 0
    13.                mov hConnect,eax
    14.                invoke HttpOpenRequest,hConnect,$CTA0("POST"),$CTA0("login/"),$CTA0("HTTP/1.1"),0,0,0,1
    15.                 .if eax != 0
    16.                    mov hRequest,eax
    17.                    invoke HttpSendRequest,hRequest,0,0,0,0
    18.  
    19.                 invoke InternetReadFile,hRequest,addr buffer,sizeof buffer,addr bytewrite
    20.                 invoke MessageBox,0,addr buffer,0,0
    21.  
    22.                    invoke InternetCloseHandle,hRequest
    23.                 .endif
    24.             .endif
    25.            invoke InternetCloseHandle,hOpen
    26.         .endif
    27.        invoke ExitProcess,0
    28. Login endp
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    а разве не функции SSL либы надо юзать?
     
  3. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Asterix, через wininet не получится ?
     
  4. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    почему? получиться, составь запрос норм только:
    Код (Text):
    1. https://store.steampowered.com/login/
    2. redir=&username=qwerty&password=12345
    или если с капчей
    Код (Text):
    1. redir=&username=qwerty&password=12345&captchagid=55327337876853030&captcha_text=YA%26HKG
     
  5. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Сорри за нубство, но что не так?
    Код (Text):
    1. Login proc
    2.      local hOpen:dword
    3.      local hRequest:dword
    4.      local hConnect:dword
    5.      local buffer[4096]:byte
    6.      local bytewrite:dword
    7.      local dwCodeLen:dword
    8.      local dwcode[20]:dword
    9.  
    10.        invoke InternetOpen,$CTA0("steam"),INTERNET_OPEN_TYPE_PRECONFIG,0,0,0
    11.         .if eax != 0
    12.            mov hOpen,eax
    13.            invoke InternetConnect,hOpen,$CTA0("store.steampowered.com"),INTERNET_DEFAULT_HTTPS_PORT,0,0,INTERNET_SERVICE_HTTP,0,0
    14.             .if eax != 0
    15.                mov hConnect,eax
    16.                invoke HttpOpenRequest,hConnect,$CTA0("POST"),$CTA0("login"),$CTA0("HTTP/1.1"),0,0,0,1
    17.                 .if eax != 0
    18.                    mov hRequest,eax
    19.                    invoke HttpSendRequest,hRequest,$CTA0("Content-Type: application/x-www-form-urlencoded"),47,$CTA0("redir=&username=qwerty&password=12345"),37
    20.                     .if eax == 1
    21.                        mov dwCodeLen,10
    22.                        invoke HttpQueryInfo,hRequest,HTTP_QUERY_STATUS_CODE,addr dwcode,addr dwCodeLen,0
    23.                        invoke MessageBox,0,addr dwcode,addr dwcode,0
    24.                     .endif
    25.                    invoke InternetCloseHandle,hRequest
    26.                 .endif
    27.             .endif
    28.            invoke InternetCloseHandle,hOpen
    29.         .endif
    30.        invoke ExitProcess,0
    31. Login endp
     
  6. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    invoke HttpOpenRequest,hConnect,$CTA0("POST"),$CTA0("login/"),$CTA0("HTTP/1.1"),0,0,FLAGS,0
    Код (Text):
    1. INTERNET_FLAG_RELOAD or INTERNET_FLAG_NO_CACHE_WRITE or NTERNET_FLAG_SECURE or INTERNET_FLAG_PRAGMA_NOCACHE
     
  7. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Спасибо большое, получилось. Еще маленький вопрос, а как кукис извлеч из ответа чтобы по этому кукису гулять по другим разделам?
    Код (Text):
    1. mov dwCodeLen,10
    2. invoke HttpQueryInfo,hRequest,HTTP_QUERY_STATUS_CODE,addr dwcode,addr dwCodeLen,0
    3.  .if eax == 1 && dword ptr [dwcode] == '203'
    4.     mov dwCodeLen,sizeof buffer
    5.     invoke HttpQueryInfo,hRequest,HTTP_QUERY_COOKIE,addr buffer,addr dwCodeLen,0
    6.  .endif
    Данный метод не работает.
     
  8. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    ну вообще они автоматом цепляться будут, иначе указать флаг INTERNET_FLAG_NO_COOKIES, выташить как куки я не помню, зато вот так можно вытащить весь заголовок ответа:
    Код (Text):
    1. HttpQueryInfoA(pReq,HTTP_QUERY_RAW_HEADERS_CRLF,pbuf,szBuf,dwTmp)
     
  9. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Кажется вот так:
    Код (Text):
    1.                            mov dwCodeLen,sizeof buffer
    2.                            invoke lstrcpy,addr buffer,$CTA0("Set-Cookie")
    3.                            invoke HttpQueryInfo,hRequest,HTTP_QUERY_CUSTOM,addr buffer,addr dwCodeLen,0
    Через HTTP_QUERY_RAW_HEADERS_CRLF глянул, там Set-Cookie, я когда тестил указывал просто Cookie, поэтому не работало.

    Большое спасибо еще раз :)
     
  10. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    не знал, что можно так вытаскивать поля :) спс пригодиться.