Pregunta

En realidad, lo que intento construir es como una especie de firewall. Debería poder conocer todas las solicitudes que se envían desde mi máquina. Debería poder detener los seleccionados. No estoy seguro de cómo comenzar con esto. Estoy teniendo VS 2008/2005 con framework 2.0. Avíseme si hay alguna clase en particular con la que pueda comenzar y si hay alguna muestra que pueda obtener.

¿Fue útil?

Solución

Los firewalls realmente deberían implementarse bastante bajos en la pila de redes; Sugeriría encarecidamente NDIS. Este artículo puede ser de interés.

Otros consejos

Algo como esto puede ayudarlo a comenzar: http://www.mentalis.org / soft / projects / pmon /

  

Este proyecto C # permite a los administradores de Windows NT interceptar paquetes IP enviados a través de una de las interfaces de red en la computadora. Esto puede ser muy útil para depurar software de red o para monitorear la actividad de red de aplicaciones no confiables.

Como Matt dijo, realmente tiene que ser NDIS.

Asegúrese de asignar mucho tiempo para desarrollar el controlador, recomendaría 6 a 12 meses solo para llevarlo a la etapa de liberación alfa. Habiendo tratado con NDIS, puedo asegurarle que es un dolor como ningún otro.

Si planea lanzar su producto al público, tendrá que pagar unos cuantos dólares para microsoft para obtener la aprobación del controlador (WHQL), de lo contrario, sus usuarios se verán afectados con múltiples cuadros de diálogo desagradables después de la instalación (de quot; este software es críticamente inseguro " variedad). El proceso de aprobación es lento y ya no está disponible para Windows 2000, probablemente para XP pronto. La aprobación de 64 bits es un pago por separado.

Está bloqueado para usar C, pero cualquier pequeño error se amplifica en forma de pantalla azul (por ejemplo, una referencia nula o un ligero desbordamiento del búfer). No puede crear subprocesos, su API es 100% diferente a la API en modo de usuario normal y, en realidad, tratar de comunicarse con el modo de usuario significa tratar con el sistema IRP de hormigueo espinal.

NDIS en sí está sobre-diseñado de una manera mala, estilo MFC. Está restringido a un subconjunto de la API del núcleo (lo que hace que algunas cosas sean muy difíciles, como el acceso al registro). De lo contrario, se produce la descalificación instantánea de WHQL (¡no, no le devolvemos su dinero!).

Cada línea de código debe verificarse a fondo para asegurarse de que se está comportando correctamente para el nivel IRQL en el que se ejecuta (básicamente determina si su código puede ser interrumpido por otros procesos). Llamar a una función API en el nivel incorrecto da como resultado una pantalla azul. Además, la creación de una estructura en la pila de más de 500 a 1000 bytes da como resultado un desbordamiento de la pila (pantalla azul, por supuesto). Solo eso puede producir algunas sesiones de depuración divertidas cuando tienes una pila de llamadas de 15 líneas de profundidad con algunas pequeñas asignaciones en cada función.

A pesar de todo eso, ya pesar de que NDIS ha pasado por 6 revisiones, realmente vale la pena hacerlo si quieres un desafío. La recompensa es un producto de software que se venderá bien porque no muchos otros se atreven a enredarse con ese tipo de cosas. Un requisito importante es el conocimiento del lenguaje ensamblador (para la depuración). Leer sobre el funcionamiento del kernel de Windows también es muy útil (no solo NDIS).

Hace algunos años necesitaba saber sobre el ancho de banda de red que utilizan todas las aplicaciones en un sistema Windows.

Sin tener idea de la magnitud de la tarea que estaba realizando, procedí a aprender a escribir un controlador de filtro TDI.

Tomó cerca de dos años. Dos años a tiempo completo , desde que vivía de algunas opciones sobre acciones. Sin embargo, NDIS es más fácil que TDI. Orgulloso como dice el hombre, un año a tiempo completo.

Puede hacer cosas de firewall en el nivel TDI y es bueno allí, ya que puede asociar sockets con aplicaciones (que no puede hacer en NDIS). También puede bloquear y / o enviar formas de ancho de banda. Puede bloquear las recepciones, pero realmente no puede dar forma a las recepciones en TDI, porque no puede pausar (la ruta del código de recepción se ejecuta en DISPATCH_LEVEL). Descubrí una forma de evitarlo y obtuve una patente, pero no lo recomendaría desde un punto de vista técnico.

OTOH un hacker real simplemente pasará por alto TDI y hablará directamente con el controlador NDIS; un cortafuegos TDI es evitable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top