ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

31.05.2009, 16:37
|
|
Познающий
Регистрация: 31.05.2009
Сообщений: 68
Провел на форуме: 1271980
Репутация:
19
|
|
JeDaSe, приведу пример :
Код:
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-запрос отправить, думаю сам дальше по аналогии размерёшься.
|
|
|

31.05.2009, 20:39
|
|
Участник форума
Регистрация: 25.05.2007
Сообщений: 290
Провел на форуме: 1740746
Репутация:
435
|
|
Сохранение компонента в файл, происходит по ниже приведенному коду, но после этого даже сама программа не может к нему обраться так как он блокирован записью. Просьба написать код который сохранял бы компонент в файл и при этом не блокировал бы работу с ним.
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;
|
|
|

31.05.2009, 21:45
|
|
Участник форума
Регистрация: 15.05.2008
Сообщений: 166
Провел на форуме: 2591223
Репутация:
128
|
|
Появился вопрос.Как в Делфи в TWebBrowser'e ввести текст в определенную форму?
Тоесть открываю сайт,нахожу определенную форму и вставляю туда текст.
Я не прошу ничего писать за меня.Только подсказку действий.Заранее спасибо.
|
|
|

01.06.2009, 00:14
|
|
Участник форума
Регистрация: 25.05.2007
Сообщений: 290
Провел на форуме: 1740746
Репутация:
435
|
|
Сообщение от fatalo
Появился вопрос.Как в Делфи в 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;
|
|
|

01.06.2009, 00:24
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
5005 статей по Delphi. Статья "Как автоматически заполнить поля формы в IE "
Вбивай в поисковик и сразу найдешь.
"Как работать со всеми ячейками таблицы в WebBrowsere"
|
|
|

01.06.2009, 15:17
|
|
Участник форума
Регистрация: 07.08.2008
Сообщений: 281
Провел на форуме: 3300342
Репутация:
165
|
|
Подскажите пожалуйсто, как с помощью delphi можно записать данные в файл
например есть файл svhosts
Туда надо записать
10.179.34.0 localhost
|
|
|

01.06.2009, 17:03
|
|
Участник форума
Регистрация: 20.12.2007
Сообщений: 295
Провел на форуме: 1777055
Репутация:
347
|
|
Сообщение от SeNaP
Подскажите пожалуйсто, как с помощью delphi можно записать данные в файл
например есть файл svhosts
Туда надо записать
10.179.34.0 localhost
очень просто - запускаешь делфи, в меню File выбираешь Open. Там откроется диалоговое окно, где надо выбрать путь к файлу svhosts(или hosts смотря что нужно  ). Не забудь указать тип файла при выборе - any file. Ну а потом дописываешь эту свою строчку 
Самое главное - нажми потом "Save" ато все старания будут напрасны
ну а вообще погугли примеры с:
assignfile, append, write, closefile
Последний раз редактировалось bons; 01.06.2009 в 17:09..
|
|
|

01.06.2009, 17:22
|
|
Познающий
Регистрация: 31.05.2009
Сообщений: 68
Провел на форуме: 1271980
Репутация:
19
|
|
SeNaP,
Код:
var
f: TextFile;
begin
AssignFile(f, 'имя файла');
try
Append(f);
writeln(f, 'текст для записи');
finally
CloseFile(f);
И да кстати, ты уверен, что тебе нужен файл svhosts(не hosts?).
Получение директории файла hosts:
Код:
Buff: array[1..MAX_PATH] of char;
begin
GetSystemDirectory(@buff, MAX_PATH);
lstrcat(@buff, '\drivers\etc\hosts');
|
|
|

01.06.2009, 17:43
|
|
Участник форума
Регистрация: 07.08.2008
Сообщений: 281
Провел на форуме: 3300342
Репутация:
165
|
|
Да ксте как раз он и нужен hosts 
|
|
|

01.06.2009, 17:49
|
|
Участник форума
Регистрация: 07.08.2008
Сообщений: 281
Провел на форуме: 3300342
Репутация:
165
|
|
intNet, можеш по подробние написать и обьяснить ? 
а то я в delphi полный 0
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|