Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
[Delphi] Закачка файлов через сокеты |

03.02.2007, 15:51
|
|
Новичок
Регистрация: 30.01.2007
Сообщений: 17
Провел на форуме: 52018
Репутация:
2
|
|
[Delphi] Закачка файлов через сокеты
День добрый. Помогите, кто чем может, пожалуйста. Есть такая проблема:
Написал брут (как мог, но зато сам) для веб-формы. Отправляю POST-запрос на сервак, оттуда мне приходит ответ: хэдер, где находится нужная мне инфа (если в хэдере есть спец-знак, то значит пароль не подходит) + тело документа.
Как мне сделать так, чтобы после получения хэдера вся страница дальше не качалась? Насколько я понял, именно из-за этого и возникают проблемы со скоростью, поскольку у меня (я мерял) 14-16 вариантов в минуту, а, например, в wwwhack для той же формы и при той же скорости соединения 90-100 вариантов в минуту.
// Ответ от сервера приходит вот так:
Код:
procedure TForm1.ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
begin
FResult:=FResult+Socket.ReceiveText;
end;
Вот как мне из Socket.ReceiveText скачать только первые 500-600 символов? Этого должно хватить, чтобы отловить символ. Ну, или как сделать поиск нужного символа прямо "на лету" во время качалки?
Если нужна какие-то дополнительные данные по исходнику - я дам.
Последний раз редактировалось Navern; 03.02.2007 в 15:58..
|
|
|

03.02.2007, 17:55
|
|
Banned
Регистрация: 15.12.2005
Сообщений: 95
Провел на форуме: 1509352
Репутация:
132
|
|
Код:
procedure TForm1.ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
begin
FResult:=FResult+Socket.ReceiveText;
if pos('искомые_данные', FResult)>0 then ClientSocket.Close;
end;
|
|
|

04.02.2007, 14:21
|
|
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме: 1892597
Репутация:
836
|
|
Сообщение от Navern
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 значит дынне есть. притом все данные переводятся в нижний регистр...
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
Последний раз редактировалось Dr.Check; 04.02.2007 в 14:31..
|
|
|

04.02.2007, 16:13
|
|
Новичок
Регистрация: 30.01.2007
Сообщений: 17
Провел на форуме: 52018
Репутация:
2
|
|
Спасибо, ребят, буду пробовать.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|