HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

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

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

  #11  
Старый 13.05.2010, 11:15
denjf
Участник форума
Регистрация: 12.11.2008
Сообщений: 146
Провел на форуме:
592199

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

Цитата:
Сообщение от slesh  
снифер в руки и вперед за родину.

CopyMemory(@sBuff,pchar(sBuff1),length(sBuff1));
send(sHwnd, sBuff, Length(sBuff), 0);
recv(sHwnd, rBuff, Length(rBuff), 0);

это код полный пздц.
Отправляй данный сразу из строки, без промежуточного буфера.
А вот когда считываешь, то указывай не Length(rBuff) а размер буфера в байтах. или юзай sizeof
send(sHwnd, sBuff1[1], Length(sBuff), 0);


recv(sHwnd, rBuff, sizeof(rBuff), 0);
Memo1.Lines.Add(rBuff);

PS Только начал изучать винсок.

Вот что вернулось в ответ 訄

В Delphi 7 все работает!!! А в 2010 нихера (((

Последний раз редактировалось denjf; 13.05.2010 в 11:40..
 
Ответить с цитированием

  #12  
Старый 13.05.2010, 11:36
greki_hoy
Познающий
Регистрация: 04.03.2010
Сообщений: 32
Провел на форуме:
32525

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

Цитата:
Сообщение от denjf  
send(sHwnd, sBuff1[1], Length(sBuff), 0);


recv(sHwnd, rBuff, sizeof(rBuff), 0);
Memo1.Lines.Add(rBuff);

PS Только начал изучать винсок.

Вот что вернулось в ответ 訄
странно а должно было быть нарушение доступа
получится примерно так
movsx eax, byte ptr[buffer + 1]
push eax
//... передается не адрес а символ к тому же расширенный в итоге там нечто такого 0x000000df
а запись по такому адресу отловится скорее всего как запись в память отведенную для перехвата нулевых уакзателей а если символ был 0xff получится такой адрес 0xffffffff
напишите так
send(sHwnd, sBuff1, strlen(sBuff), 0);
sBuff1[1] это разыменование а нужен адрес и индексация с нуля не забываем
 
Ответить с цитированием

  #13  
Старый 13.05.2010, 11:54
denjf
Участник форума
Регистрация: 12.11.2008
Сообщений: 146
Провел на форуме:
592199

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

Цитата:
Сообщение от greki_hoy  
странно а должно было быть нарушение доступа
получится примерно так
movsx eax, byte ptr[buffer + 1]
push eax
//... передается не адрес а символ к тому же расширенный в итоге там нечто такого 0x000000df
а запись по такому адресу отловится скорее всего как запись в память отведенную для перехвата нулевых уакзателей а если символ был 0xff получится такой адрес 0xffffffff
напишите так
send(sHwnd, sBuff1, strlen(sBuff), 0);
sBuff1[1] это разыменование а нужен адрес и индексация с нуля не забываем

Проблема не в коде, я поставил Delphi7 все отлично работает, тоже самое в 2010 не хочет не в какую.
 
Ответить с цитированием

  #14  
Старый 13.05.2010, 17:15
denjf
Участник форума
Регистрация: 12.11.2008
Сообщений: 146
Провел на форуме:
592199

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

Цитата:
repeat
FillChar(buf,SizeOf(buf),0);
d:=recv(Socket1,buf,SizeOf(buf),0);

for i:=1 to d do html:=html+utf8toansi(buf[i]);
memo1.Lines.Add(html);
until d<=0;
Пытаюсь получить весь HTML код страницы, получаю но из цикла почему то не выходит.

PS/ Задолбал заторможеный idhttp =)
 
Ответить с цитированием

  #15  
Старый 13.05.2010, 17:23
Chrome~
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
Провел на форуме:
1747641

Репутация: 175
Отправить сообщение для Chrome~ с помощью ICQ
По умолчанию

Цитата:
Сообщение от denjf  
Пытаюсь получить весь HTML код страницы, получаю но из цикла почему то не выходит.

PS/ Задолбал заторможеный idhttp =)
Во первых: idHTTP, это компонент из библиотеки Indy.
Во вторых: ты тут Winsock используешь, а не Indy.
В третьих:
Код:
for i:=1 to d do html:=html+utf8toansi(buf[i]);
memo1.Lines.Add(html);
Это вообще неправильный вывод данных в Memo.

Так что еще раз пересмотри свою мысль и пойми, кто "заторможеный".
 
Ответить с цитированием

  #16  
Старый 13.05.2010, 17:46
denjf
Участник форума
Регистрация: 12.11.2008
Сообщений: 146
Провел на форуме:
592199

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

Цитата:
Сообщение от Chrome~  
Во первых: idHTTP, это компонент из библиотеки Indy.
Во вторых: ты тут Winsock используешь, а не Indy.
В третьих:
Код:
for i:=1 to d do html:=html+utf8toansi(buf[i]);
memo1.Lines.Add(html);
Это вообще неправильный вывод данных в Memo.

Так что еще раз пересмотри свою мысль и пойми, кто "заторможеный".

Я не много не правельно выразил мысль про idhttp, это было сказанно к тому что он заторможенный по сравнению с winsock, поэтому я решил научится работать с winsock.

Код:
for i:=1 to d do html:=html+utf8toansi(buf[i]);
memo1.Lines.Add(html);
Почему не правельно? В мемо я получаю то что надо. Но немогу понять почему цикл так и продолжает работать.
 
Ответить с цитированием

  #17  
Старый 13.05.2010, 18:03
Chrome~
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
Провел на форуме:
1747641

Репутация: 175
Отправить сообщение для Chrome~ с помощью ICQ
По умолчанию

Цитата:
Сообщение от denjf  
Я не много не правельно выразил мысль про idhttp, это было сказанно к тому что он заторможенный по сравнению с winsock, поэтому я решил научится работать с winsock.

Код:
for i:=1 to d do html:=html+utf8toansi(buf[i]);
memo1.Lines.Add(html);
Почему не правельно? В мемо я получаю то что надо. Но немогу понять почему цикл так и продолжает работать.
idHTTP нормально работает, если им правильно пользоваться.
Все очень просто.
Этот код
Код:
repeat
FillChar(buf,SizeOf(buf),0);
d:=recv(Socket1,buf,SizeOf(buf),0);

for i:=1 to d do html:=html+utf8toansi(buf[i]);
memo1.Lines.Add(html);
until d<=0;
есть неправильным в том смысле, что ты постоянно добавляешь данные к переменной html, и выводишь ее в Memo. Получается, что некоторая часть страница в Memo будет отображаться несколько раз. В общем, надо перед цыклом for написать
Код:
html := '';
Цикл продолжает выполняться потому, что нужно в отправляемых заголовках написать не
Код:
Connection:Keep-Alive
А
Код:
Connection: close

Последний раз редактировалось Chrome~; 13.05.2010 в 18:11..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi Winsock 1.1 GET Sams С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 9 05.03.2010 00:45
Траблы с Internet Connection :\ .::f-duck::. Болталка 2 16.08.2009 18:25
Чуть не понятно о winsock на делфи diznt С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 8 03.04.2009 21:12



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


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




ANTICHAT.XYZ