Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: mellizo1986 en 21 Abril 2014, 18:35 pm



Título: Problema de conceptos con "Drivers, Ndis y Adaptador de Red"
Publicado por: mellizo1986 en 21 Abril 2014, 18:35 pm
Hola amigos, les comento mi problema

Necesito crear un adaptador de red virtual desde una aplicación escrita en C o C++, para ello estuve leyendo varios post de como crear drivers, varios documentos sobre ndis, tambien estuve revisando el código de OpenVPN, en fin varios días tratando de entender el tema pero no logro concretar como lograr escribir mi aplicación, por favor cualquier ayuda se agradece de antemano.








Título: Re: Problema de conceptos con "Drivers, Ndis y Adaptador de Red"
Publicado por: Eternal Idol en 21 Abril 2014, 19:38 pm
¿Que estas tratando de hacer exactamente?

Un adaptador de red virtual no es lo mismo que un VPN (Virtual Private Network), para el primero tenes a mano el "Microsoft Loopback Adapter", netloop.inf para instalar y el binario es el loop.sys que en x64 pesa 7.50kb y tiene apenas 10 funciones importadas de NDIS.sys, es un poco viejo (basado en NDIS 5.0) pero Windows 7 lo sigue instalando. En el WDK tenes ejemplos de miniports para NDIS 5.0 y 6.0.


Título: Re: Problema de conceptos con "Drivers, Ndis y Adaptador de Red"
Publicado por: mellizo1986 en 21 Abril 2014, 21:01 pm
Gracias por responder Eternal, te comento que estuve revisando el OpenVPN porque el mismo instala un adaptador de tipo TAP entonces pense que revisando el code me daría una idea de como implementarlo, tambien estuve pensando en revisar el code de VirtualBox que tambien hace algo parecido, o sea, agrega un adaptador de red pero aún no lo he chequeado y a medida que estuve insertandome en el tema, fui entendiendo al menos que los adaptadores de red pueden ser de varios tipos (TUN, TAP, NDIS...), a partir de esto decidí que pudiera ser por NDIS la solución, en fin todavía estoy un poco liado con los conceptos, porque realmente lo que quiero implementar es como agregarle un adaptador de red a windows para q luego el SO pueda enrrutar paquetes sobre esa interfaz de red.

Sobre el WDK en estos momentos lo estoy descargando pero creo que los ejemplos son sobre la construcción de drivers y me surge otra duda.

Para crear un nuevo adaptador de red de tipo NDIS o TAP tengo que implementar un driver para el mismo ?

Pudiera utilizar alguno de los referidos anteriormente ?

Eternal exactamente estoy tratando de comunicar una aplicación desde mi pc con otra pero necesito hacerlo por una interfaz de red creada virtualmente, como por ejemplo cuando se conecta el movil al pc y se aplica el anclaje de red, se me adiciona en mi pc un nuevo adaptador de red tipo NDIS, o cuando instalas el VMWare o VirtualBOX se instalan nuevos adaptadores virtuales y lo mismo cuando instalas OpenVPN adaptador de tipo TAP.

Espero haberme explicado bien para obtener cualquier tipo de ayuda.
Agradecido mellizo1986.


Título: Re: Problema de conceptos con "Drivers, Ndis y Adaptador de Red"
Publicado por: Eternal Idol en 21 Abril 2014, 23:12 pm
Si, el WDK es casi exclusivamente para modulos de modo Kernel.

A menos que quieras que hagan solamente lo que ya hacen (el loopback nunca sale al exterior por ejemplo) si necesitarias hacer uno nuevo.

En realidad continuamos sin saber la razon por la cual no podes usar sockets por ejemplo.


Título: Re: Problema de conceptos con "Drivers, Ndis y Adaptador de Red"
Publicado por: mellizo1986 en 22 Abril 2014, 16:41 pm
Gracias por la respuesta, seguire estudiando...

La variante de sockets ya la había analizado pero no resuelve mi problemática, puesto que necesito enrrutar packetes de windows a travéz de una interfaz de red, no solo es comunicar dos aplicaciones entre si, si no redirigir tráfico de red desde win por una interfaz determindad hacia otros dispositivos.


Título: Re: Problema de conceptos con "Drivers, Ndis y Adaptador de Red"
Publicado por: sanenr en 22 Abril 2014, 19:16 pm
tal vez no lo sabias pero en windows o talvez te sirva  en windows bajo la misma interfaz de red, puedes configurar en configuracion avanzada


- varias redes (192.168.0.1, 10.10.0.1,192.168.3.1.. etc)
- varias compuertas de enlace, 192.168.0.254, 10.10.0.254, 192.168.3.254.. etc)
- varios DNS ...

de esta forma puede salir o enrutar a cualquier red, por cualquier GATEWAY, o DNS aplica el comando ROUTE ,


suerte si te sirve. ya que no entiendo que deseas hacer detalladamente!