Очень нужна инфа по реализации NDIS-клиента в драйвере. Общая инфа по NDIS у меня есть, интересуют конкретные моменты — как создавать коннект, как слать пакеты. Данные будут передаваться на HTTP-сервер, т.о. нужна инфа по реализации TCP-клиента, т.е. нужны сокеты в ядре, но именно через NDIS.
Желательно пример на C. Или хотя б ссылки, книги может какие порекомендуете по этому делу?
Здравствуйте, Аноним, Вы писали:
А>Данные будут передаваться на HTTP-сервер, т.о. нужна инфа по реализации TCP-клиента, т.е. нужны сокеты в ядре, но именно через NDIS.
Здравствуйте, onyx2, Вы писали:
O>Здравствуйте, Аноним, Вы писали:
А>>Данные будут передаваться на HTTP-сервер, т.о. нужна инфа по реализации TCP-клиента, т.е. нужны сокеты в ядре, но именно через NDIS.
O>Unreal %)
Да ну? )) Не знаете как — не пишите.
Знающим людям — я понимаю, что это сложно, сложнее чем через TDI, но мне нужен именно NDIS.
А>Очень нужна инфа по реализации NDIS-клиента в драйвере. Общая инфа по NDIS у меня есть, интересуют конкретные моменты — как создавать коннект, как слать пакеты.
Никаких коннектов на уровне NDIS быть не может. Вам придется делать все вручную — от ARP протокола, до собственной реализации TCP стека. Я сначала хотел порекомендовать NDIS протокол, но поразмыслив, решил, что Вам подойдет NDIS IM. Дело в том, что если Вы будете сами реализовывать весь tcpip стек, его жизнедеятельность может "мешать" стандартному стеку. Поэтому, лучше сделать такой драйвер фильтром -он не будут пропускать Ваши пакеты выше.
A>Данные будут передаваться на HTTP-сервер, т.о. нужна инфа по реализации TCP-клиента, т.е. нужны сокеты в ядре, но именно через NDIS.
Никаких сокетов быть не может. Чтобы установить соединение Вам придется сделать следующее.
1. Выполнить всю работу, которую делает маршрутизатор — определить, удаленный хост находиться в прямосоединенной сети или за шлюзом, если хост находиться за шлюзом — определить адрес шлюза. Без запросов к tcpip.sys это довольно сложно, я лично не знаю 100% рецептов.
2. Определить МАС адрес удаленного хоста или шлюза — для этого нужно реализовать ARP протокол
3. Далее послать TCP SYN пакет и далее полностью реализовать весь ТСР протокол.
4. Реализация HTTP после всего этого — просто деццкая прогулка
А>Желательно пример на C. Или хотя б ссылки, книги может какие порекомендуете по этому делу?
Смотрите исходники открытых систем ( Linux, FreeBSD ).
PS: и вообще, беретесь писать спайваре — пользуйтесь головой. А то дайте мне пример, порекомендуйте книгу, может еще потом самим себе установить это?
Да пребудет с тобою сила
Re[2]: Написание NDIS-клиента
От:
Аноним
Дата:
06.02.07 08:45
Оценка:
Здравствуйте, TarasCo, Вы писали:
TC>Никаких коннектов на уровне NDIS быть не может. Вам придется делать все вручную — от ARP протокола, до собственной реализации TCP стека. Я сначала хотел порекомендовать NDIS протокол, но поразмыслив, решил, что Вам подойдет NDIS IM.
NDIS IM — что сие есть такое?
TC>Дело в том, что если Вы будете сами реализовывать весь tcpip стек, его жизнедеятельность может "мешать" стандартному стеку. Поэтому, лучше сделать такой драйвер фильтром -он не будут пропускать Ваши пакеты выше.
Чем мешать? Как это проявляется? Можно поподробнее? plz
TC>Никаких сокетов быть не может. Чтобы установить соединение Вам придется сделать следующее.
Да это понятно, это я чисто условно.
TC>1. Выполнить всю работу, которую делает маршрутизатор — определить, удаленный хост находиться в прямосоединенной сети или за шлюзом, если хост находиться за шлюзом — определить адрес шлюза. Без запросов к tcpip.sys это довольно сложно, я лично не знаю 100% рецептов.
А почему надо без запросов к tcpip.sys делать? Зачем такие извращения? ))
А>>Желательно пример на C. Или хотя б ссылки, книги может какие порекомендуете по этому делу?
TC>Смотрите исходники открытых систем ( Linux, FreeBSD ).
Это понятно. Мне бы под Windows.
А книги какие по NDIS лучше почитать на ваш взгляд?
P.S. Спасибо за ответ. Я понимаю, готовый исходник тут вряд ли кто выложит, но накидайте хотя бы ссылок на доки, сырцы и т.п.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, onyx2, Вы писали:
O>>Здравствуйте, Аноним, Вы писали:
А>>>Данные будут передаваться на HTTP-сервер, т.о. нужна инфа по реализации TCP-клиента, т.е. нужны сокеты в ядре, но именно через NDIS.
O>>Unreal %)
А>Да ну? )) Не знаете как — не пишите. А>Знающим людям — я понимаю, что это сложно, сложнее чем через TDI, но мне нужен именно NDIS.
Используйте поиск, здесь подобное обсуждалось.
Начните отсюда
Unreal — имелось в виду для надежного продукта. А так побыстрому можно что-нибудь налобать. Даже по быстрому это займет не один месяц.
Вы для начала скажите поддержка каких ОС требуется? Какие-нибудь особенности разрабатываемого ПО?
TC>Никаких сокетов быть не может. Чтобы установить соединение Вам придется сделать следующее. TC>1. Выполнить всю работу, которую делает маршрутизатор — определить, удаленный хост находиться в прямосоединенной сети или за шлюзом, если хост находиться за шлюзом — определить адрес шлюза. Без запросов к tcpip.sys это довольно сложно, я лично не знаю 100% рецептов. TC>2. Определить МАС адрес удаленного хоста или шлюза — для этого нужно реализовать ARP протокол TC>3. Далее послать TCP SYN пакет и далее полностью реализовать весь ТСР протокол. TC>4. Реализация HTTP после всего этого — просто деццкая прогулка
За ссылку — thx.
O>Unreal — имелось в виду для надежного продукта. А так побыстрому можно что-нибудь налобать. Даже по быстрому это займет не один месяц.
Вы уверены в этих сроках? Это действительно так долго?
Вы уже реализовывали подобное?
Мне ведь всего лишь надо отправлять HTTP-запрос и получать ответ.
O>Вы для начала скажите поддержка каких ОС требуется? Какие-нибудь особенности разрабатываемого ПО?
Необходима поддержка хотя бы Windows XP. Особенность одна — это драйвер, в который я добавляю поддержку сети, вот и всё.
Здравствуйте, Аноним, Вы писали:
А>P.S. Спасибо за ответ. Я понимаю, готовый исходник тут вряд ли кто выложит, но накидайте хотя бы ссылок на доки, сырцы и т.п.
Ты спрашивал по срокам — могу ответеить довольно точно — более года, от начала твоего изучения до выхода более-менее первой безглючной бетты ... Вообще сетевая подсистема в операционной системе это примерно 50% ей.... Ты говоришь, я заметил умные слова — типа сокеты в ядре. Ну вот представь, что тебе придётся написать несколько сот-тысяч строчек кода. А главное, ты лучше скажи сколько тебе за это предложили, и на сколько ты уже согласился...
Я думаю, если ты назвал правильную цифру, то "тут" никто особо отказываться не будет... сырцы и доки посыпятся как из рога изобилия... Ты главное скажи скоко платишь?
Не все кто уехал, предал Россию.
Re[4]: Написание NDIS-клиента
От:
Аноним
Дата:
06.02.07 10:47
Оценка:
Здравствуйте, Andrew.W Worobow, Вы писали:
А>>P.S. Спасибо за ответ. Я понимаю, готовый исходник тут вряд ли кто выложит, но накидайте хотя бы ссылок на доки, сырцы и т.п.
AWW>Ты спрашивал по срокам — могу ответеить довольно точно — более года, от начала твоего изучения до выхода более-менее первой безглючной бетты ...
За эту информацию — thx.
AWW>Ты говоришь, я заметил умные слова — типа сокеты в ядре.
У меня есть обёртка ring0 над TDI в виде send, recv, connect и т.п. Я думал, над NDIS можно сделать нечто похожее.
AWW>А главное, ты лучше скажи сколько тебе за это предложили, и на сколько ты уже согласился...
Никто ничего не предлагал. И никто соответственно ни на что не соглашался. Я ведь не просто так спрашиваю про сроки и т.п.
AWW>Я думаю, если ты назвал правильную цифру, то "тут" никто особо отказываться не будет... сырцы и доки посыпятся как из рога изобилия... Ты главное скажи скоко платишь?
Я никаких цифр не называл. Насчёт "отказываться" тоже непонятно — я ведь ничего не предлагаю никому. И разве я должен на этом форуме кому-то платить? Я ведь не работодатель.
В общем, эту вашу фразу я совсем не понял.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте!
А>Очень нужна инфа по реализации NDIS-клиента в драйвере. Общая инфа по NDIS у меня есть, интересуют конкретные моменты — как создавать коннект, как слать пакеты. Данные будут передаваться на HTTP-сервер, т.о. нужна инфа по реализации TCP-клиента, т.е. нужны сокеты в ядре, но именно через NDIS.
А>Желательно пример на C. Или хотя б ссылки, книги может какие порекомендуете по этому делу?
А>TDI не предлагать.
Случаем не спам бота пишешь? Или еще какую зловредную прогу? Я вот не могу придумать РЕАЛЬНОГО применения данной реализации. Ну а так как многие брандмауэры сейчас ставят фильтр на уровне NDIS то вот наверное и захотелось спуститься ниже них.
Re[2]: Написание NDIS-клиента
От:
Аноним
Дата:
06.02.07 11:19
Оценка:
Здравствуйте, Denwer, Вы писали:
D>Случаем не спам бота пишешь? Или еще какую зловредную прогу? Я вот не могу придумать РЕАЛЬНОГО применения данной реализации.
Насчёт применения: например, самообновление того же антивируса. Некоторые трояны мешают корректному обновлению AV, последний же должен выжить любым способом.
D>Ну а так как многие брандмауэры сейчас ставят фильтр на уровне NDIS то вот наверное и захотелось спуститься ниже них.
Здравствуйте, Аноним, Вы писали:
А>В общем, эту вашу фразу я совсем не понял.
Ну, ты просишь, готовый исходник, или четкие, подробные инструкции "как это сделать". Почему ты не задумываешься о том, что люди по крупицам, многие годы собирали в своей голове знания и опыт... Скажем так "по сетевой тематике виндов вообще и ядра в частности"... Почему многие годы и по крупицам? Да ведь книг-то с подробными инструкциями никто пока не написал... И опять же заметь — почему — потому, что "те кто писатели еще не успели выспросить у тех, кто копатели, что да как". А ведь, время деньги, и ты предполагаешь получить за свою работу, на которую ты потратишь свой личное время, некоторою сумму денюх, что на самом просто отлично!, и никто даже и не собирается быть против — все будут только рады... Но для того что бы тебе их получить, тебе придется работу то сделать, а для этого пару-тройку лет поучится, посамообразовываться да и помучится, что греха таить ... Как там у врачей — ординатура (ХЗ)... А в процессе этого ты должен — что-то кушать, где-то спать (жить), твои дети и жена заметь тоже... И если приблизительно прикинуть, то на мой взгляд в наше время человеку, в нашей стране и крупном городе надо не менее $20000 в год на руки... умножаем это на три и делим на десять (так для круглого счёта) и того — цена твоего вопроса $6000... Вот и всё, "хочу! здесь и сейчас!", это стоит КАК МИНИМУМ! Тех денег , что я указал... А так, на мой взгляд — $3500 * 12*3 = $126000, чтобы знать как написать + $3500*12, чтобы написать = $168000... Вот цена кода которого ты просишь...
Не принимай все мои слова прямо на себя, я просто немного на твоём примере рассказал, господам "требующим", что на самом деле они просят... В наше ведь области, тут такая штука, это же не подсказать, как правильно класс в MFC объявить — динамически или статически, это же не просто ссылку дать на доку... Эти же знания иногда после долгих-долгих поисков и многократных попыток приобретаются... И цена им очень высока.
Это с одной стороны, а с другой... Если, например тебе просто так "дать и всё", то кто-то из таких же, профиков как мы, останется без работы... А это согласись не справедливо!
Не все кто уехал, предал Россию.
Re[6]: Написание NDIS-клиента
От:
Аноним
Дата:
06.02.07 13:03
Оценка:
Здравствуйте, Andrew.W Worobow, Вы писали:
убедительная просьба следить за объемом цитирования — модератор
AWW>Не принимай все мои слова прямо на себя, я просто немного на твоём примере рассказал, господам "требующим", что на самом деле они просят... В наше ведь области, тут такая штука, это же не подсказать, как правильно класс в MFC объявить — динамически или статически, это же не просто ссылку дать на доку... Эти же знания иногда после долгих-долгих поисков и многократных попыток приобретаются... И цена им очень высока.
Open Sources'щики немного другого мнения, хотя я сам и не согласен с ними. Это раз.
А во-вторых, всё это туфта на самом деле. Истинная причина, по которой такие как ты, не дают ответов на серьёзные вопросы, одна: да просто жаба душит. Ну и лень.
И ещё. Задумайтесь, а нахрена нужен форум, где отвечают только на вопросы типа "как мне привести переменную к типу производного класса?".
AWW>Это с одной стороны, а с другой... Если, например тебе просто так "дать и всё", то кто-то из таких же, профиков как мы, останется без работы... А это согласись не справедливо!
Да где ты останешься без работы?! Кто у тебя отбирает?! Специалисты нужны всегда и везде. Загнул ты слишком.
Я жуть как с тобой не согласен. Время у тебя есть, чтобы вот эти все выкладки писать, если бы ты столько же времени потратил на выкладывание здесь кусочка кода, пусть небольшого, всем было бы хорошо.
Здравствуйте, Аноним, Вы писали:
А>Open Sources'щики немного другого мнения, хотя я сам и не согласен с ними. Это раз. А>А во-вторых, всё это туфта на самом деле. Истинная причина, по которой такие как ты, не дают ответов на серьёзные вопросы, одна: да просто жаба душит. Ну и лень. А>И ещё. Задумайтесь, а нахрена нужен форум, где отвечают только на вопросы типа "как мне привести переменную к типу производного класса?".
Для того чтобы указать направление в котором двигаться, что собственно тебе и сказали несколько постами выше!!!
15 строчек того, что люди уже читали, а я писал, это просто оскорбление для участников этого форума... Следите за объемом цитирования.
А>Open Sources'щики немного другого мнения, хотя я сам и не согласен с ними. Это раз.
У них другие цели и задачи... И я с ними совершенно согласен. Ибо прогресс важен, но заметь они не призывают всех открыть код, чтобы другие, ты например через кут-пасте денег с лёгкостью зарабатывал... А совсем-совем для другого.
А>А во-вторых, всё это туфта на самом деле. Истинная причина, по которой такие как ты, не дают ответов на серьёзные вопросы, одна: да просто жаба душит. Ну и лень.
Да жаба, душит, потому как если у меня будет меньше конкурентов, то цена моей рабочей силы вырастет, и я буду больше получать денег... Нормальное здоровое желание. А вот, что лень, это ты не прав.
А>И ещё. Задумайтесь, а нахрена нужен форум, где отвечают только на вопросы типа "как мне привести переменную к типу производного класса?".
Ну почему же, он очень помогает людям одного уровня опыта и знания эффективно обмениваться ими, но не для того, чтобы заниматься бесплатным консалтингом... Мне, во первых, совершенно не интересно отвечать на простые вопросы, а во вторых я не вижу зачем мне это надо, чем мне от этого будет лучше? Одно дело пообсуждать вопросы с коллегами о том, о чем сам ещё толком не знаешь — и им помочь за одно и самому уму-разуму поднабраться... Да и вообще есть шанс, что новые знания будут тобой обретены. А кой простите меня, прок делиться "тем", что делает мой продукт конкурентоспособным, "тем" за счет чего он лучше конкурента... Или, как я уже писал, просто просвещать требующих анонимов.
А>Да где ты останешься без работы?! Кто у тебя отбирает?! Специалисты нужны всегда и везде. Загнул ты слишком.
Полная фигня, узких спецов нужно очень не много, и обычно их ровно столько сколько смогла породить мать природа и столько сколько нужно рынку, а если я, например, начну рОстить лишних — это приведёт к превышению предложения над спросом и естественно цена моей рабочей силы снизится... Так, что учись сам... Меня вот никто не учил, просто некому было ещё... И я считаю, что это вообще некий "ценз" и "кастовость" нашей профессии, как у моряков например... И это хорошо!
А>Время у тебя есть, чтобы вот эти все выкладки писать
Время есть всегда, и у всех... Мы лишь только расставляем приоритеты, а они в свою очередь зависят от целей, которые определяются мотивацией.
Здравствуйте, onyx2, Вы писали:
TC>>Никаких сокетов быть не может. Чтобы установить соединение Вам придется сделать следующее. TC>>1. Выполнить всю работу, которую делает маршрутизатор — определить, удаленный хост находиться в прямосоединенной сети или за шлюзом, если хост находиться за шлюзом — определить адрес шлюза. Без запросов к tcpip.sys это довольно сложно, я лично не знаю 100% рецептов. TC>>2. Определить МАС адрес удаленного хоста или шлюза — для этого нужно реализовать ARP протокол TC>>3. Далее послать TCP SYN пакет и далее полностью реализовать весь ТСР протокол. TC>>4. Реализация HTTP после всего этого — просто деццкая прогулка
O>Но если NDIS IM, то зачем пункты 1 и 2?
Sorry, запарился
Да, действительно все что было сказано — истинная правда и подлежит реализации.
Необходимо учесть также фрагментацию IP, IpSec и прочие плохие вещи.
Ну вот, например, вам нужно послать пакет в сеть (в общих чертах):
1. выполнить пункты 1 и 2
2. сформировать Ethernet пакет,
3. сформировать IP пакет
4. сформировать TCP пакет
5. сформировать HTTP запрос
6. собрать все пакеты (буфера) в один и let's go!
А теперь задумайтесь над тем, что сеть может быть не только Ethernet — и все! Тапки! И это только посылка одного маленького ничтожного http запросика!
Это очень сложно. Выразите свою конкретную цель. Чего нужно достичь? Может мы найдем более легкое решение а плане реализации.
Здравствуйте, onyx2, Вы писали:
O>Это очень сложно. Выразите свою конкретную цель. Чего нужно достичь? Может мы найдем более легкое решение а плане реализации.
Цель, как я уже говорил, — послать HTTP-запрос. Из драйвера. Система Windows XP. Небольшая оговорка: чем ниже уровень, тем лучше. Вот и всё, что могу сказать.
Я слышал что можно через TDI или через NDIS. Также в DDK Documentation читал про Windows Sockets SPI, но это слишком высокий уровень. На низком уровне, я уже понял, будет очень сложно реализовывать всё это.
Что-то ещё есть?
P.S. А нет какого-нибудь Network-провайдера в Windows на том же уровне что и NDIS, но предоставляющий такой же простой интерфейс что и TDI ?
[moderator]убедительная просьба следить за ..., Denwer!
убедительная просьба следить за объемом цитирования — модератор
Выложите пожалуйста исходники вашего проекта на форуме, мы постараемся добавить данный функционал туда, и сообщать вам о результатах.
Единственная просьба, напишите точно ТЗ. Разумеется все сделаем за спасибо.
Начет Опен сорца, я думаю что такое GPL лицензия рассказывать не нужно. Если я например дал бы вам исходники того что вы ищите, вы сделаете доступным исходники ВСЕГО вашего проекта. Я думаю нет. Вы же просто хотите украсть чужие труды.