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..
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|