Falls es überhaupt noch einen interessiert:
1.) Ich denke mal nicht (berichtige mich, wenn ich falsch liege) das du genug Erfahrung für so ein Projekt besitzt.
2.) Die Lösung lässt sich auch ohne Treiber lösen.
Es gibt hier jedoch ein paar Faktoren zu beachten:
1.) Ist diese "Schnittstelle" (=Paketfilter) auf der Seite des Servers oder des Clients?
Wenn beim Server:
Basiert das Protokoll auf TCP oder UDP? Zweiteres lässt sich ohne Zuhilfenahme von externen Treibern nicht ohne weiteres bewerkstelligen, da man die IP des Clients zwingend simulieren müsste. Bei TCP ist dies nicht nötig, da ein fester Stream zwischen Schnittstelle und Server den Paketfilter immer erkennen lässt, an welchen Client das Paket geschickt werden soll.
Jetzt zum Teil, wie man das machen könnte (Für Leute, die genug Erfahrung hätten und es interessiert):
Im Normalfall sieht eine Verbindung quasi so aus:
Client <---> Server
Du möchtest jetzt jedoch "dazwischen", damit du quasi die Pakete auch filtern kannst.
Dann würde die Verbindung folgendermaßen aussehen:
Client <---> Paketfilter <---> Server
Jedoch weiß der Client nicht, dass das nicht der "richtige" Server ist, und der Server weiß nicht das es nicht der "richtige" Client ist.
Im Grunde hat der Paketfilter also zwei TCP-Verbindungen: Eine zum Server, und eine zum Client. Jeweils mit Input und Output. Alle Pakete, die VOM Client kommen, werden ZUM Server weitergeleitet, und alle Pakete die VOM Server kommen, werden ZUM Client weitergeleitet.
Soviel zur Theorie, in der Praxis lässt sich dies durch ganz einfache TcpClients und TcpListener, TcpListener braucht man im Grunde nur bei der Stelle, an der man auf das erste einkommende Paket wartet.
Ach, was ebenfalls noch wichtig ist: Der, der das "Begrüßungspaket", also das erste Paket, sendet, muss wissen das er nicht auf die IP/den Hostnamen des Servers, sondern zu den Daten des Paketfilters verbinden soll. In einigen Programmen gibt es eine eigene Option ala. "IP" oder ähnliches, in der die IP oder eben der Hostname enthalten ist, in manchen jedoch muss man sich die ausführbare Datei genauer mit einem HEX-Editor ansehen, und die IP händisch editieren (Das kann etwas dauern).
MfG,
Rynti!