ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Вывод капчи в окно с VK
  #1  
Старый 20.05.2010, 20:17
ArkNet
Новичок
Регистрация: 15.05.2010
Сообщений: 26
Провел на форуме:
35421

Репутация: 5
По умолчанию Вывод капчи в окно с VK

Как вывести капчу в Отдельное окно с Edit1, а потом отправить разшыфрованую обратно в ВК..?
 
Ответить с цитированием

  #2  
Старый 20.05.2010, 20:22
RedFern.89
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме:
500264

Репутация: 69
Отправить сообщение для RedFern.89 с помощью ICQ
По умолчанию

на тебе на примере логина вк. Код взят из моего компонента, так что некоторые строчки тупо удаляй

Код:
// ---- Вывод диалога ввода кода капчи ----
procedure TidVKClient.ShowCaptchaDialog(const captcha_sid: string);
var
  MS  : TMemoryStream;
  Jpg : TJpegImage;
begin
   Ms  := TMemoryStream.Create;
   Jpg := TJpegImage.Create;
  try
   HTTP.Get('http://vkontakte.ru/captcha.php?s=1&sid=' + captcha_sid, Ms);
   Ms.Position := 0;
   Jpg.LoadFromStream(ms);
   DlgForm.imgKey.Picture.Graphic := Jpg;
  finally
   Jpg.Free;
   Ms.Free;
  end; 
   DlgForm.Caption := 'Enter Code';
   DlgForm.ShowModal;
end;

// ---- Авторизация ----
function TIdVKClient.Login: boolean;
var
  Hash    : string;
  sid     : string;
  Tmp     : TStringList;
  APost   : TStringList;
  I       : Integer;
  Cookie  : TidCookieManager;
begin
(* --- Авторизация начата --- *)

 // Создаем объекты
  Tmp := TStringList.Create;
  APost := TStringList.Create;
  HTTP := TidHTTP.Create(nil);
  Cookie := TidCookieManager.Create(nil);

  HTTP.AllowCookies := True;
  HTTP.HandleRedirects := True;
  HTTP.CookieManager := Cookie;

  with HTTP.Request do
  begin
    UserAgent := FHeaders.UserAgent;
    Accept := FHeaders.Accept;
    AcceptLanguage := FHeaders.AcceptLanguage;
    AcceptCharset := FHeaders.AcceptCharset;
    ContentType := FHeaders.ContentType;
    Connection := FHeaders.Connection;
    CustomHeaders.AddStrings(FHeaders.CustomHeaders);
  end;

  Tmp.Text := HTTP.Post('http://vkontakte.ru/login.php', APost);

 // Если капча, то покажем дилог ввода кода с картинки
 If Pos('captcha_sid', tmp.Text) <> 0 Then
 begin
   sid := tmp.Text;
   sid := Copy(sid, Pos('":"', sid) + 3, Length(sid));
   Delete(sid, Pos(#34, sid), Length(sid));

   (* Код для вывода дилога *)

   ShowCaptchaDialog(sid);

   APost.Add('op=a_login_attempt');
   APost.Add('captcha_sid=' + sid);
   APost.Add('captcha_key=' + key);

   HTTP.Post('http://vkontakte.ru/login.php', APost);
 end;

 // Подготовка
  APost.Clear;
  APost.Add('act=login');
  APost.Add('email=' + FEmail);
  APost.Add('pass=' + FPass);

 // Отсылаем запрос
  Tmp.Text := HTTP.Post('http://login.vk.com/', APost);
  
 // Проверка на ошибки ;)
 If Pos('error', Tmp.Text) <> 0 Then LOGIN_FLAG := False Else LOGIN_FLAG := True;

 Result := LOGIN_FLAG;

(* Следующий фрагмент кода будет правильно работать при успешной авторизации *) 

 // Ищем хэш в теле ответа и выдергиваем его
  For I := 0 To Tmp.Count -1 Do // Крутим строки...
  begin
    If Pos('id='#39's'#39, Tmp[i]) <> 0 Then // Если нашли строку id='s', ...
    begin // Вытаскиваем из нее хэш
      Hash := Tmp[i];
      Hash := Copy(Hash, Pos('value=', Hash) +7, Length(Hash));
      Delete(Hash, Pos(#39, Hash), Length(Hash));
    end;
  end;
  
 // Ура!!1!1 нашли хэш! Шлем его на сервер
  APost.Clear;
  APost.Add('op=slogin');
  APost.Add('s=' + Hash);

  Tmp.Text := HTTP.Post('http://vkontakte.ru/login.php', APost);

 // Чистим память
  Tmp.Free;
  APost.Free;

(* --- Авторизация завершена --- *)
end;
 
Ответить с цитированием

  #3  
Старый 20.05.2010, 20:23
ArkNet
Новичок
Регистрация: 15.05.2010
Сообщений: 26
Провел на форуме:
35421

Репутация: 5
По умолчанию

При отправке ПОСТ запроса получаю в мемо такой код
{"ok":-2,"captcha_sid":"198480237911","text":"Enter code"}
 
Ответить с цитированием

  #4  
Старый 20.05.2010, 20:26
ArkNet
Новичок
Регистрация: 15.05.2010
Сообщений: 26
Провел на форуме:
35421

Репутация: 5
По умолчанию

Спасибо за код RedFern.89 , как твой компонент установить.И какие методы есть и для чего они служат
 
Ответить с цитированием

  #5  
Старый 20.05.2010, 20:27
Sams
Участник форума
Регистрация: 18.04.2009
Сообщений: 120
Провел на форуме:
435863

Репутация: 80
По умолчанию

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

ArkNet
,
твой вопрос идентичен:"Что такое стенка? Она покрашена". Мой тебе совет:
1. Напиши язык программирования, на котором ты кодишь.
2. Опиши конкретней цели, которые ты преследуешь. А то же НИЧЕРТА непонятно, ты хочешь вывести капчу в виде текстовой строки в текстовое поле? Или ты хочешь его вывести как картинку? Отправить обратно куда? И что значит "расшифрованную"?
 
Ответить с цитированием

  #6  
Старый 20.05.2010, 20:45
ArkNet
Новичок
Регистрация: 15.05.2010
Сообщений: 26
Провел на форуме:
35421

Репутация: 5
По умолчанию

RedFern.89 розобрался с твоим кодом.Его смысл такой
Отправляем пост запрос пустой, если вылезла капча то для вывода ее используем самую верхнюю процедуру.
Потом отправляем пост запросс с нашими данными.
А теперь скажы что у тебя в USES
И какой надо Инди чтоб твой ВК компонент установить?
 
Ответить с цитированием

  #7  
Старый 20.05.2010, 20:55
RedFern.89
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме:
500264

Репутация: 69
Отправить сообщение для RedFern.89 с помощью ICQ
По умолчанию

инди 7-9, в uses idHTTP, idCookieManager, jpeg; - это конкретно для процедуры. а компонент установить легко - Component -> Install Component. Список функций, подробности установки и т.д. смотри тут: https://forum.antichat.ru/threadnav204126-1-10.html
 
Ответить с цитированием

  #8  
Старый 20.05.2010, 22:50
ArkNet
Новичок
Регистрация: 15.05.2010
Сообщений: 26
Провел на форуме:
35421

Репутация: 5
По умолчанию

Компилируется нормально но при запуске выдает ошибку "access violation at address 00403404 in module 'Project1.exe'. Read of address D284562F"
Вот код:
Добавил на форму кукименеджер и связал его с ашттп.
procedure Dialog(const captcha_sid: string);
var
MS : TMemoryStream;
Jpg : TJPEGImage;
begin
Ms := TMemoryStream.Create;
Jpg := TJPEGImage.Create;
try
Form1.idHttp1.Get('http://vkontakte.ru/captcha.php?s=1&sid=' + captcha_sid, Ms);
Ms.Position := 0;
Jpg.LoadFromStream(ms);
Form1.Image1.Picture.Graphic:= Jpg;
finally
Jpg.Free;
Ms.Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Hash, sid: string;
Tmp,APost: TStringList;
begin
Tmp.Text := IdHTTP1.Post('http://vkontakte.ru/login.php', APost);
If Pos('captcha_sid', tmp.Text) <> 0 Then
begin
sid := tmp.Text;
sid := Copy(sid, Pos('":"', sid) + 3, Length(sid));
Delete(sid, Pos(#34, sid), Length(sid));
Dialog(sid);
APost.Add('op=a_login_attempt');
APost.Add('captcha_sid=' + sid);
APost.Add('captcha_key=' + Edit1.Text);
IdHTTP1.Post('http://vkontakte.ru/login.php', APost);
end;
APost.Clear;
APost.Add('act=login');
APost.Add('email=' + Edit2.Text);
APost.Add('pass=' + Edit3.Text);
Tmp.Text := IdHTTP1.Post('http://login.vk.com/', APost);
Hash:=copy(Tmp.Text, 286, 56);
APost.Clear;
APost.Add('op=slogin');
APost.Add('s=' + Hash);
Tmp.Text := IdHTTP1.Post('http://vkontakte.ru/login.php', APost);
Memo1.Text:=Tmp.Text;
Tmp.Free;
APost.Free;
end;

Последний раз редактировалось ArkNet; 20.05.2010 в 22:54..
 
Ответить с цитированием

=)))
  #9  
Старый 21.05.2010, 00:21
RedFern.89
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме:
500264

Репутация: 69
Отправить сообщение для RedFern.89 с помощью ICQ
Talking =)))

Интерессно, а как ты загрузишь что-то в класс TStringList, не создаве его в памяти как объект? о_О
в начале напиши:
Tmp := TStringList.Create;
APost := TStringList.Create;
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Блокировка WMID на вывод средств. Роль аттестата при блокировке. N0_oB Платежные системы: Webmoney, Yandex Деньги, РБК Деньги и т. д. 126 14.05.2010 23:04
Продам способ обхода бана групп. AMADEY Покупка, продажа, услуги в Соц. Сетях 20 21.12.2009 17:15
Основные команды командной строчки. Егорыч+++ *nix 65 01.10.2009 17:27
Окно с кнопкой на Api je0n Авторские статьи 1 09.11.2006 02:03



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ