![]() |
Re: mini Firewall programmieren ??
Steht doch alles im MSDN: http://msdn2.microsoft.com/en-us/library/aa366415(VS.85).aspx
|
Re: mini Firewall programmieren ??
Ich hab hier mal was für dich:
Delphi-Quellcode:
Credits dafür an x000x.
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. Das schließt allerdings alle ports. Doch ich will auch irgendwie hinbekommen damit es nur einen einzigen schließt. Doch ich kriegs nich hin :gruebel: |
Re: mini Firewall programmieren ??
und was muss ich daüfr an uses einbinden??? und wenn man das dann macht, wird dann auch zb der internetaufbau von firefox gestoppt oder können sich diese programme dem wiedersetzen???
|
Re: mini Firewall programmieren ??
Larsi, ich möchte Dir ja nicht zu Nahe treten, aber ich denke, dass eine eigene Firewall doch noch etwas zu hoch für Dich ist.
Wie Andreas schon erwähnt hat, braucht man einiges an Wissen und wenn Du nicht mal Imstande bist, Dir Informationen selbst zu ergoogln (siehe Deine Posts #7 und #10), ist Dein Vorhaben schon von vorneherein zum Scheitern verurteilt. |
Re: mini Firewall programmieren ??
da hast du wohl rech aber es wäre trotzdem nett wenn mir jemand sagen könnte was ich in die usues einbinden soll :lol:
|
Re: mini Firewall programmieren ??
Du hast eine komplette (funktionierende) Unit. Da brauchst Du nichts mehr in Uses einbinden. Du musst letztendlich nur diese Unit in Dein Programm einbinden und die entsprechenden Funktionen aufrufen.
|
Re: mini Firewall programmieren ??
ok. in dem code da stand ja ganz oben als kommentar sowas wie 192.22.2.3 sperren oder so. dann wird doch da gar nicht alles gesperrt oder???
|
Re: mini Firewall programmieren ??
Wenn Du lesen würdest, was k4ni geschrieben hat:
Zitat:
|
Re: mini Firewall programmieren ??
Speicher die unit unter DropAllU.pas ab und füge es am besten in den ordner des projects ein.
Dann einfach DropAllU zu uses hinzufügen und um die Firewall zu aktivieren benützt du InstallFw('local ip here'); und zum entfernen bzw. deaktivieren benützt du RemoveFw(); Um die local ip zu ermitteln hab ich hier noch was für dich:
Delphi-Quellcode:
Hab ich bin
uses .., .., WinSock;
.. function LocalIP:string; var WSA : TWSAData; ILen : integer; PHst : PChar; PHEn : PHostEnt; begin WSAStartup( $0101, WSA ); ILen := $FF; PHst := StrAlloc( ILen ); gethostname( PHst, ILen ); PHEn := gethostbyname( PHst ); with PHEn^ do result:=format( '%d.%d.%d.%d', [ord(h_addr^[ 0 ]), ord(h_addr^[ 1 ]), ord(h_addr^[ 2 ]), ord(h_addr^[ 3 ])] ); {Nuke the string} StrDispose( PHst ); {Dust and Clean} WSACleanup; end; ![]() |
Re: mini Firewall programmieren ??
Zitat:
Zitat:
EDIT: Da hat ein kleines rotes etwas wohl mal wieder Urlaub |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz