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

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

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

Загрузка бинарного файла на http-сервер
  #1  
Старый 07.02.2010, 00:46
lukmus
Постоянный
Регистрация: 18.11.2009
Сообщений: 709
Провел на форуме:
1410429

Репутация: 214


По умолчанию Загрузка бинарного файла на http-сервер

Как браузер закачивает файл на web-сервер, на примере vk0нтакта?

Пытался анализировать трафик, но осталось слишком много белых пятен.

Как обстоят дела:
1. в браузере выбираем файл -> браузер формирует POST-запрос на сервер 'key=profile_photo_flood&item_id=@@USER_ID@@' + заголовок с cookie
2. браузер по TCP походу отправляет сам бинарник, на все тот же 80-ый порт cs-сервера, имя которого можно прочитать на странице загрузки, в строке:
Цитата:
<form enctype="multipart/form-data" method="post" action="http://cs9832.vkontakte.ru/upload.php?act=profile&mid=2397981&hash=9193265379 0112b18b476684f5faec10&rhash=52d6a567b8ffd6451b9fa 0ce9b0b965a&vk=" name="editPhoto" id="editPhoto">
3. обменявщись OK-ями, браузер формирует такой GET-запрос:
Цитата:
GET /profileEdit.php?page=done_photo&mid=2397981&server =9832&photo=eb231fcx&hash=91932653790112b18b476684f5faec10&message_cod e=2 + cookie
Все параметры этого запроса, кроме photo мы можем узнать из страницы загрузки.

Вопрос: откуда береться photo? Как собственно закачивать файл, тупо открывать сокет, коннектиться к серверу и кидать содержимое бинарника?
 
Ответить с цитированием

  #2  
Старый 07.02.2010, 01:20
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

lukmus Вы вроде собирались прочитать RFC2616 про HTTP протокол. Там будет ссылка на другой рфц, который собственно интересует вас сейчас RFC1867 (http://www.faqs.org/rfcs/rfc1867.html) А параметр photo видимо отдается после загрузки фотографии. Скорее всего в хидере Location

З.Ы, Если рфц - сложно, погуглите на тему "multipart/form-data"
З.Ы.Ы. Перестаньте плодить темы, для таких вопросов есть прикрепленные темы
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm
 
Ответить с цитированием

  #3  
Старый 16.02.2010, 05:00
lukmus
Постоянный
Регистрация: 18.11.2009
Сообщений: 709
Провел на форуме:
1410429

Репутация: 214


По умолчанию

Да простит меня Gifts, но я продолжу ковырять эту тему.
Никак не могу догнать в каком же все-таки запросе посылаеться содержимое файла.
Вот дамп пакета, как это делает ФФ:

Вот как делаю я (ruby):
Код:
 
Class Account
...
def create(uri, pars)
    post = Net::HTTP::Post.new(uri.path)
    boundary = (rand*1000000000).to_i.to_s
    post.set_content_type("multipart/form-data", {:boundary => boundary})
    
    body = ""
    pars.each do |key, value|
      body << "--#{boundary}\r\n"
      append_post_parameter(body, key, value)
    end
    body << "--#{boundary}--"
    
    post.content_length = body.length
    post.body = body 
    return post
  end
  
  def append_post_parameter(body, key, value)    
    if value.class == File
      body << "Content-disposition: form-data; name=\"#{key}\";\ 
filename=\"#{File.basename(value.path)}\"\r\n"
      body << "Content-type: multipart/form-data;\r\n"
      body << "Cookie: remixlang=0; remixchk=5; remixsid=#{@cook}; remixclosed_tabs=0\r\n"
      body << "User-agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)\r\n"
      body << "Content-Transfer-Encoding: binary\r\n\r\n"
      body << value.binmode.read
      body << "\r\n"
    else
      body << "Content-disposition: form-data; name=\"#{key}\"\r\n\r\n"
      body << "#{value}\r\n"
    end
  end

def upload_ava()
#Тут идет какой-то предварительный запрос, не знаю его смысл, я просто повторил за браузером
                  @http=Net::HTTP.new('vk.com', 80)
                   path="/captchaFlood.php"
	data="key=profile_photo_flood&item_id=1.....4"
	resp, data = @http.post(path,data,self.get_headers)
#метод класса get_headers создает стандартный для запроса заголовок, с куками и прочей фигней
#######################
#Сам запрос
uri = URI.parse('http://vk.com/upload.php?act=profile&mid=1........4&hash=2..........74&rhash=a..........de&vk=1')    
post = self.create(uri, { :file => File.open("1.jpg"), :another => "parameter" })
res = Net::HTTP.start("cs9651.vk.com", 80) do |http|
  http.request(post)
end

end
end#class

acc=Account.new(login,pass)
acc.upload_ava
в результате res возвращает что-то типа
Цитата:
#<Net::HTTPOK:0xb803d410>
Security Breach2
и конечно ничего не работает

Последний раз редактировалось lukmus; 16.02.2010 в 05:07..
 
Ответить с цитированием

  #4  
Старый 16.02.2010, 05:23
Nightmarе
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
Провел на форуме:
5749763

Репутация: 1680


Отправить сообщение для Nightmarе с помощью ICQ
По умолчанию

имха сначало с простым аплоадером файлов надо разобраться, а уже потом проводить тесты на вконтакте.
У ВК совсем другие алгоритмы нежли у рядовых сайтов.
 
Ответить с цитированием

  #5  
Старый 16.02.2010, 05:32
lukmus
Постоянный
Регистрация: 18.11.2009
Сообщений: 709
Провел на форуме:
1410429

Репутация: 214


По умолчанию

Цитата:
Сообщение от Nightmarе  
имха сначало с простым аплоадером файлов надо разобраться, а уже потом проводить тесты на вконтакте.
У ВК совсем другие алгоритмы нежли у рядовых сайтов.
функции def create(uri, pars) и def append_post_parameter(body, key, value) я позаимствовал с одного блога, они как раз и разбираються с обычным сайтом.
Буду очень благодарен за скрипт на php, perl, ruby итд который просто загружает аватарку, по кукам, логину:паролю, hash:rhash итд
 
Ответить с цитированием

  #6  
Старый 16.02.2010, 08:17
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

Даже если и напишем, то вряд ли будем на голых сокетах писать - либо курл, либо лвп)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Живые прокси xdx ICQ 111 15.04.2007 13:10
Proxy Kozak-Scv Анонимность 2 11.02.2007 17:28
Коды состояния HTTP - Коды ошибок http сервера D=P=CH= MOD= *nix 6 15.10.2006 20:47



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


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




ANTICHAT.XYZ