2011-04-15 21 views
6

Más o menos lo que estoy preguntando es "cómo hacer un firewall de software para Windows", pero algo no tan complejo. Me sorprende que pueda encontrar muy poco cuando busco esto, solo la mención ocasional de ganchos. Por lo tanto, sería muy apreciado si alguien pudiera señalarme en la dirección correcta.Creación de un programa que intercepta el tráfico de red en Windows

Espero hacer esto con C (aunque si hay otro idioma que crees que funcionaría mejor, soy todo oídos). Quiero hacer una aplicación que mire el tráfico de red, pueda extraer la dirección IP (fuente de entrada, destino de salida) y pueda bloquear dicha actividad de red.

Esto parece algo mucho más fácil de hacer en el kernel, pero no quiero perder el tiempo allí, ni siquiera tengo acceso para hacerlo en Windows. No estoy preocupado por la eficiencia, ni estoy buscando hacer un firewall personal. Esto es solo para un experimento con respecto a las direcciones IP.

¿Alguna sugerencia?

Nota: Es importante que yo sea capaz de bloquear cierta actividad de la red a la red también, no sólo supervisarlo

Respuesta

5

La forma de bricolaje sería ir en modo kernel, usando filter-hook drivers (para Windows 2000-XP) o WFP Callout Drivers.

Si desea que otros hagan el trabajo sucio en kernel-mode, el controlador/biblioteca WinPcap posee muchas características de red de bajo nivel, incluidas las que necesita, que puede usar desde el modo de usuario (observe que usando WinPcap no puedes soltar paquetes).

+0

Debería haber dejado esto más claro en la pregunta original, pero dejar caer paquetes (lo que supongo que tengo que hacer para bloquear el tráfico de red) es un requisito importante aquí. Varias personas sugirieron WinPcap, pero no tiene esa capacidad? En ese caso, debería ver esos controladores de filtro de enlace entonces. – cost

+0

@costo: no, no tiene esa capacidad, como se explica en su página de preguntas frecuentes. –

1

Usted quiere mirar libpcap and tcpdump.

+2

tcpdump y libpcap no se ejecutan en Windows. Creo que se refería a WinPcap y WinDump. –

0

prueba winpcap. Como "tcpdump con una GUI", puedes probar wireshark.

+0

Quiero ser capaz de bloquear el tráfico potencialmente también, ¿lo puede hacer wireshark? – cost

+0

@cost hasta donde yo sé, no –

1

Creo que lo que está buscando es un detector de paquetes, interceptará casi todas las comunicaciones a través de una red. Si desea utilizar una biblioteca, consulte WinPCap, que fue diseñado para este propósito.

Además, si cree que solo quiere algo escrito previamente y solo desea modificarlo, consulte Wireshark. Aunque, leer el código es a menudo más difícil que escribirlo.

3

Parece que lo que estás buscando es un Winsock Service Provider Interface (SPI) Layered Service Provider (LSP). Por lo que ha dicho, si está tratando con Vista o más reciente, probablemente quiera implementar una instancia de la clase LSP_INSPECTOR. Para las versiones anteriores de Windows, esa clase no se aplica exactamente, pero la misma idea general sí. En Vista/7, establece la categoría (clase) para su aplicación con WSCSetApplicationCategory. Para instalar su proveedor, complete una estructura WSAPROTOCOL_INFO, luego regístrelo llamando al WSCInstallProvider.

+0

Parece la mejor solución. ¿Puede interceptar datos enviados a un socket TCP en un programa que ya está compilado? – Navin

Cuestiones relacionadas