Haciendo un progtwig que intercepta el tráfico de red en Windows

Algo de lo que pregunto es “cómo hacer un firewall de software para Windows”, pero algo no tan complejo. Me sorprende que pueda encontrar tan poco al buscar esto, solo la mención ocasional de los ganchos. Así que sería muy apreciado si alguien pudiera apuntarme en la dirección correcta.

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

Esto parece algo que sería mucho más fácil de hacer en el kernel, pero no quiero andar por ahí, ni tampoco tengo acceso para hacer eso en Windows. No me preocupa la eficiencia, ni busco hacer un firewall personal. Esto es sólo para un experimento con respecto a las direcciones IP.

Cualquier punteros?

Nota: es importante que yo también pueda bloquear cierta actividad de la red, no solo monitorearla

La forma de bricolaje sería ir en modo kernel, utilizando controladores de gancho de filtro (para Windows 2000-XP) o controladores de llamada de WFP .

Si quiere dejar que otros hagan el trabajo sucio en modo kernel, el controlador / biblioteca de WinPcap tiene muchas funciones de red de bajo nivel, incluidas las que necesita, que puede usar en modo de usuario (observe que con WinPcap puede hacerlo). No deje caer los paquetes).

Parece que lo que está buscando es un proveedor de servicios en capas (LSP) con interfaz de proveedor de servicios (SPI) de Winsock. Por lo que ha dicho, si está tratando con Vista o una versión más reciente, probablemente desee implementar una instancia de la clase LSP_INSPECTOR. Para versiones anteriores de Windows, esa clase no se aplica exactamente, pero sí la misma idea general. En Vista / 7, configura la categoría (clase) para su aplicación con WSCSetApplicationCategory . Para instalar su proveedor, complete una estructura WSAPROTOCOL_INFO y luego regístrela llamando a WSCInstallProvider .

Quieres mirar a libpcap y tcpdump .

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

Además, si crees que solo quieres algo escrito previamente y solo quieres modificarlo, visita Wireshark . Aunque, leer el código suele ser más difícil que escribirlo.

prueba winpcap . Como “tcpdump con una GUI” puedes probar wireshark .