Delphi-PRAXiS

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 13:06


Netzwerkports auffinden und sperren ?????
 
Ich hab vor ein kleines Tool zu programmieren das beim Starten des Systems alle Netzwerkports dicht macht. :drunken: Leichter gesagt als getan...

-Autostart über registry. = klar
-Auffinden der Ports = keine Ahnung
-Sperren und freigeben der Ports = keine Ahnung

Was auch noch gut wäre ist das man die Anwendung nicht unter Anwendungen im TastManager sieht. Wenn jemand erfahrnung hat wäre echt nett...

Phistev 7. Nov 2005 13:18

Re: Netzwerkports auffinden und sperren ?????
 
Der ganz einfache Weg wäre: Nutze 'ne Firewall. Die macht alles dicht, was du nicht offen haben möchtest.

Wenn du unbedingt selber programmieren möchtest: Unter "Anwendungen" taucht nur das auf, was ein Fenster hat. Ansonsten beschäftige dich mal mit Sockets (oder Treiberprogrammierung, wenn's nicht anders geht.)

Unplugged 7. Nov 2005 13:19

Re: Netzwerkports auffinden und sperren ?????
 
also eine krumme Methode wäre, einfach zu versuchen auf allen Ports nen Server zu öffnen, und die jeweils alle eingehenden Verbindungen disconnecten.

Aber pauschal hätte ich auch keine andere Idee zur Lösung.

EDatabaseError 7. Nov 2005 13:21

Re: Netzwerkports auffinden und sperren ?????
 
:cry: doch so schwer.

Es muss halt n Tool sein das alle eingehenden und ausgehenden verbindungen blockiert. (Gegen kleine Kinder)

Phoenix 7. Nov 2005 13:49

Re: Netzwerkports auffinden und sperren ?????
 
Blockieren aller eingehenden Verbindungen: Windows-Firewall.

Blockieren aller ausgehenden Verbindungen: eine andere Personal-Firewall die das unterstützt. z.B. Kerio.

Das Problem an der Geschichte ist dass die ganzen Tools die sowas können in aller Regel Treiber sind, die sich zwischen TCP/IP Stack und allen Anwendungen legen, die darauf zugreifen wollen. Und Treiberprogrammierung mit Delphi: vergiss es einfach. Das hatten wir schon mehrfach, dafür ist Delphi einfach nicht ausgelegt.

Ich würde Dir echt raten auf eine Personal Firewall zurückzugreifen. Ist das einfachste und sicherste. Die Jungs die das Programmiert haben haben nämlich ne gute Ahnung davon was sie machen :)

dfried 7. Nov 2005 13:51

Re: Netzwerkports auffinden und sperren ?????
 
Warum nicht einfach alle Netzwerkkarten deaktivieren? Müsste doch über API-Funktionen gehen?!?

EDatabaseError 7. Nov 2005 13:52

Re: Netzwerkports auffinden und sperren ?????
 
Zitat:

Zitat von dfried
Warum nicht einfach alle Netzwerkkarten deaktivieren? Müsste doch über API-Funktionen gehen?!?

Geht des mit delphi? wenn ja wie?

ripper8472 7. Nov 2005 13:54

Re: Netzwerkports auffinden und sperren ?????
 
na ueber api funktionen, wenn die das koennen

EDatabaseError 7. Nov 2005 14:02

Re: Netzwerkports auffinden und sperren ?????
 
Zitat:

Zitat von ripper8472
na ueber api funktionen, wenn die das koennen

:zwinker: Beispiel wäre nett...

Luckie 7. Nov 2005 14:07

Re: Netzwerkports auffinden und sperren ?????
 
Guck dir mal hier: www.wilsonc.demon.co.uk/delphi_6.htm den Portanalyzer an. Damit soll es angeblich gehen, Anwendungen den Zugriff ins Internet zu sperren. Und einen Port sperrest du, in dem du kein Programm an dem Port horchen läßt.

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 04:02 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