Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
WinXP sp2 и посылка своих пакетов
 
Суть проблемы такова. Нужно отправить вручную сформированный сетевой пакет (адрес отправителя реальный, программ не для спуффинга). Но Windows XP sp2 запрещает формировать и отправлять свои пакеты через сырые сокеты(raw sockets) библиотеки winsock2. Как можно сформировать и отправить свой tcp (ip,udp,icmp и т.д.) пакет с этой ОС? Пока мысли в сторону устройств device\afd , device\tcp, device\udp и т.д. и их драйверов.
Но как это сделать я пока не представляю. + Возможно есть ещё какие-то другие способы,не юзая эти устройства.  Может кто-нить сталкиваося с такой проблемой и знает как её решить?

P.S. Не хотелось бы использовать WinPCap или писать свой драйвер. Это я оставлю на крайний случай.
 
Цитата
Soldier of Fortune пишет:
Пока мысли в сторону устройств device\afd , device\tcp, device\udp и т.д. и их драйверов.
Ну всё верно правильный путь...
Смотря как хочешь всё сделать от того и будет план дальнейших действий....
Если сеть на уровне драйвера значит два пути....
Первый путь: интерфейс TDI - интерфейс трайнсвортного устройства <- попроще :)
Второй путь: интерфейс NDIS - интерфейс сетевого драйвера <- посложнее, т.к. надо кодить свой стек TCP/IP...
Я бы советовал кодить на TDI...
:)
 
Ну впринципе я как раз так и начал делать (через TDI).

Но нельзя ли всё-таки в user space к этим устройствам как-нить обратиться???
А то реально многовато мороки, хотя всё-таки думаю осилю и в kernel mode...
 
Цитата
Soldier of Fortune пишет:
Но нельзя ли всё-таки в user space к этим устройствам как-нить обратиться???
Soldier of Fortune я не совсем уверен, но может тогда, раз TDI не нравится реализуешь сокеты через NativeAPI :)
Посредством их происходит связь UserMode с KernelMode... Хотя это ещё больший геморой :| !!!
 
SXD, насчёт Native API - это точно гемор. Тем более что функциональность наверняка будет ниже, чем в случае с TDI. Поэтому лучше уж через интерфейс TDI - проще и эффективней. Нашёл пару примеров сейчас разбираюсь. Всё равно спасибо.

P.S. Ещё решил покопаться и узнать где стоит это ограничение на raw сокеты при формировании пакетов и попробовать его исключить. Вроде говорят на драйвер tcpip.sys.
Ещё возможно поищу сторонние драйвера и библиотеки, хотя изначально хотел всё реализовать без чужого кода.
 
Цитата
Soldier of Fortune пишет:
TDI - проще и эффективней
Да так, наверное, будет лучше... Если будут проблемы -> обсудим...  ;)
 
Soldier of Fortune я вот подумал, что эта защита "один пень" организована на уровне ядра - драйвер...
Поэтому в принципе просто отключи это ограничение через реестр и пиши в UserMode...
Код
HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\Afd\\Parameters\\
DWORD DisableRawSecurity = 1;

Должно в принципе работать  :)  С уважением sxd...
 
Цитата

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Afd\Par­ameters\
DWORD DisableRawSecurity = 1

Нет, не помогает.
Сейчас вовсю шуршу с драйверами. Вроде пока всё ясно и дело идйт полным ходом. Решил делать через TDI.        
SXD огромное спасибо за советы.          С уважением SoF...
 
Цитата
Сейчас вовсю шуршу с драйверами. Вроде пока всё ясно и дело идйт полным ходом. Решил делать через TDI.
Я боюсь как бы нам с тобой не обломаться... :|
Там защита может на уровне ядра быть... Может "конфликт назреть"...
 
В общем было дадено добро на использование WinPCap и дальше я не парился с TDI. Однако уже после завершения работы над прогой, я чисто для себя покопал насчёт этого ограничения...  Похоже на то, что ограничение действительно стоит в драйвере tcpip.sys, который контролит работу устройств device\tcp,  device\RawIp и других. А это значит, что под контролем виндовый стек протоколов, а уровень TDI уже не подходит, т.е. нужно работать с NDIS и писать свой стек. Что мягко говоря * * *. Т.е. для фильтрации пакетов работа с  TDI - самое то, а вот свой пакет отправить вероятнее всего не получится. Так что SXD боюсь вы правы. Вот так.

Будет время ещё покопаюсь, в частности попробую прехватить вызовы zwCreateFile и CreateFile к устройствам \Device\afd и т.д. и посмотреть что там делается. О результатах по возможности отпишусь.
 
Soldier of Fortune так на NDIS реализовывать не будете?
 
Нет, вряд ли. Сейчас в свободное время разберусь окончательно с этим ограничением. WinPCap всё равно через NDIS пашет, незачем такой громоздкий велосипед изобретать по 2-ому разу ;).

Хорошая ссылка в тему: http://blog.chinaunix.net/u/31179/showart_285999.html
 
Soldier of Fortune спасибо классные ссылки нашёл...
Цитирую тебя: "Инфа лишней не бывает, спасибо ". :)
 
В общем продолжил мучать данную проблему... Полностью пока решения не нашёл. Для отправки сырых пакетов можно использоват NDIS protocol driver из DDK 2003 (ndisprot.sys). Или модификацию с CodeProject:
http://www.codeproject.com/cs/internet/sendrawpacket.asp

Почему проблема не решена полностью? Потому что на этом уровне NDIS присутствуют кое-какие ограничения (на мой взгляд серьёзные): например нельзя отправлять через WAN адаптеры(dial up вообщем) и др.
 
Цитата
Почему проблема не решена полностью? Потому что на этом уровне NDIS присутствуют кое-какие ограничения (на мой взгляд серьёзные): например нельзя отправлять через WAN адаптеры(dial up вообщем) и др.
Привет Soldier of Fortune... Дай конкретное описание проблеммы... имею в виду что именно сделал... то что не получилось...
 
Проблема? В принципе скорее это не проблема,а препятствие. И я бы назвал его как "отсутствие УНИВЕРСАЛЬНОГО ПРОСТОГО способа отправки сырых пакетов в WinXp sp2". И поднявшись с уровня WinSock до Ndis Protocol Driver, я так и не нашёл универсального  способа отправить  сырой пакет. Конкретно по NDIS Protocol Driver: его просто нельзя установить для некоторых адаптеров, например когда в роли адаптера выступает dial-up модем. А для обычных сетевых карточек - спокойно работает. Вот так-то. Сейчас у меня нет ни времени, ни нужды продолжать копаться (как я уже писал для написания проекта я использовал WinPCap, который кстати тоже реализован через NDIS Protocol Driver).

P.S. Теоритически УНИВЕРСАЛЬНЫЙ способ отправить свой вручную сформированный сырой пакет в WinXp sp2 возможно всё же есть: через NDIS Intermediate Driver и виртуальный адаптер, но я этого не проверял.
 
Да... хм, действительно... надо подумать о модеме...
Странно...
Цитата
Soldier of Fortune пишет:
NDIS Intermediate Driver и виртуальный адаптер
Неплохая идея... Реализовывать будешь?
 
Нет. Как обычно здесь всё упирается во время которого нет(((
 
Цитата
Soldier of Fortune пишет:
всё упирается во время которого нет(((
Вот-вот... Эх... Это точно... ((( Время летит просто с бешенной скоростью... И самое главное его жутко не хватает (((((((((((
 
Soldier of Fortune,
Слушай, тут вот тоже примерчик попался (не знаю может он у тебя уже и есть...) на глаза для твоей коллекции ))))))))))
Ссылка на скачивание RAW Send.
Страницы: 1
Читают тему