Добрый день. Я делаю инъекцию текста в веб данные на стороне сервера, однако на стороне клиента, в веб браузере данные отправленные сервером отображаются не полностью (данные отображаемые браузером урезаются на длину вставленной строки) Это chunked данные. Я сохранил вывод wireshark для оригинальной страницы, а также для страницы с произведенной инъекцией (разной длинны). А также скрины того, что отображает браузер. Если не сложно, посмотрите их... Если кто знает? от чего зависит такое поведение браузера? и как мне с этим бороться? Что подкорректировать в пакетах, чтоб браузер корректно отображал сформированную мной страницу? пароль к архиву wireshark_1234_wasm http://rapidshare.com/files/455647198/wireshark.zip
опишите без этих неясных дампов и скриншотов что вы делаете и чего ожидаете конкретно что куда идет и как подменяется
Неясных дампов???? ..... Что я делаю? На стороне сервера, где работает apache, произвожу инъекцию данных в веб страницу, которую запрашивает клиент. Далее, всё что происходит..видно по скринам и по дампам wireshark которые я выложил. Чего ожидаю? ожидаю что веб браузер клиента, отобразит веб страницу(в которую произведена инъекция) полностью! без урезания.(как я и описал в первом посте).. это опятьже видно по выложенным мной скринам. Цель этой темы, установить..а точнее узнать. Какие данные и где, в пакетах мне нужно модифицировать, чтоб веб браузер клиента отобразил корректно, всю сформированную мной страницу.
ohne Как должно быть? Сейчас смотрю inject_data_1.wireshark 5 пакет, содержит окончание chunk 30 0d 0a 0d 0a И также смотрю original_data.wireshark 6 пакет , содержит окончание chunk 30 0d 0a 0d 0a Где косяк?
ohne Инъекцию данных произвожу в сетевом стеке, при формировании TCP пакетов) Далее отправляю модифицированную страницу клиенту.
это как раз не интересно, интересует больше что вы делаете с raw http ответом, каким образом туда вставляете данные, правильно ли выставляете размеры chunk'ов, просто высчитывать размеры чанков и сопоставлять их с указанными вами размерами по дампу как то не очень хочется, потому уточняю нет ли ошибки вообще в парсинге ответа
ohne Во, это кажется ближе к делу. Где должны проставляться размеры chunk'ов ?? (их я какраз не изменял)
в общих чертах чанкед ответ выглядит так //http header \r\n //http body <chunk size> \r\n <chunk body> \r\n <chunk size> \r\n <chunk body> \r\n ... 0 \r\n \r\n не учитывая имен чанков (они вроде как, согласно спецификации, могут идти после размера (как при multipart data), но обычно такого нет) точно так же и с Content-Length, нужно выставлять измененный размер данных в сообщении (если конечно размер изменился) http://en.wikipedia.org/wiki/Chunked_transfer_encoding http://tools.ietf.org/html/rfc2616#section-3.6.1
ohne ОГРОМНОЕ СПАСИБО за ответ. Постараюсь завтра утром с этим разобраться. (поищу где именно размер chunk следует изменять) Но это уже завтра.... Кстати, на примере inject_data_2.wireshark размер чанка это 5af ? да? (в самом начале передаваемых данных) после 5af идёт 0d0a и далее данные.
ohne И сейчас тупой вопрос) Я указываю размер всей страницы, только в первом передаваемом пакете, а второй пакет уже отправляю без указания размера данной части. И как понимаю, вся страница собирается без проблем. (Такое провидение зависит только от браузера?)... Можно ли обойтись только указанием полного размера страницы в начале?. или обязательно следует указывать новый размер для каждой части сообщения?
читайте же спецификацию на http 1.0/1.1, браузеры руководствуются только ей есть 5 правил расчета длины тела сообщения (если оно вообще есть): http://tools.ietf.org/html/rfc2616#section-4.4