ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|
[Delphi] Winsock 2.0; multipart/form-data |

25.05.2010, 00:05
|
|
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме: 500264
Репутация:
69
|
|
[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: Mon, 24 May 2010 20:03:09 GMT
Content-Type: text/html; charset=windows-1251
Connection: close
X-Powered-By: PHP/5.2.6-1+lenny3
Pragma: no-cache
Cache-control: no-store
Location: graffiti.php?act=last
Vary: Accept-Encoding
Content-Length: 0
я перешел по локации, пришедшей мне в заголовках ответа: http://vkontakte.ru/graffiti.php?act=last и у меня открылся рисовальщик граффити вместо нужной страницы с кнопкой отправить.. что не так составленно в запросе?
Последний раз редактировалось RedFern.89; 25.05.2010 в 00:11..
|
|
|

25.05.2010, 00:47
|
|
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
Провел на форуме: 1747641
Репутация:
175
|
|
Если меня не изменяет память, то везде должно быть не
а
Код:
'--' + 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..
|
|
|

25.05.2010, 01:17
|
|
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме: 500264
Репутация:
69
|
|
вот запрос выдранный из 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--
|
|
|

25.05.2010, 01:33
|
|
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
Провел на форуме: 1747641
Репутация:
175
|
|
Сообщение от 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"
|
|
|

25.05.2010, 01:35
|
|
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме: 500264
Репутация:
69
|
|
и реально)) Спасибо )) с этими минусами (тире) все мозги кипят просто уже! оо 
Последний раз редактировалось RedFern.89; 25.05.2010 в 01:59..
|
|
|

25.05.2010, 13:11
|
|
Участник форума
Регистрация: 20.02.2010
Сообщений: 121
Провел на форуме: 496930
Репутация:
60
|
|
Разве нет api метода для загрузки граффити?
|
|
|

25.05.2010, 13:30
|
|
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме: 500264
Репутация:
69
|
|
еть! но всеравно ты заливаешь файл на сервер. Дело не в сложности использования методов (api или стандартный вк метод). Дело в основе
|
|
|

26.05.2010, 02:04
|
|
Познающий
Регистрация: 25.10.2009
Сообщений: 97
Провел на форуме: 604635
Репутация:
15
|
|
Это нельзя использовать в String
Гыгы, можно, результат будет тот же  (P.S. Путаешь стандартные null-terminated строки, у Delphi свой формат, к сожалению)
|
|
|

26.05.2010, 09:11
|
|
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
Провел на форуме: 1747641
Репутация:
175
|
|
Сообщение от Jingo Bo
Гыгы, можно, результат будет тот же  (P.S. Путаешь стандартные null-terminated строки, у Delphi свой формат, к сожалению)
Я не исключаю что можно использовать AnsiString, но советую использовать либо array of char, либо array of byte. Так будет более правильно.
Последний раз редактировалось Chrome~; 26.05.2010 в 09:14..
|
|
|

27.05.2010, 23:18
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме: 991929
Репутация:
395
|
|
RedFern.89 мне кажется через пару лет у тебя будет программа с интерфейсом и функциями вконтакта которая будет отправлять HTTP запросы на сервер вконтакта напрямую, а не через wеb интерфейс...
RedFern.89 учи js php mySQL и переходи уже на веб кодинг )
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|