PDA

Просмотр полной версии : [Delphi] Закачка файлов через сокеты


Navern
03.02.2007, 15:51
День добрый. Помогите, кто чем может, пожалуйста. Есть такая проблема:

Написал брут (как мог, но зато сам) для веб-формы. Отправляю POST-запрос на сервак, оттуда мне приходит ответ: хэдер, где находится нужная мне инфа (если в хэдере есть спец-знак, то значит пароль не подходит) + тело документа.

Как мне сделать так, чтобы после получения хэдера вся страница дальше не качалась? Насколько я понял, именно из-за этого и возникают проблемы со скоростью, поскольку у меня (я мерял) 14-16 вариантов в минуту, а, например, в wwwhack для той же формы и при той же скорости соединения 90-100 вариантов в минуту.

// Ответ от сервера приходит вот так:

procedure TForm1.ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
begin
FResult:=FResult+Socket.ReceiveText;
end;
Вот как мне из Socket.ReceiveText скачать только первые 500-600 символов? Этого должно хватить, чтобы отловить символ. Ну, или как сделать поиск нужного символа прямо "на лету" во время качалки?

Если нужна какие-то дополнительные данные по исходнику - я дам.

qPhoenix
03.02.2007, 17:55
procedure TForm1.ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
begin
FResult:=FResult+Socket.ReceiveText;
if pos('искомые_данные', FResult)>0 then ClientSocket.Close;
end;

W!z@rD
04.02.2007, 14:21
1. Вот как мне из Socket.ReceiveText скачать только первые 500-600 символов?
2. Ну, или как сделать поиск нужного символа прямо "на лету" во время качалки?

1. var i:Word;
I:=i+Length(Socket.ReceiveText);
if i=>500 then ClentSocket1.Close;
итог: заводишь новую переменную (почeму Word а не SmallInt/Integer? длинна не может быть отрицательной!!!)
2. var str:string;
str:=Socket.ReceiveText;
if pos('authorization ok',LowerCase(str))>0 then ClientSocket1.Close;
итог: в str помещаем данные полученные от сокета, функцией pos ищем данные, при том если функция возвращает >0 значит дынне есть. притом все данные переводятся в нижний регистр...

Navern
04.02.2007, 16:13
Спасибо, ребят, буду пробовать.