Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Denegar acceso a URL (https://www.clubdelphi.com/foros/showthread.php?t=63003)

escafandra 25-01-2009 23:16:22

Denegar acceso a URL
 
Tengo que denegar el acceso a determinadas URLs y permitírselo a las demás. En principio parece un problema simple que resuelven muchos filtros así que no me pareció complejo.

En un principio pensé en hacer un Hook a la API InternetOpenUrlA o InternetOpenUrlW. De forma que me armé del OlliDbg y me puse a invertigar el iexplore.exe. Sorpresa, el iexplore no carga Wininet.dll y por lo tanto no usa esa API. Sin embargo explorer.exe si lo hace, así es que hice un pequeño experimento con un hook a InternetOpenUrlA, lo coloque en una dll y lo inyecté en explorer.exe... No funciona. Explorer abre iexplore directamente al encontrarse una URL. Tampoco funciona si lo inyecto en iexplore.exe, como ya esperaba que ocurrriese.

Se me ocurre, entonces, un Hook al GET de Ws2_32.dll, pero posiblemente sólo capturaría la primera URL y no las enlazadas.

Despues de buscar en la red, no he sacado nada en claro.

¿A alguien se le ocurre como hacerlo? ¿Un Hook a otra API funcionaría?

Gracias a todos por vuestro tiempo.
Saludos.

dec 25-01-2009 23:27:22

Hola,

Voy a copiarte un mensaje que hace poco escribí aquí:

Cita:

Empezado por dec
Echa un vistazo a WinPCap (Windows Packages Capture) porque puede interesarte. Hay disponible material para Delphi para trabajar con WinPCap y creo que por ahí van los tiros. Ahora, yo he llegado hasta "interceptar" los paquetes que llegan, por ejemplo, mediante el protocolo "HTTP", pero, "simular la aplicación servidora" no me fue posible, y no sé si lo será o qué: lo cierto es que abandoné antes de avanzar más en el asunto. Pero tú echa un vistazo a ver si puede servirte WinPCap para lo que necesitas. Piensa que un programa como WireShark hace uso de WinPCap.

No sé. Pienso que igual podría dar resultado... :rolleyes:

escafandra 26-01-2009 01:16:47

Muchas gracias dec. Siempre aportas información y documentación interesante. Lo he mirado por encima y he visto que se sirve del modo Kernel. Intuía una solución parecida pero confiaba en una forma mas sencilla con APIs en modo usuario.

Miraré mas despacio la documentación que proporciona el paquete. Me interesaría implementar yo mismo una solución a este tema y quizás obtenga buenas ideas si analizo el código fuente. Todas las ideas son bien recibidas.

Muchas gracias y un saludo.

cHackAll 26-01-2009 01:26:43

Hola

escafandra 26-01-2009 12:20:40

Gracias cHackAll. En realidad lo que quiero es restringir el acceso a Internet a unas poquitas páginas, de tal forma que mas que una lista negra, lo que tengo es una lista blanca. Tenía pensado hacerlo por código prescindiendo de aplicaciones externas de terceros.

Saludos.

cHackAll 30-01-2009 02:33:26

Entiendo; en tal caso una solucion de mayor nivel de programacion seria utilizando un servidor Proxy; en el caso de usar una red instalas dos NICs en el que habra de ser el servidor y con algun programa puedes "abrir" y/o "cerrar" URLs/IPs especificos.

En otro caso podrias crear un cliente proxy para que se conecte a algun servidor de internet, definiendo en el mismo los sitios aceptados/restringidos.

Saludos

escafandra 30-01-2009 19:37:25

Gracias cHackAll. Siempre tienes buenas ideas.

De momento me he puesto a complicarme un poco la vida y estoy experimentando con un Hook al WinSock. He comenzado a experimentar con connect y puedo interceptar la IP..., Claro todo inyectando código en dll. Pero un verdadero cortafuegos iría mas abajo, al Ring 0. :p

Saludos.


La franja horaria es GMT +2. Ahora son las 14:07:10.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi