Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Netzwerkports auffinden und sperren ????? (https://www.delphipraxis.net/56527-netzwerkports-auffinden-und-sperren.html)

EDatabaseError 7. Nov 2005 14:32

Re: Netzwerkports auffinden und sperren ?????
 
gut schau ich mir mal an

x000x 7. Nov 2005 20:49

Re: Netzwerkports auffinden und sperren ?????
 
Moin moin,

wenn du wirklich alles sperren willst, dann ist es sogar relativ einfach. Es reicht, per
API ein Interface zu erstellen, welches per Default alles dropt...

Wenn du mehr zum Thema wissen willst, suche mal über Google nach folgenden
Units: fltdefs.pas, iphlpapi.pas bzw. bei MSDN MSDN-Library durchsuchenPacket Filtering Reference

Du hast oben irgendwo nach einem Beispiel gefragt, hier ist ein ganz simples...

Delphi-Quellcode:
{
Aufruf:
   InstallFW('192.168.0.2');

und zum schluss:
   RemoveFW;
}
unit DropAllU;

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:35 Uhr.
Seite 2 von 2     12   

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