2 JeDaSe когда то писал, но на PHP. ВОт код, его бес труда сможешь перевести на Delphi (если знаешь php *CRAZY*) PHP: function BuildHeader($method,$page,$host,$ref,$cookie,$data) { $ret="{$method} /{$page} HTTP/1.0\r\n". "Host: {$host}\r\n". "Referer: {$ref}\r\n"; if (!empty($cookie)>0) { $ret.="Cookie: {$cookie}\r\n"; } if ($method=='POST') { $ret.="Content-Length: ".strlen($data)."\r\n". "Content-Type: application/x-www-form-urlencoded\r\n\r\n{$data}\r\n"; } else $ret.="\r\n"; return $ret; } function Login($email,$pass) { $email=htmlspecialchars($email); $pass=htmlspecialchars($pass); $data="success_url=&fail_url=&try_to_login=1&email={$email}&pass={$pass}"; $head=BuildHeader('POST','login.php','vkontakte.ru','http://vkontakte.ru/login.php','',$data); $page=LoadPage('vkontakte.ru',80,$head); if ($page) { if ($id=okLogin($page)) { if ($cookie=ParseCookie($page)) { $c=''; for ($x=0;$x<count($cookie);$x++) $c.=$cookie[$x].'; '; $_SESSION[$id]=$c; header("Location: ?id={$id}"); die(); } else ShowError('Get COokie Error',true); } else ShowError('Login Error',true); } else ShowError('getPage Error',true); return false; }
JeDaSe, приведу пример : Code: var wData: WSAData; S: TSocket; addr: sockaddr_in; login, pass: string[30]; n: integer; postdata, sendbuff: string; const fact: shortstring= 'HTTP/1.1 302 Found'; begin Login := Edit1.Text; Pass:= Edit2.Text; If (login='') or (pass = '') then begin MessageDLG('No login & pass!',mtERROR,[mbOK],0); exit; end; If WSAStartUp($0101, wData) <> 0 then begin MessageDLG('can''t include winsock library',mtError,[mbOK],0); exit; end; s:= Socket(AF_INET, Sock_STREAM, ipPROTO_TCP); If S = Invalid_Socket then begin ShowMessage('socket error #'+IntToStr(WSAGetLastError)); CloseSocket(s); Exit; end; FillChar(addr, sizeOF(sockaddr_in),0); Addr.sin_family:=af_INET; Addr.sin_port:=hTons(80); Addr.sin_addr.S_addr:=Inet_ADDR('95.168.160.213'); // ip нужного тебе сайта Check(Connect(s, addr, SizeOf(TSockAddr))); postdata:= 'username='+Login+'&password='+Pass; // данные для отправки. Смотри сниффером SendBuff := Snd+ // пакет. опять же смотри сниффером. IntToStr(Length(PostData))+#13#10#13#10+postdata; send(s, SendBuff[1],Length(sendBuff),0); recv(s, buff, ToRecieve, 0); Check(ShutDown(s, sd_Both)); Check(CloseSocket(s)); Memo1.Text:=Buff; Memo1.SetFocus; WSACleanUp; If pos(fact, memo1.text) > 0 then // good ! else // bad! ... Это лишь малая часть кода, насколько я знаю для логина вконтакте нужно ещё и get-запрос отправить, думаю сам дальше по аналогии размерёшься.
Сохранение компонента в файл, происходит по ниже приведенному коду, но после этого даже сама программа не может к нему обраться так как он блокирован записью. Просьба написать код который сохранял бы компонент в файл и при этом не блокировал бы работу с ним. PHP: procedure TForm1.StoreClick(Sender: TObject); var W: TWriter; begin W := TWriter.Create( TFileStream.Create('путь до файла', fmCreate), 4096); W.WriteSignature; W.WriteComponent(Spin); W.Free; end;
Появился вопрос.Как в Делфи в TWebBrowser'e ввести текст в определенную форму? Тоесть открываю сайт,нахожу определенную форму и вставляю туда текст. Я не прошу ничего писать за меня.Только подсказку действий.Заранее спасибо.
1. Парсить полученный исходник, и вставлять текс непосредственно туда. 2ю Передача на сервер данных методом POST PHP: procedure TForm1.PostWithWebBrowser(PostString: string; URL: OleVariant); var Data: Pointer; PostData: OleVariant; Flags, TargetFrame, Headers: OleVariant; begin PostData := VarArrayCreate([0, Length(PostString) - 1], varByte); Data := VarArrayLock(PostData); try Move(PostString[1], Data^, Length(PostString)); finally VarArrayUnlock(PostData); end; Flags := EmptyParam; TargetFrameName := EmptyParam; Headers := EmptyParam; WebBrowser1.Navigate2(URL, Flags, TargetFrame, PostData, Headers); end; 3. Заполнять форму PHP: function FillForm(WebBrowser: TWebBrowser; FieldName: string; Value: string): Boolean; var i, j: Integer; FormItem: Variant; begin Result := False; if WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 then begin Exit; end; for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do begin FormItem := WebBrowser.OleObject.Document.forms.Item(I); for j := 0 to FormItem.Length - 1 do begin try if FormItem.Item(j).Name = FieldName then begin FormItem.Item(j).Value := Value; Result := True; end; except Exit; end; end; end; end; procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin if FillForm(WebBrowser1, 'homepage', 'http://www......) = False then ShowMessage('Error. Field not available or no Form found.'); end; procedure TForm1.WebBrowser1ProgressChange(Sender: TObject; Progress, ProgressMax: Integer); begin if ProgressMax = 0 then begin label1.Caption := ''; Exit; end; try if (Progress <> -1) and (Progress <= ProgressMax) then label1.Caption := IntToStr((Progress * 100) div ProgressMax) + '% loaded...' else label1.Caption := ''; except on EDivByZero do Exit; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Webbrowser1.Navigate('http://www.......'); Caption := Webbrowser1.OleObject.Document.Title; end;
5005 статей по Delphi. Статья "Как автоматически заполнить поля формы в IE " Вбивай в поисковик и сразу найдешь. "Как работать со всеми ячейками таблицы в WebBrowsere"
Подскажите пожалуйсто, как с помощью delphi можно записать данные в файл например есть файл svhosts Туда надо записать 10.179.34.0 localhost
очень просто - запускаешь делфи, в меню File выбираешь Open. Там откроется диалоговое окно, где надо выбрать путь к файлу svhosts(или hosts смотря что нужно). Не забудь указать тип файла при выборе - any file. Ну а потом дописываешь эту свою строчку Самое главное - нажми потом "Save" ато все старания будут напрасны ну а вообще погугли примеры с: assignfile, append, write, closefile
SeNaP, Code: var f: TextFile; begin AssignFile(f, 'имя файла'); try Append(f); writeln(f, 'текст для записи'); finally CloseFile(f); И да кстати, ты уверен, что тебе нужен файл svhosts(не hosts?). Получение директории файла hosts: Code: Buff: array[1..MAX_PATH] of char; begin GetSystemDirectory(@buff, MAX_PATH); lstrcat(@buff, '\drivers\etc\hosts');
SeNaP, попробую : try..finally - здесь не обязательно, раз ты 0 ). Code: var f: TextFile; // переменная типа "text" begin AssignFile(f, 'имя файла'); // создаём связь с файлом Append(f); // Append -открыть для "дозаписи", указатель переместится в конец файла { Rewrite - создать заново, файл открывается для записи, указатель в начало ; Reset - открыть для чтения. } writeln(f, 'текст для записи'); // записываем строку в наш уже открытый файл CloseFile(f); // закрываем файл Code: Buff: array[1..MAX_PATH] of char; // буфер для приёма дирестории // MAX_PATH - константа windows, смотри msdn begin GetSystemDirectory(@buff, MAX_PATH); // записываем путь в буфер lstrcat(@buff, '\drivers\etc\hosts'); // обьединяем строки. смотри msdn опять же.
intNet, в прицепе я понял )) я вот мучаюсь записать данные в hosts. Не как не могу определить нахождение 8(
SeNaP, короче вот код, полностью на API, редактируй на свой вкус : Code: program samp; uses windows; const s:PChar = 'Данные для записи типа'; var f: cardinal; dir: array[1..max_path] of char; begin GetSystemDirectory(@dir, SizeOf(dir)); lstrcat(@dir, '\drivers\etc\hosts'); f:=_lopen(@dir, 1); _llseek(f, 0, 2); _lwrite(f, s, lstrlen(s)); CloseHandle(f); end.
Я с делфи толком не знаком. Мне надо замутить приложение. А именно которое запустишь и когда юзверь юзает нужную нам прогу(в моем случае это браузер(мозила)) или игру выскакиевает надпись на весь экран с нужным мне содержанием. Ну и естественно нужно чтоб вырубить этот процес было не просто. Кто поможет?
Ребята облазил пол инета, просматрел десятки примеров но всё не получалается. Ещё писали про глюки Indy У меня стоит delphi 7. Вопрос: Как послать сайту куки? Надо послать на сайт определённые куки "s=123456" Code: IdHTTP1.CookieManager:=IdCookiemanager1; IdHTTP1.AllowCookies:=true; IdHTTP1.HandleRedirects:=true; idhttp1.CookieManager.AddCookie('s=123456'); try Memo1.Lines.Text := IdHTTP1.Get('http://yandex.ru/'); except Нефига не получаеться, плиз подскажите что не так! Большое спасибо!
Всем привет. Ищу советов и наставлений. Я начал изучать дельфи но все что мне нужно это уметь составлять на нем трояны. Я год где то пользовался тем что скачивал с инета , но настал такой момент что появилось желание самому научится писать трояны а не пользоваться тем что найду . Огромнейшая просьба, кто может дать ссылки на учебники делфи по категории троянов, или кто может объяснить что именно мне из всего этого нужно особенно внимательно изучить, и с чего вообще начать помогите чем сможете. Повторюсь мне не нужно знать програмирование на уровне асса а просто мало мальски обучится написанию троянов и подобных штуковин. Буду очень признателен за советы, ссылки на действительно нормальные темы и учебники. Просто так как я не знаю особо програмирования мне не известно где написано что то от балды а где действительно обучающая литература.