Er det ikke en mulighed at blokere i firewall'en ? (Det lyder lidt som et virksomheds-scenarie, at blokere Messenger - og der er jo sikkert en firewall i forvejen).
Pas i øvrigt på med at blokere port 443 helt, den bruges jo også til HTTP SSL.
Nu skriver du at du vil ha' lavet en service ("tjeneste") som spærrer for de 2 porte, men ville det ikke være nemmere og blokere dem i firewall'en? Enten i windows eller i routeren (Hvis en sådan findes)?
jeg er ikke helt sikker her, men jeg mener at min arbejdsgiver forsøgte noget lign. i sin tid men de fik ørene gevaldigt i maskinen fordi det iflg. persondataloven faktisk er forbudt at shape på krypterede data, og dermed på port 443 som jeg pr. default er HTTPS porten, blot et lille indspark.
Og, hvis det kører som et program på maskinen, vil der næsten altid være en måde at omgå det på, hvis brugerne er administratorer. Og hvis de ikke er administratorer, ville det måske bare være nemmere simpelthen at spærre af for messenger med permissions ?
Når det er sagt, hvis opgaven går ud på at spærre for brugernes messenger adgang, så bruger de sikkert bare nogle af de online (http) baserede klienter ...
Jeg havde et eksempel i C# engang hvor jeg kunne lytte på en raw socket. Det kunne måske bruges til filtrering - men det kræver en del arbejde, og jeg mener at der er problemer med at få det til at virke på Vista.
Måske du kan komme lidt videre med det her. Det er noget jeg skrev på meget, meget prototype stadie en gang jeg undersøgte noget andet. Men det skulle demonstrere hvordan du kan få fat på bytes sendt på linjen, udenom TCP og IP protokollerne (så hvis du vil finde ud af om en TCP port er i brug er du nødt til at fortolke pakkerne og finde TCP informationen.
using System; using System.Net; using System.Net.Sockets;
namespace dr.Sniffer { public class Sniffer { Socket socket = null; const int SIO_RCVALL = unchecked((int)0x98000001);
byte[] packet = new byte[4096];
public void Bind(IPAddress ip) { Close(); byte[] ioc_in = new byte[4] {1, 0, 0, 0}; byte[] ioc_out = new byte[4];
socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Unspecified ); socket.Blocking = true; // Bind it to an IP and listen socket.Bind(new IPEndPoint(ip, 0)); // Include headers in packets returned socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, 1);
// Set RCVALL so we get all packets socket.IOControl(SIO_RCVALL, ioc_in, ioc_out); // Check for errors in the IOControl call if( ioc_out[0] + ioc_out[1] + ioc_out[2] + ioc_out[3] > 0 ) { socket.Close(); socket = null; throw new ApplicationException("Error calling IOControl."); } }
public RawPacket GetPacket() { int len = socket.Receive(packet,SocketFlags.None); if ( len > 0 ) { byte [] bout = new byte[len]; for(int i = 0 ; i < len ; i++ ) bout[i] = packet[i]; return new RawPacket(bout);
} else return null; }
public void Close() { if ( null != socket ) { socket.Close(); socket = null; } } } }
super Driis, det vil jeg gerne give nogle point for det hjalp mig en smule videre, tusind takker.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.