K>Можно ли как отправить/получить IP-пакеты системе? K>Приложение имеет доступ к IP-трафику и нужно имитировать сетевой адаптер (как будто на него приходят данные и что он отправляет данные). K>Можно ли это как-нибудь сделать ?
, — долго.
Взломать сервер БД, на котором храниться твоё сообщение, и кое-что подправить, — быстро если умеючи, но сидеть долго, а если не сидеть, то руки переломают точно.
, — долго.
потянет U>Взломать сервер БД, на котором храниться твоё сообщение, и кое-что подправить, — быстро если умеючи, но сидеть долго, а если не сидеть, то руки переломают точно.
Я так и думал.
U>>Взломать сервер БД, на котором храниться твоё сообщение, и кое-что подправить, — быстро если умеючи, но сидеть долго, а если не сидеть, то руки переломают точно. K>могешь ?
Скажу да — посадют ведь.
Скажу нет — ламер.
Скажем так, — "в мире нет ничего невозможного" (c).
Здравствуйте, k732, Вы писали:
K>Приложение имеет доступ к IP-трафику и нужно имитировать сетевой адаптер (как будто на него приходят данные и что он отправляет данные).
Потребуется сетевой драйвер, который изображает из себя виртуальный сетевой адаптер. В юниксе такой драйвер является стандартным и называется TUN/TAP (говорю в основном ради стандартной терминологии). А в винде его почему-то нет.
Возьмите Tap-Win32 из OpenVPN: http://openvpn.net/. Он довольно средненько написан, и по-моему не работает на 64-битных машинках, но чтобы поиграться/сделать прототип, его хватит. А потом перепишете, если дело пойдет.
Здравствуйте, Unmanaged, Вы писали:
K>>да не удобно как-то...
U>"Неудобно — это когда соседские дети на тебя похожи!" (c).
а еще неудобно — когда ты сверху и она сверху
U>>>Взломать сервер БД, на котором храниться твоё сообщение, и кое-что подправить, — быстро если умеючи, но сидеть долго, а если не сидеть, то руки переломают точно. K>>могешь ?
U>Скажу да — посадют ведь. U>Скажу нет — ламер.
Pzz>Возьмите Tap-Win32 из OpenVPN: http://openvpn.net/. Он довольно средненько написан, и по-моему не работает на 64-битных машинках, но чтобы поиграться/сделать прототип, его хватит. А потом перепишете, если дело пойдет.
а как на счет виртуалтного минипорт драйвера из DDK ?
Здравствуйте, k732, Вы писали:
Pzz>>Возьмите Tap-Win32 из OpenVPN: http://openvpn.net/. Он довольно средненько написан, и по-моему не работает на 64-битных машинках, но чтобы поиграться/сделать прототип, его хватит. А потом перепишете, если дело пойдет.
K> а как на счет виртуалтного минипорт драйвера из DDK ?
А он, по-моему, ничего делать не умеет, кроме как сидеть в систрее и прикидываться сетевым интерфейсом. Т.е., траффик через него не пропустишь.
Если бы все было так просто, вряд ли бы ребята из OpenVPN стали бы возиться со своим драйвером. Тем более, что он у них не очень получился
Pzz>А он, по-моему, ничего делать не умеет, кроме как сидеть в систрее и прикидываться сетевым интерфейсом. Т.е., траффик через него не пропустишь.
Но ведь на ping он могет отвечать...
Я просто не знаком с ndis, поэтому наверное многого не понимаю
Pzz>Если бы все было так просто, вряд ли бы ребята из OpenVPN стали бы возиться со своим драйвером. Тем более, что он у них не очень получился
Так если он не очень получился — стоит ли его смотреть ?
Неужели так сложно системе отдать пакет и забрать ответ на него
Здравствуйте, k732, Вы писали:
K>Можно ли как отправить/получить IP-пакеты системе?
K>Приложение имеет доступ к IP-трафику и нужно имитировать сетевой адаптер (как будто на него приходят данные и что он отправляет данные).
K>Можно ли это как-нибудь сделать ?
Тоесть вам нужно прокидывать сетевые пакеты, так чтобы какя то програмка их ловила?
Я думаю WinPCap вам поможет как нельзя лучше. Выбираете на какой адаптер валить пакеты и валите, API простое до безобразия.
Здравствуйте, k732, Вы писали:
Pzz>>А он, по-моему, ничего делать не умеет, кроме как сидеть в систрее и прикидываться сетевым интерфейсом. Т.е., траффик через него не пропустишь. K>Но ведь на ping он могет отвечать...
ping на собственный адрес не проходит через сетевой адаптер.
Pzz>>Если бы все было так просто, вряд ли бы ребята из OpenVPN стали бы возиться со своим драйвером. Тем более, что он у них не очень получился K>Так если он не очень получился — стоит ли его смотреть ?
Он good enough для прототипа. Но в нем есть некоторое количество ошибок, заметное невооруженным вглядом. Не знаю, поправили ли они их. Если нет, то иногда он будет глючить. Достаточно редко для прототипирования, но в релиз бы я не стал это отдавать. Кроме того, в нормальной релизнутой программе драйвера хорошо бы иметь подписанными, чтобы система не задавала лишних вопросов при инсталляции драйвера. Для того, чтобы получить подпись от микрософта, надо програть ихние довольно скурпулезные тесты. Я не уверен, что Tap-Win32 их пройдет.
K>Неужели так сложно системе отдать пакет и забрать ответ на него
Драйвера для винды писать довольно трудно, из-за довольно нетривиальной (и местами неясно документированной) модели жизни, в которой они живут.
Потом, трудно — понятие относительное. Я такой драйвер напишу недели за 2-3, вопрос захочу ли?
D>Тоесть вам нужно прокидывать сетевые пакеты, так чтобы какя то програмка их ловила?
Именно. Тоесть приложение на TCP уровне
D>Я думаю WinPCap вам поможет как нельзя лучше. Выбираете на какой адаптер валить пакеты и валите, API простое до безобразия.
вся проблемма в том, что нет адаптера Его нужно сэмитировать.
З.Ы. Но даже если есть — как понять что ответы пришли (где посмотреть описание работы с WinPcap ?)
Pzz>Потом, трудно — понятие относительное. Я такой драйвер напишу недели за 2-3, вопрос захочу ли?
везет тебе... я в написании драйвера имел опым максимум к достуту к экспортам.
Если мне сейчас заниматься NDIS — то на это уйдет несколько месяцев. Да и еще документации почти нет...
Здравствуйте, Danchik, Вы писали:
D>Тоесть вам нужно прокидывать сетевые пакеты, так чтобы какя то програмка их ловила? D>Я думаю WinPCap вам поможет как нельзя лучше. Выбираете на какой адаптер валить пакеты и валите, API простое до безобразия.
Насколько я понимаю, WinPCap валит пакеты "наружу". Чтобы их можно было поймать на той же машине, драйвер должен их уметь заворачивать назад, что не каждый драйвер умеет (впрочем, есть стандартный мелкософтовский драйвер по фамилии MS Loopback, который именно это и делает).
Кроме того, если принимать пакеты WinPCap'ом, то их будет принимать и система. И реагировать на них она может достаточно неадекватно. Например, послать TCP RST.
Здравствуйте, Pzz, Вы писали:
Pzz>Здравствуйте, Danchik, Вы писали:
D>>Тоесть вам нужно прокидывать сетевые пакеты, так чтобы какя то програмка их ловила? D>>Я думаю WinPCap вам поможет как нельзя лучше. Выбираете на какой адаптер валить пакеты и валите, API простое до безобразия.
Pzz>Насколько я понимаю, WinPCap валит пакеты "наружу".
не совсем понял
Pzz>Кроме того, если принимать пакеты WinPCap'ом, то их будет принимать и система. И реагировать на них она может достаточно неадекватно. Например, послать TCP RST.
да пусть реагирует как хочет. Если она на себя берет TCP соединение — это ее право. Мне нужно лишь ретранслировать пакеты в систему и получать ответы. Тоесть я работаю на MAC уровне и за TCP не отвечаю
Здравствуйте, k732, Вы писали:
Pzz>>Потом, трудно — понятие относительное. Я такой драйвер напишу недели за 2-3, вопрос захочу ли? K>везет тебе... я в написании драйвера имел опым максимум к достуту к экспортам.
Везло бы мне, если бы я всю жизнь мечтал писать виндовые драйвера. А я это занятие терпеть ненавижу
K>Если мне сейчас заниматься NDIS — то на это уйдет несколько месяцев. Да и еще документации почти нет...
Вся нужная тугаментация есть в DDK. Ее же можно читать в онлайне на мелкософтовском сайте. DDK можно заказать в Россию на CD за $25, и время от времени можно скачать с ихнего сайта забесплатно.
K>Печально, но что-то нужно делать
Ну вот и возьми Tap-Win32. На первые полгода-год этого хватит.
Pzz>Ну вот и возьми Tap-Win32. На первые полгода-год этого хватит.
вопрос стоит 2-3 недели. Все готово кроме этого. Если получиться общаться с ситемой, то остальное дело техники — приложения на более высоком уровне. (DHCP, DNS, WEB...)
Здравствуйте, k732, Вы писали:
Pzz>>Насколько я понимаю, WinPCap валит пакеты "наружу". K>не совсем понял
WinPCap позволяет 1) послать пакет через такой-то сетевой интерфейс 2) принять пакеты, пришедшие на такой-то сетевой интерфейс (все или с фильтром, фильтр достаточно быстрый). Это не то же самое, что добавить в систему сетевой интерфейс.
WinPCap тоже приносит с собой NDIS'овский драйвер, только не минипорт, а протокол. Если сравнивать с Tap-Win32, трудно сказать, кто из них хуже