ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

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

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

[Delphi] Winsock 2.0; multipart/form-data
  #1  
Старый 25.05.2010, 00:05
RedFern.89
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме:
500264

Репутация: 69
Отправить сообщение для RedFern.89 с помощью ICQ
Question [Delphi] Winsock 2.0; multipart/form-data

пытался отправить граффити вконтакт по сокетам.. как составить правильно запрос?

вот пример запроса, который был переснят с ВК через CommView.

Код:
var
  afile, signature, boundary,
  cookie, url, Headers, ret,
  multi, _post : string;
begin
 AFile := 'd:\~tmpPic.png';
// Создаем сигнатуру файла по формуле file -> content -> Base64 -> Copy 1024 bytes -> MD5
 Signature := StrTobase64(file_get_contents(AFile), 0);  // Получаем контент и кодируем в base64
 Signature := Copy(Signature, 0, 1024); // Копируем первые 1024 байта
 Signature := GetMD5(Signature); // Хэшируем в MD5

  url := 'http://vkontakte.ru/graffiti.php?to_id=46405451&group_id=0';
  cookie := 'remixsid=куки; remixchk=5';
  boundary := '----OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST';

  Headers :=
      'POST /graffiti.php?to_id=46405451&group_id=0 HTTP/1.0' + #13#10 +
      'User-Agent: Mozilla/4.8 [en](Windows NT 5.0; U)'       + #13#10 +
      'Accept: Accept: text/html;q=0.9,*/*;q=0.8'             + #13#10 +
      'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7'      + #13#10 +
      'Accept-Language: ru,en-us;q=0.7,en;q=0.3'              + #13#10 +
      'Connection: close'                                     + #13#10 +
      'Referer: http://vkontakte.ru/graffiti.swf?12'          + #13#10 +
      'Host: ' + GetHost(url)                                 + #13#10 +
      'Cookie: ' + cookie                                     + #13#10 +
      'Content-Length: con-len'                               + #13#10 +
      'Content-Type: multipart/form-data; boundary=' + boundary +  #13#10#13#10;

      multi :=
      boundary + #13#10 +
      'Content-Disposition: form-data; name="Signature"' + #13#10#13#10 +
      signature + #13#10 + boundary + #13#10 +
      'Content-Disposition: form-data; name="Filedata"; filename="graffiti.png"' + #13#10 +
      'Content-Type: image/png' + #13#10#13#10 +
      file_get_contents(AFile) + #13#10#13#10 + boundary;

      Headers := StringReplace(Headers, 'con-len', IntToStr(Length(multi)), []);

      _post := headers + multi;

      send_packs(GetIPAddress(GetHost(url)), 80, _post, ret);

      memo2.Text := _post;
      memo1.Text := ret;
end;
сервак ответил мне на это таким текстом:

PHP код:
HTTP/1.1 302 Found
Server
nginx/0.7.59
Date
Mon24 May 2010 20:03:09 GMT
Content
-Typetext/htmlcharset=windows-1251
Connection
close
X
-Powered-ByPHP/5.2.6-1+lenny3
Pragma
no-cache
Cache
-controlno-store
Location
graffiti.php?act=last
Vary
Accept-Encoding
Content
-Length
я перешел по локации, пришедшей мне в заголовках ответа: http://vkontakte.ru/graffiti.php?act=last и у меня открылся рисовальщик граффити вместо нужной страницы с кнопкой отправить.. что не так составленно в запросе?

Последний раз редактировалось RedFern.89; 25.05.2010 в 00:11..
 
Ответить с цитированием

  #2  
Старый 25.05.2010, 00:47
Chrome~
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
Провел на форуме:
1747641

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

Если меня не изменяет память, то везде должно быть не
Код:
boundary + #13#10
а
Код:
'--' + boundary + #13#10
А в самом конце не:
Код:
#13#10#13#10 + boundary
а
Код:
#13#10 + '--' + boundary + '--' + #13#10
Возможно присутствую еще какие-то незначительные ошибки.

Также, этот код относится к не наилучшему стилю:
Код:
Headers := StringReplace(Headers, 'con-len', IntToStr(Length(multi)), []);
Это нельзя использовать в String:
Код:
file_get_contents(AFile);

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

  #3  
Старый 25.05.2010, 01:17
RedFern.89
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме:
500264

Репутация: 69
Отправить сообщение для RedFern.89 с помощью ICQ
По умолчанию

вот запрос выдранный из graffiti.swf

Код:
POST /graffiti.php?to_id=52505311&group_id=0 HTTP/1.0
Connection: close
Content-Type: multipart/form-data; boundary=----OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST
Content-Length: 18773
Host: vkontakte.ru
Accept: text/html;q=0.9,*/*;q=0.8
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Accept-Language: ru,en-us;q=0.7,en;q=0.3
User-Agent: Mozilla/4.8 [ru](Windows NT 5.0; U)
Cookie: remixsid=cookies; remixchk=5

------OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST
Content-Disposition: form-data; name="Signature"

a48e6e3b4b07f8e5a668ac2742998c42
------OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST
Content-Disposition: form-data; name="Filedata"; filename="d:\~tmpPic.png"
Content-Type: image/png

тело файла

------OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST--
 
Ответить с цитированием

  #4  
Старый 25.05.2010, 01:33
Chrome~
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
Провел на форуме:
1747641

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

Цитата:
Сообщение от RedFern.89  
вот запрос выдранный из graffiti.swf

Код:
POST /graffiti.php?to_id=52505311&group_id=0 HTTP/1.0
Connection: close
Content-Type: multipart/form-data; boundary=----OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST
Content-Length: 18773
Host: vkontakte.ru
Accept: text/html;q=0.9,*/*;q=0.8
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Accept-Language: ru,en-us;q=0.7,en;q=0.3
User-Agent: Mozilla/4.8 [ru](Windows NT 5.0; U)
Cookie: remixsid=cookies; remixchk=5

------OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST
Content-Disposition: form-data; name="Signature"

a48e6e3b4b07f8e5a668ac2742998c42
------OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST
Content-Disposition: form-data; name="Filedata"; filename="d:\~tmpPic.png"
Content-Type: image/png

тело файла

------OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST--
Ну так ты присмотрись к этому рядку:
Код:
Content-Type: multipart/form-data; boundary=----OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST
и этому
Код:
------OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST
Content-Disposition: form-data; name="Signature"
 
Ответить с цитированием

  #5  
Старый 25.05.2010, 01:35
RedFern.89
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме:
500264

Репутация: 69
Отправить сообщение для RedFern.89 с помощью ICQ
По умолчанию

и реально)) Спасибо )) с этими минусами (тире) все мозги кипят просто уже! оо

Последний раз редактировалось RedFern.89; 25.05.2010 в 01:59..
 
Ответить с цитированием

  #6  
Старый 25.05.2010, 13:11
Berman
Участник форума
Регистрация: 20.02.2010
Сообщений: 121
Провел на форуме:
496930

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

Разве нет api метода для загрузки граффити?
 
Ответить с цитированием

  #7  
Старый 25.05.2010, 13:30
RedFern.89
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме:
500264

Репутация: 69
Отправить сообщение для RedFern.89 с помощью ICQ
По умолчанию

еть! но всеравно ты заливаешь файл на сервер. Дело не в сложности использования методов (api или стандартный вк метод). Дело в основе
 
Ответить с цитированием

  #8  
Старый 26.05.2010, 02:04
Jingo Bo
Познающий
Регистрация: 25.10.2009
Сообщений: 97
Провел на форуме:
604635

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

Цитата:
Это нельзя использовать в String
Гыгы, можно, результат будет тот же (P.S. Путаешь стандартные null-terminated строки, у Delphi свой формат, к сожалению)
 
Ответить с цитированием

  #9  
Старый 26.05.2010, 09:11
Chrome~
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
Провел на форуме:
1747641

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

Цитата:
Сообщение от Jingo Bo  
Гыгы, можно, результат будет тот же (P.S. Путаешь стандартные null-terminated строки, у Delphi свой формат, к сожалению)
Я не исключаю что можно использовать AnsiString, но советую использовать либо array of char, либо array of byte. Так будет более правильно.

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

  #10  
Старый 27.05.2010, 23:18
Gar|k
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме:
991929

Репутация: 395


По умолчанию

RedFern.89 мне кажется через пару лет у тебя будет программа с интерфейсом и функциями вконтакта которая будет отправлять HTTP запросы на сервер вконтакта напрямую, а не через wеb интерфейс...

RedFern.89 учи js php mySQL и переходи уже на веб кодинг )
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дедики (Dedicated servers) zero0000 Хостинг, Dedicated, VDS, Сервера - Покупка, продажа 8 11.03.2010 21:54
Прошивка nokia 5310 (Вопрос) StpServer Сотовый фрикинг 15 04.02.2010 00:49
[Delphi] Задержка в WinSock между send() и recv() GlooK С/С++, C#, Delphi, .NET, Asm 9 29.09.2009 18:26
Веб 2.0 и Веб 3.0. Будущее Интернета. SK | Heaton Мировые новости 5 13.06.2007 02:07



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


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




ANTICHAT.XYZ