AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Firewall nur mit bestimmtem/n port/ports
Thema durchsuchen
Ansicht
Themen-Optionen

Firewall nur mit bestimmtem/n port/ports

Ein Thema von k4ni · begonnen am 27. Jan 2008 · letzter Beitrag vom 7. Feb 2008
Antwort Antwort
k4ni

Registriert seit: 17. Jul 2007
Ort: Ulm
258 Beiträge
 
Delphi 7 Enterprise
 
#1

Firewall nur mit bestimmtem/n port/ports

  Alt 27. Jan 2008, 03:26
hey leutz,

Ihr hab ich das DropAllU von x000x:
Delphi-Quellcode:
unit DropAllU;
{
Aufruf:
  InstallFW('192.168.0.2');

und zum schluss:
  RemoveFW;
}


interface

   procedure InstallFW(MyIP: String);
   procedure RemoveFW;

implementation

uses Windows;

const
     IPHLPAPI = 'IPHLPAPI.DLL';

type
  PFFORWARD_ACTION = Integer;
  PPFFORWARD_ACTION = ^PPFFORWARD_ACTION;
  //
  INTERFACE_HANDLE = Pointer;
  //
  PFADDRESSTYPE = Integer;
  PPFADDRESSTYPE = ^PFADDRESSTYPE;
  //
  TByteArray = Array [0..Pred(MaxInt)] of Byte;
  PByteArray = ^TByteArray;
  TIpBytes = Array [0..3] of Byte;

const
  PF_ACTION_DROP = 1;

const
  PF_IPV4 = 0;

function PfCreateInterface(
           dwName: DWORD;
           inAction: PFFORWARD_ACTION;
           outAction: PFFORWARD_ACTION;
           bUseLog: BOOL;
           bMustBeUnique: BOOL;
           var ppInterface: INTERFACE_HANDLE): DWORD;
           stdcall; external IPHLPAPI name '_PfCreateInterface@24';

function PfDeleteInterface(
           pInterface: INTERFACE_HANDLE): DWORD;
           stdcall; external IPHLPAPI name '_PfDeleteInterface@4';

function PfBindInterfaceToIPAddress(
           pInterface: INTERFACE_HANDLE;
           pfatLinkType: PFADDRESSTYPE;
           IPAddress: PByteArray): DWORD;
           stdcall; external IPHLPAPI name '_PfBindInterfaceToIPAddress@12';

function PfUnBindInterface(
           pInterface: INTERFACE_HANDLE): DWORD;
           stdcall; external IPHLPAPI name '_PfUnBindInterface@4';

var
   Handle_Interface : INTERFACE_HANDLE = nil;

function StrToInt(S: PChar): Integer;
begin
   Result := 0;
   if S = 'then Exit;
   while S^ in ['0'..'9'] do begin
      Result := Result * 10 + Integer(S^) - Integer('0');
      Inc( S );
   end;
end;

function StrToIpBytes( IpStr: String ): TIpBytes;
var N : Integer;
begin
   N := 0;
   while Pos('.', IpStr)>0 do begin
      Result[N] := StrToInt(@Copy(IpStr, 1, Pos('.', IpStr) - 1)[1]);
      Delete(IpStr, 1, Pos('.', IpStr));
      Inc(N);
   end;
   Result[N] := StrToInt(@IpStr[1]);
end;

procedure InstallFW(MyIP: String);
var
   IpLocal : TIpBytes;
begin
   if (MyIP <> '') and Not Assigned(Handle_Interface) then begin
      FillChar(IpLocal, 4, #0);
      IpLocal := StrToIpBytes(MyIP);

      PfCreateInterface(0, PF_ACTION_DROP, PF_ACTION_DROP, False, False, Handle_Interface);
      PfBindInterfaceToIPAddress(Handle_Interface, PF_IPV4, @ipLocal);
   end;
end;

procedure RemoveFW;
begin
   if Assigned(Handle_Interface) then begin
      PfUnBindInterface(Handle_Interface);
      PfDeleteInterface(Handle_Interface);
      Handle_Interface := nil;
   end;
end;

end.
Dies schliest ALLE ports bei der InstallFW() function doch ich will nur einen bestimmten port schliesen. (8484)
Doch wo steht das hier? Oder muss man es dann ganz umschreiben?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Firewall nur mit bestimmtem/n port/ports

  Alt 27. Jan 2008, 10:17
http://msdn.microsoft.com/library/de..._reference.asp
Markus Kinzler
  Mit Zitat antworten Zitat
k4ni

Registriert seit: 17. Jul 2007
Ort: Ulm
258 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Firewall nur mit bestimmtem/n port/ports

  Alt 28. Jan 2008, 00:46
hmm ich hab mir das jetzt mal durchgelesen bei
PfCreateInterface() doch hat mich jetzt nicht wirklich weitergebracht. Es droppt ja alle alles.
Bitte hilfe.
  Mit Zitat antworten Zitat
k4ni

Registriert seit: 17. Jul 2007
Ort: Ulm
258 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Firewall nur mit bestimmtem/n port/ports

  Alt 5. Feb 2008, 16:35
{bump] hmm Kann das sein das es garnicht möglich ist? Also ich bekomms nich gebacken [/bump]
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Firewall nur mit bestimmtem/n port/ports

  Alt 6. Feb 2008, 07:48
Moin moin,

doch es ist möglich...
PfCreateInterface mit PF_ACTION_DROP als 2 und 3 Parameter sagt nur, dass alle Pakete die reinkommen und alle die
die rausgehen und keiner Filterregel entsprechen, geblockt werden.

Du musst einfach noch Filter hinzufügen. Schau dir die funktion PfAddFiltersToInterface an...
Den link zur Doku hast du ja schon.
Delphi-Quellcode:
function PfAddFiltersToInterface(
           ih: INTERFACE_HANDLE;
           cInFilters: DWORD;
           pfiltIn: PPF_FILTER_DESCRIPTOR;
           cOutFilters: DWORD;
           pfiltOut: PPF_FILTER_DESCRIPTOR;
           pfHandle: PFILTER_HANDLE): DWORD;
           stdcall; external IPHLPAPI name '_PfAddFiltersToInterface@24';

function PfRemoveFiltersFromInterface(
           ih: INTERFACE_HANDLE;
           cInFilters: DWORD;
           pfiltIn: PPF_FILTER_DESCRIPTOR;
           cOutFilters: DWORD;
           pfiltOut: PPF_FILTER_DESCRIPTOR): DWORD;
           stdcall; external IPHLPAPI name '_PfRemoveFiltersFromInterface@20';
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Firewall nur mit bestimmtem/n port/ports

  Alt 7. Feb 2008, 19:36
Moin moin,

nochmal ich... Ich habe hier ein kleines Beispiel --> Portfilter
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz