Написание NDIS-клиента
От: Аноним  
Дата: 06.02.07 07:14
Оценка:
Здравствуйте!

Очень нужна инфа по реализации NDIS-клиента в драйвере. Общая инфа по NDIS у меня есть, интересуют конкретные моменты — как создавать коннект, как слать пакеты. Данные будут передаваться на HTTP-сервер, т.о. нужна инфа по реализации TCP-клиента, т.е. нужны сокеты в ядре, но именно через NDIS.

Желательно пример на C. Или хотя б ссылки, книги может какие порекомендуете по этому делу?

TDI не предлагать.
Re: Написание NDIS-клиента
От: onyx2 Украина  
Дата: 06.02.07 07:36
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Данные будут передаваться на HTTP-сервер, т.о. нужна инфа по реализации TCP-клиента, т.е. нужны сокеты в ядре, но именно через NDIS.


Unreal %)
www.cubik.biz
Re[2]: Написание NDIS-клиента
От: Аноним  
Дата: 06.02.07 07:49
Оценка:
Здравствуйте, onyx2, Вы писали:

O>Здравствуйте, Аноним, Вы писали:


А>>Данные будут передаваться на HTTP-сервер, т.о. нужна инфа по реализации TCP-клиента, т.е. нужны сокеты в ядре, но именно через NDIS.


O>Unreal %)


Да ну? )) Не знаете как — не пишите.
Знающим людям — я понимаю, что это сложно, сложнее чем через TDI, но мне нужен именно NDIS.
Re: Написание NDIS-клиента
От: TarasCo  
Дата: 06.02.07 08:19
Оценка:
А>Очень нужна инфа по реализации 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. Спасибо за ответ. Я понимаю, готовый исходник тут вряд ли кто выложит, но накидайте хотя бы ссылок на доки, сырцы и т.п.
Re[3]: Написание NDIS-клиента
От: onyx2 Украина  
Дата: 06.02.07 09:30
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, onyx2, Вы писали:


O>>Здравствуйте, Аноним, Вы писали:


А>>>Данные будут передаваться на HTTP-сервер, т.о. нужна инфа по реализации TCP-клиента, т.е. нужны сокеты в ядре, но именно через NDIS.


O>>Unreal %)


А>Да ну? )) Не знаете как — не пишите.

А>Знающим людям — я понимаю, что это сложно, сложнее чем через TDI, но мне нужен именно NDIS.

Используйте поиск, здесь подобное обсуждалось.
Начните отсюда
Автор:
Дата: 17.04.06
.

Unreal — имелось в виду для надежного продукта. А так побыстрому можно что-нибудь налобать. Даже по быстрому это займет не один месяц.
Вы для начала скажите поддержка каких ОС требуется? Какие-нибудь особенности разрабатываемого ПО?
www.cubik.biz
Re[2]: Написание NDIS-клиента
От: onyx2 Украина  
Дата: 06.02.07 09:37
Оценка:
TC>Никаких сокетов быть не может. Чтобы установить соединение Вам придется сделать следующее.
TC>1. Выполнить всю работу, которую делает маршрутизатор — определить, удаленный хост находиться в прямосоединенной сети или за шлюзом, если хост находиться за шлюзом — определить адрес шлюза. Без запросов к tcpip.sys это довольно сложно, я лично не знаю 100% рецептов.
TC>2. Определить МАС адрес удаленного хоста или шлюза — для этого нужно реализовать ARP протокол
TC>3. Далее послать TCP SYN пакет и далее полностью реализовать весь ТСР протокол.
TC>4. Реализация HTTP после всего этого — просто деццкая прогулка


Но если NDIS IM, то зачем пункты 1 и 2?
www.cubik.biz
Re[4]: Написание NDIS-клиента
От: Аноним  
Дата: 06.02.07 09:55
Оценка:
Здравствуйте, onyx2, Вы писали:

O>Используйте поиск, здесь подобное обсуждалось.

O>Начните отсюда
Автор:
Дата: 17.04.06
.


За ссылку — thx.

O>Unreal — имелось в виду для надежного продукта. А так побыстрому можно что-нибудь налобать. Даже по быстрому это займет не один месяц.


Вы уверены в этих сроках? Это действительно так долго?
Вы уже реализовывали подобное?
Мне ведь всего лишь надо отправлять HTTP-запрос и получать ответ.

O>Вы для начала скажите поддержка каких ОС требуется? Какие-нибудь особенности разрабатываемого ПО?


Необходима поддержка хотя бы Windows XP. Особенность одна — это драйвер, в который я добавляю поддержку сети, вот и всё.
Re[3]: Написание NDIS-клиента
От: Andrew.W Worobow https://github.com/Worobow
Дата: 06.02.07 10:31
Оценка: :)
Здравствуйте, Аноним, Вы писали:

А>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>Я думаю, если ты назвал правильную цифру, то "тут" никто особо отказываться не будет... сырцы и доки посыпятся как из рога изобилия... Ты главное скажи скоко платишь?


Я никаких цифр не называл. Насчёт "отказываться" тоже непонятно — я ведь ничего не предлагаю никому. И разве я должен на этом форуме кому-то платить? Я ведь не работодатель.
В общем, эту вашу фразу я совсем не понял.
Re: Написание NDIS-клиента
От: Denwer Россия  
Дата: 06.02.07 11:09
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте!


А>Очень нужна инфа по реализации NDIS-клиента в драйвере. Общая инфа по NDIS у меня есть, интересуют конкретные моменты — как создавать коннект, как слать пакеты. Данные будут передаваться на HTTP-сервер, т.о. нужна инфа по реализации TCP-клиента, т.е. нужны сокеты в ядре, но именно через NDIS.


А>Желательно пример на C. Или хотя б ссылки, книги может какие порекомендуете по этому делу?


А>TDI не предлагать.


Случаем не спам бота пишешь? Или еще какую зловредную прогу? Я вот не могу придумать РЕАЛЬНОГО применения данной реализации. Ну а так как многие брандмауэры сейчас ставят фильтр на уровне NDIS то вот наверное и захотелось спуститься ниже них.
Re[2]: Написание NDIS-клиента
От: Аноним  
Дата: 06.02.07 11:19
Оценка: :)
Здравствуйте, Denwer, Вы писали:

D>Случаем не спам бота пишешь? Или еще какую зловредную прогу? Я вот не могу придумать РЕАЛЬНОГО применения данной реализации.


Насчёт применения: например, самообновление того же антивируса. Некоторые трояны мешают корректному обновлению AV, последний же должен выжить любым способом.

D>Ну а так как многие брандмауэры сейчас ставят фильтр на уровне NDIS то вот наверное и захотелось спуститься ниже них.


Разве можно спуститься ниже NDIS ? )))
Re[3]: Написание NDIS-клиента
От: Denwer Россия  
Дата: 06.02.07 11:23
Оценка:
Здравствуйте, Аноним, Вы писали:



А>Разве можно спуститься ниже NDIS ? )))


Я сказал ниже фильтров которые ставят фаерволы.
Re[5]: Написание NDIS-клиента
От: Andrew.W Worobow https://github.com/Worobow
Дата: 06.02.07 12:25
Оценка: 7 (2) -2
Здравствуйте, Аноним, Вы писали:

А>В общем, эту вашу фразу я совсем не понял.


Ну, ты просишь, готовый исходник, или четкие, подробные инструкции "как это сделать". Почему ты не задумываешься о том, что люди по крупицам, многие годы собирали в своей голове знания и опыт... Скажем так "по сетевой тематике виндов вообще и ядра в частности"... Почему многие годы и по крупицам? Да ведь книг-то с подробными инструкциями никто пока не написал... И опять же заметь — почему — потому, что "те кто писатели еще не успели выспросить у тех, кто копатели, что да как". А ведь, время деньги, и ты предполагаешь получить за свою работу, на которую ты потратишь свой личное время, некоторою сумму денюх, что на самом просто отлично!, и никто даже и не собирается быть против — все будут только рады... Но для того что бы тебе их получить, тебе придется работу то сделать, а для этого пару-тройку лет поучится, посамообразовываться да и помучится, что греха таить ... Как там у врачей — ординатура (ХЗ)... А в процессе этого ты должен — что-то кушать, где-то спать (жить), твои дети и жена заметь тоже... И если приблизительно прикинуть, то на мой взгляд в наше время человеку, в нашей стране и крупном городе надо не менее $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>Это с одной стороны, а с другой... Если, например тебе просто так "дать и всё", то кто-то из таких же, профиков как мы, останется без работы... А это согласись не справедливо!


Да где ты останешься без работы?! Кто у тебя отбирает?! Специалисты нужны всегда и везде. Загнул ты слишком.

Я жуть как с тобой не согласен. Время у тебя есть, чтобы вот эти все выкладки писать, если бы ты столько же времени потратил на выкладывание здесь кусочка кода, пусть небольшого, всем было бы хорошо.
Re[7]: Написание NDIS-клиента
От: _f_b_i_  
Дата: 06.02.07 13:17
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Open Sources'щики немного другого мнения, хотя я сам и не согласен с ними. Это раз.

А>А во-вторых, всё это туфта на самом деле. Истинная причина, по которой такие как ты, не дают ответов на серьёзные вопросы, одна: да просто жаба душит. Ну и лень.
А>И ещё. Задумайтесь, а нахрена нужен форум, где отвечают только на вопросы типа "как мне привести переменную к типу производного класса?".

Для того чтобы указать направление в котором двигаться, что собственно тебе и сказали несколько постами выше!!!
Re[7]: Написание NDIS-клиента
От: Andrew.W Worobow https://github.com/Worobow
Дата: 06.02.07 13:56
Оценка: 2 (2)
Здравствуйте, Аноним, Вы писали:

AWW>>Ну....


15 строчек того, что люди уже читали, а я писал, это просто оскорбление для участников этого форума... Следите за объемом цитирования.

А>Open Sources'щики немного другого мнения, хотя я сам и не согласен с ними. Это раз.


У них другие цели и задачи... И я с ними совершенно согласен. Ибо прогресс важен, но заметь они не призывают всех открыть код, чтобы другие, ты например через кут-пасте денег с лёгкостью зарабатывал... А совсем-совем для другого.

А>А во-вторых, всё это туфта на самом деле. Истинная причина, по которой такие как ты, не дают ответов на серьёзные вопросы, одна: да просто жаба душит. Ну и лень.


Да жаба, душит, потому как если у меня будет меньше конкурентов, то цена моей рабочей силы вырастет, и я буду больше получать денег... Нормальное здоровое желание. А вот, что лень, это ты не прав.

А>И ещё. Задумайтесь, а нахрена нужен форум, где отвечают только на вопросы типа "как мне привести переменную к типу производного класса?".


Ну почему же, он очень помогает людям одного уровня опыта и знания эффективно обмениваться ими, но не для того, чтобы заниматься бесплатным консалтингом... Мне, во первых, совершенно не интересно отвечать на простые вопросы, а во вторых я не вижу зачем мне это надо, чем мне от этого будет лучше? Одно дело пообсуждать вопросы с коллегами о том, о чем сам ещё толком не знаешь — и им помочь за одно и самому уму-разуму поднабраться... Да и вообще есть шанс, что новые знания будут тобой обретены. А кой простите меня, прок делиться "тем", что делает мой продукт конкурентоспособным, "тем" за счет чего он лучше конкурента... Или, как я уже писал, просто просвещать требующих анонимов.

А>Да где ты останешься без работы?! Кто у тебя отбирает?! Специалисты нужны всегда и везде. Загнул ты слишком.


Полная фигня, узких спецов нужно очень не много, и обычно их ровно столько сколько смогла породить мать природа и столько сколько нужно рынку, а если я, например, начну рОстить лишних — это приведёт к превышению предложения над спросом и естественно цена моей рабочей силы снизится... Так, что учись сам... Меня вот никто не учил, просто некому было ещё... И я считаю, что это вообще некий "ценз" и "кастовость" нашей профессии, как у моряков например... И это хорошо!

А>Время у тебя есть, чтобы вот эти все выкладки писать


Время есть всегда, и у всех... Мы лишь только расставляем приоритеты, а они в свою очередь зависят от целей, которые определяются мотивацией.
Не все кто уехал, предал Россию.
Re[3]: Написание NDIS-клиента
От: onyx2 Украина  
Дата: 06.02.07 14:41
Оценка:
Здравствуйте, 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 запросика!

Это очень сложно. Выразите свою конкретную цель. Чего нужно достичь? Может мы найдем более легкое решение а плане реализации.
www.cubik.biz
Re[4]: Написание NDIS-клиента
От: Аноним  
Дата: 06.02.07 15:03
Оценка:
Здравствуйте, onyx2, Вы писали:

O>Это очень сложно. Выразите свою конкретную цель. Чего нужно достичь? Может мы найдем более легкое решение а плане реализации.


Цель, как я уже говорил, — послать HTTP-запрос. Из драйвера. Система Windows XP. Небольшая оговорка: чем ниже уровень, тем лучше. Вот и всё, что могу сказать.

Я слышал что можно через TDI или через NDIS. Также в DDK Documentation читал про Windows Sockets SPI, но это слишком высокий уровень. На низком уровне, я уже понял, будет очень сложно реализовывать всё это.

Что-то ещё есть?

P.S. А нет какого-нибудь Network-провайдера в Windows на том же уровне что и NDIS, но предоставляющий такой же простой интерфейс что и TDI ?
[moderator]убедительная просьба следить за ..., Denwer!
От: Denwer Россия  
Дата: 06.02.07 15:24
Оценка:
убедительная просьба следить за объемом цитирования — модератор

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

Единственная просьба, напишите точно ТЗ. Разумеется все сделаем за спасибо.

Начет Опен сорца, я думаю что такое GPL лицензия рассказывать не нужно. Если я например дал бы вам исходники того что вы ищите, вы сделаете доступным исходники ВСЕГО вашего проекта. Я думаю нет. Вы же просто хотите украсть чужие труды.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.