Вот занялся реализацией LSP по примерам Майкрософт.
Первый этап закончил, более или менее разобрался с ним: намисал, синсталил. Но стали возникать следующие вопросы:
1. Если инсталится только на TCP/IP то lsp не работает — браузер не выходит в сеть, если исталиться на TCP/IP + UDP/IP то все работает, почему так, может кто растолкует??
2. В WSPRecv мне приходят каието странные данные:
2.1 Нет НТТР заголовка
2.2 Кроме HTML текста валятся переодически какието странные символы, похоже на управляющий код
2.3 внутри встречаются большие нулевые блоки (т.е. забитые нулями).
Поясните плиз кто что может. Заранее спасибо !!!
P.S. Жить в невединье очень печально
Re: LSP & HTTP spy question
От:
Аноним
Дата:
18.02.05 19:29
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Доброго дня суток!
А> Вот занялся реализацией LSP по примерам Майкрософт. А> Первый этап закончил, более или менее разобрался с ним: намисал, синсталил. Но стали возникать следующие вопросы: А>1. Если инсталится только на TCP/IP то lsp не работает — браузер не выходит в сеть, если исталиться на TCP/IP + UDP/IP то все работает, почему так, может кто растолкует?? А>2. В WSPRecv мне приходят каието странные данные: А>2.1 Нет НТТР заголовка А>2.2 Кроме HTML текста валятся переодически какието странные символы, похоже на управляющий код А>2.3 внутри встречаются большие нулевые блоки (т.е. забитые нулями).
А>Поясните плиз кто что может. Заранее спасибо !!!
А>P.S. Жить в невединье очень печально
А>Таким образом можно сделать вывод, что нужно устанавливать свою LSP поверх обоих протоколов.
да спасибо, с двумя протоколами более менее понятно, но вот с лишними данными — полный завал. Написал простенькое сокетное приложение которое ганяет текстовый файл, так вот в WSPRecv сыпится всякий мусор — ну никак не то что я отсылаю.
Здравствуйте, Аноним, Вы писали:
А>Доброго дня суток!
А> Вот занялся реализацией LSP по примерам Майкрософт. А> Первый этап закончил, более или менее разобрался с ним: намисал, синсталил. Но стали возникать следующие вопросы: А>1. Если инсталится только на TCP/IP то lsp не работает — браузер не выходит в сеть, если исталиться на TCP/IP + UDP/IP то все работает, почему так, может кто растолкует?? А>2. В WSPRecv мне приходят каието странные данные: А>2.1 Нет НТТР заголовка А>2.2 Кроме HTML текста валятся переодически какието странные символы, похоже на управляющий код А>2.3 внутри встречаются большие нулевые блоки (т.е. забитые нулями).
А>Поясните плиз кто что может. Заранее спасибо !!!
А>P.S. Жить в невединье очень печально
<<<<<WSPRecv socket, dwBufferNum: 0
BufLen: 512
SocketContext->ProviderSocket: 416
lpThreadId: 428
ov: 0
__Buffer:
... тут бред всякий, если я перехватываю передачу данных по
сокетам(написанную мной, данные приходят коректно - проверено)
или кусок HTML кода + могут быть пустые блоки или тоже какой
то бред ...
Re: Изменение входящего буффера ???
От:
Аноним
Дата:
19.02.05 19:02
Оценка:
Доброго дня суток!
А можно ли вообще менять данные в WSPRecv?
Дело в том, что если я вношу изменения в буффер — они почемуто игнорируются, а вот ести я сам создаю WSABUF структуру, и в нее копирую входящий буффер, то инет (браузер вообще не работает). Вполне возможно это связано с предыдущим топиком, т.е. из-за того что мне сыпится какой то муссор, но как тогда это все работает непонятно.
Если я изменяю буффер, он воспринимается без изменений, если подставляю свой или блокирую — то ничего не работает .
LSP это вообще рабочий механизм или сплошнаяя теория, так как даже пример от майкрософта ведет себя так же ???
заранее благодарен !!!
Re[3]: LSP & HTTP spy question
От:
Аноним
Дата:
19.02.05 20:41
Оценка:
Здравствуйте, Аноним, Вы писали:
Неудивительно, что у Вас всякий мусор попадается
Сначало нужно буферы заполнить, а потом уже все выводить.
Вставьте код логирования в самый конец функции перед return.
И еще, проверяйте Ret на SOCKET_ERROR.
Re[2]: Изменение входящего буффера ???
От:
Аноним
Дата:
19.02.05 20:50
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Доброго дня суток!
А> А можно ли вообще менять данные в WSPRecv?
Можно, но со знанием дела, а не как вздумается А> Дело в том, что если я вношу изменения в буффер — они почемуто игнорируются, а вот ести я сам создаю WSABUF структуру, и в нее копирую входящий буффер, то инет (браузер вообще не работает). Вполне возможно это связано с предыдущим топиком, т.е. из-за того что мне сыпится какой то муссор, но как тогда это все работает непонятно.
почитайте статью, книги... А>Если я изменяю буффер, он воспринимается без изменений, если подставляю свой или блокирую — то ничего не работает .
Честно говоря я не удивлен...
А> LSP это вообще рабочий механизм или сплошнаяя теория, так как даже пример от майкрософта ведет себя так же ???
Здравствуйте, Аноним, Вы писали:
А>Доброго дня суток!
А> А можно ли вообще менять данные в WSPRecv?
Можно, если не забывать о том, что клиент передаёт буфер ограниченного размера.
Иллюстрация — ты перехватываешь страницу размером 8кб. страница приходит 4-мя порциями по 2 кб. Клиент делает 4-е вызова WSPRecv. Всё пока хорошо, да ? но вот ты решил изменить страницу, и её размер увеличился на 1 байт. Что будешь делать ? Клиент лишний вызов WSPRecv не сделает, даже не надейся! Далее, эти же 8 кб проходят мимо тебя потоком. Соответственно сложный анализ делать не получится. (например ты хочешь все слова Linux заменить на Windows ) вполне может оказаться что слово Linux будет разрезано менжду 2-мя приёмами "Lin" окажется в конце N-го буфера, а "ux" в начале (N+1)-го. Как вариант, можно страницу принять целиком, а потом начать "фиктивную" передачу клиенту уже изменённых данных.
К тому же придётся обрабатывать и внутренности HTML страниц. Во-первых gzip & chunked encoding, во вторых поле Content-Length (а то оставите браузер в попытках докачать несущетвующий кусок, из за того что суммарный обхём страницы изменился при модификации).
Резюмирую: перехват входящих данных довольно трудоёмкая задача. Как минимум, придётся приспосбливаться под модель I/O клиента, чей трафик перехватывается. (Опера, например, пользует AsyncSelect — придётся ещё и оконные сообщения перехватывать/генерировать, IE использует модель select — придутся соотв. имитировать появление данных на перкхваченном select.)
Ну всё что навскидку вспомнил — написал удачи в борьбе с капризами service provider'ов
Здравствуйте, Аноним, Вы писали:
А>Доброго дня суток!
А> Вот занялся реализацией LSP по примерам Майкрософт. А> Первый этап закончил, более или менее разобрался с ним: намисал, синсталил. Но стали возникать следующие вопросы: А>1. Если инсталится только на TCP/IP то lsp не работает — браузер не выходит в сеть, если исталиться на TCP/IP + UDP/IP то все работает, почему так, может кто растолкует??
Под браузером ведь имеется в виду IE? Ему нужен UDP, чтобы д...ть — он сам себе все время пересылает '!' — наверное проверяет работоспособность драйвера.
А>2. В WSPRecv мне приходят каието странные данные: А>2.1 Нет НТТР заголовка
Должен, у меня то есть
А>2.2 Кроме HTML текста валятся переодически какието странные символы, похоже на управляющий код
Возможно, тело сообщения пожато gzip ом
А>2.3 внутри встречаются большие нулевые блоки (т.е. забитые нулями).
А>P.S. Жить в невединье очень печально