Pokaż wyniki od 1 do 5 z 5

Temat: [Delphi] Obsługa systemowego firewall'a

  1. #1
    Dawni Moderatorzy
    Dołączył
    30-03-2005
    Skąd
    Fabryka Wina
    Posty
    393

    Domyślnie [Delphi] Obsługa systemowego firewall'a

    Witam :-)
    Jeden z moich starychhhh artów tym razem na temat obsługi wbudowanego firewall'a systemowego znajdującego się w Windows XP z zainstalowanym Service Pack 2.
    Życzę miłej lektury :-)


    1.Rejestr :
    1.1. Wyjątki
    Oto przykładowy wyeksportowany klucz z rejestru dla wyjątku Gadu-Gadu :

    Kod:
    Windows Registry Editor Version 5.00
    
    
    
    [HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesSharedAccessParametersFirewallP
    olicyStandardProfileAuthorizedApplicationsList] "C:Program FilesGadu-Gadugg.exe"="C:Program FilesGadu-Gadugg.exe:*:Enabled:Gadu-Gadu - program glowny"
    odrazu widać iż aby dodać program do wyjątku w pomocy pliku *.reg należy go zapisać w następującej formie w gałęzi :
    "lokalizacja(podwójny slash)"="lokalizacja(podwojny slash):*:dostep_badz_nie:wyswietlana_nazwa"

    1.2. Wyłączenie bądź włączenie firewall'a
    Wartości pozwalające na włączenie bądź wyłączenie firewall'a zmieniami w tej oto gałęzi :

    Kod:
    Windows Registry Editor Version 5.00
    
    
    
    [HKEY_LOCAL_MACHINESYSTEMControlSet001ServicesSharedAccessParametersFirewallP
    olicyStandardProfile]
    Aby włączyć należy ustawić dla "EnableFirewall" wartość 1 zaś by wyłączyć wartość 0 :
    "EnableFirewall"=dword:00000001
    lub
    "EnableFirewall"=dword:00000000

    1.3. Wyłączenie bądź włączenie obsługi wyjątków
    Lokalizacja klucza jest identyczna jak w punkcie poprzednim, z tą różnicą iż wartość 1 dla "DoNotAllowExceptions" wyłącza obsługę wyjątków natomiast 0 włącza , należy pamietać aby firewall był włączony gdyż wówczas aktywacja obsługi wyjątków mija sie z celem :
    "DoNotAllowExceptions"=dword:00000001
    lub wyłaczenie
    "DoNotAllowExceptions"=dword:00000000

    2. Delphi :
    Należy pamietać iż do każdego unitu do uses dodajemy Registry, dzięki któremu możemy obsługiwać rejestr przy pomocy Delphi.

    2.1 Dodanie i usuwanie wyjątków :
    Można zrobić to na 2 sposoby, oto 1 z nich :
    Kod:
    procedure WyjatekSP2(aktywuj: Boolean);
    
    var
    
    reg: TRegistry;
    
    sp2 : string;
    
    begin
    
    reg := TRegistry.Create;
    
    reg.RootKey := HKEY_LOCAL_MACHINE; //rozpoczynamy otwieranie każdej gałęzi z osobna sp2:=Application.ExeName; //pobranie lokalizacji w której uruchomiono nasz program reg.OpenKey('System', True);
    
    reg.OpenKey('ControlSet001', True);
    
    reg.OpenKey('Services', True);
    
    reg.OpenKey('SharedAccess', True);
    
    reg.OpenKey('Parameters', True);
    
    reg.OpenKey('FirewallPolicy', True);
    
    reg.OpenKey('StandardProfile', True);
    
    reg.OpenKey('AuthorizedApplications', True);
    
    reg.OpenKey('List', True);
    
    if aktywuj = True then
    
    begin
    
    reg.WriteString(sp2,sp2+':*:Enabled:'+ExtractFileName(sp2)); // zapisanie wyjątku wg. opisu z punktu 1.1, natomiast nazwą własną będzie nazwa naszego projektu
    
    end
    
    else if aktywuj = False then
    
    begin
    
    reg.DeleteValue(sp2); //usunięcie wyjątku
    
    end;
    
    reg.CloseKey;
    
    end;
    Procedura ta jest wywoływana w nastepujący sposób :

    WyjatekSP2(true) - wówczas nasz program jest dodany wyjątków
    WyjatekSP2(false) - wówczas jest usuniety z wyjątków

    Druga metoda jest ciut podobna, a polega na rozłożeniu dodawania i usuwania wyjątków na 2 procedury, które należy zadeklarowaa w naszym programie , dlatego też nie będe opisywać poszczególnych linii :
    Kod:
    procedure TForm1.wyjatekdodaj; //dodanie wyjątku
    
    var
    
    rejestr: TRegistry;
    
    sp2: string;
    
    begin
    
    sp2:=Application.ExeName;
    
    rejestr:=TRegistry.Create;
    
    rejestr.RootKey:=HKEY_LOCAL_MACHINE;
    
    rejestr.OpenKey('SYSTEMControlSet001Services SharedAccessParametersFirewallPolicy
    
    StandardProfileAuthorizedApplicationsList',False);
    
    rejestr.WriteString(sp2,sp2+':*:Enabled:'+ExtractFileName(sp2));
    
    rejestr.Free;
    
    end;
    Aby dodać nasz program do wyjątków wystarczy odwołać sie do procedury : wyjatekdodaj;
    Kod:
    procedure TForm1.wyjatekusun; //usuwanie wyjątku
    
    var
    
    usunrej: TRegistry;
    
    sp2: string;
    
    begin
    
    sp2:=Application.ExeName;
    
    usunrej:=TRegistry.Create;
    
    usunrej.RootKey:=HKEY_LOCAL_MACHINE;
    
    usunrej.OpenKey('SYSTEMControlSet001Services SharedAccessParametersFirewallPolicy
    
    StandardProfileAuthorizedApplicationsList',true);
    
    usunrej.DeleteValue(sp2);
    
    usunrej.DeleteValue(sp2+':*:Enabled:'+ExtractFileName(sp2));
    
    usunrej.CloseKey;
    
    usunrej.Free;
    
    end;
    Aby usunąć nasz program z wyjątków wystarczy odwołać sie do procedury : wyjatekusun;

    Natomiast jeśli chcemy do wyjątków dodać inny program niż nasz uruchomiony wówczas wystarczy zmienić w danej procedurze zmienną sp2 z Application.ExeName na lokalizacje pliku który sobie życzymy np: 'c:windowstrojan.exe'

    2.2 Włącz , wyłącz firewall
    Opiszę tu tylko 1 metodę gdyż uważam że jest łatwiesza, ale oczywiście można zrobić to na ten 2 sposób zmieniając odpowiednie gałęzie i klucze wg. metody 1, ale to już wedle uznania :
    Kod:
    procedure WylaczSP2(aktywuj: Boolean);
    
    var
    
    reg: TRegistry;
    
    begin
    
    reg := TRegistry.Create;
    
    reg.RootKey := HKEY_LOCAL_MACHINE;
    
    reg.OpenKey('System', True);
    
    reg.OpenKey('ControlSet001', True);
    
    reg.OpenKey('Services', True);
    
    reg.OpenKey('SharedAccess', True);
    
    reg.OpenKey('Parameters', True);
    
    reg.OpenKey('FirewallPolicy', True);
    
    reg.OpenKey('StandardProfile', True);
    
    if aktywuj = True then
    
    begin
    
    reg.WriteInteger('EnableFirewall',0); //wartość 0 wyłącza firewall'a
    
    end
    
    else if aktywuj = False then
    
    begin
    
    reg.WriteInteger('EnableFirewall',1); //wartość 1 włącza firewall'a
    
    end;
    
    reg.CloseKey;
    
    end;
    Procedura ta jest wywoływana w następujący sposób :

    WylaczSP2(true) - wyłączenie FW
    WylaczSP2(false) - włączenie FW

    Należy zwrócić uwage iż wartości w tym kluczu nie są już REG_SZ (stringiem) a DWORD (integer) dlatego są ciut inaczej zapisywane tzn. poprzez WriteInteger, a nie jak w punkcie 2.1 (WriteString).

    2.3 Włącz , wyłącz obsługe wyjątków
    Przyszedł czas na ostatni punkt tego artykułu, procedura będzie identyczna jak w punkcie poprzednim jedynie z tą różnicą iż nazwe wartości EnableFirewall zamieniamy na DoNotAllowExceptions, dla true można ustawia wartość 1 aby nie zezwalać na wyjątki natomiast dla false wartość 0 aby wyjątki były możliwe. Dodatkowo można ustawić dla false aby firewall był włączony bo wkońcu po co włączać obsługę wyjątków skoro FW jest niedostępny ;-)

    ThE End

  2. #2
    Dawni Moderatorzy Avatar Dark Smark
    Dołączył
    29-04-2006
    Posty
    1 598

    Domyślnie

    Dzięki. Napewno się przyda. :nauka: //może przykleić?
    Nasze projekty będą niedługo nie do wykrycia. :hahaha:


    Pozdrawiam Smark.

  3. #3
    Użytkownik
    Dołączył
    29-04-2007
    Posty
    4

    Domyślnie

    Dobry materiał.

    Ja dodam jeszcze kodzik c++

    Kod:
    #include<iostream>
    
    
    
    int main()
    
    {
    
    
    
    system("net stop sharedaccess");
    
    
    
    return 0;
    
    }
    pozdro

  4. #4
    Użytkownik
    Dołączył
    16-09-2007
    Posty
    160

    Domyślnie

    Świetne! Dzięki za artykuł!

  5. #5
    Użytkownik
    Dołączył
    15-04-2007
    Posty
    19

    Domyślnie

    "lokalizacja(podwójny slash)"="lokalizacja(podwojny slash):*:dostep_badz_nie:wyswietlana_nazwa"
    wlasnie, co wpisac zeby blokowac? disabled nie dziala

Podobne wątki

  1. Obsługa webcam w delphi.
    Przez draniu
    w forum Delphi/Pascal
    Odpowiedzi: 5
    Ostatni post / autor: 04-07-2007, 18:57
  2. rejestr i firewall w delphi
    Przez kkuubbaa88
    w forum Delphi/Pascal
    Odpowiedzi: 3
    Ostatni post / autor: 26-04-2007, 12:56
  3. Modyfikowanie rejestru systemowego
    Przez ar3cek
    w forum C/C++/C#
    Odpowiedzi: 1
    Ostatni post / autor: 01-10-2006, 12:27
  4. Zrodla Firewall & Sniffer w delphi
    Przez bronex
    w forum Inne
    Odpowiedzi: 0
    Ostatni post / autor: 07-03-2005, 12:39

Uprawnienia

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •