C# ile Uygulamaların İnternete Bağlanmasını Engellemek!

Kruvazör

Yazılım Ekibi Lideri
28 Mar 2020
1,724
2,542
Wrong Side Of Heaven

Arkadaşlar selamlar ben Kruvazör.
Bugün sizlerle c# kullanarak uygulamaların internete çıkmasını firewall kuralı yazarak engelleyeceğiz.
Teknik bir bilgiye pek ihtiyaç duymadan güvenlik duvarı ayarlarına girerek de aynı işlemi yapabilirsiniz ancak bazı insanlar klavye kullanmaktan bile aciz olabiliyor...



Senaryo (Gerçek)
(Okumak için aşağı tıklayınız.)

Oyun fiyatlarının pahalılığı dolayısıyla Sekiro: Shadows Die Twice oynayamayan fukara yazılımcı bir çare aramaktadır.
Aklına crack indirmek gelir ancak Vietnamlı bir hacker grubuna bitcoin kazandırmak istememektedir.
zartoyunzurtsatis.com a girip 20 liraya Steam hesabı almak aklına gelir ve hesabı satın alır.

Yaptığı Anadolu kurnazlığının verdiği keyif ile zevkten 4 köşe olmuşken oyuna girmek ister ve "Ucuz Etin Yahnisi Yenmez" gerçeği yüzüne bir
baba tokadı gibi çarpar.
Hesap milyarlarca çinli, hindistanlı vb bireyler tarafından kullanılmakta olduğu için ve steam üzerinde bir oyuna 2 kişi giremediği için oyuna girememektedir.



c5vjqkd.jpg

Planlarının tutmaması yüzünden gözyaşı denizlerden kendini hüzün dağlarına vuran yazılımcı son şeytani hamlesini yapar ve Visual Studioyu açar:

Şu şekilde bir form tasarımı yapıp GroupBox2 yi GroupBox1 in üstüne koyar.
gwo5qtm.jpg

(Son Hali)

fnccs5i.jpg



Ve kodları yazmaya başlar:

vocaluxe.dependencies.netfwtypelib
İsimli kütüphaneyi nuget aracılığıyla kurup kütüphaneyi ekliyoruz.

C#:
using NetFwTypeLib;
C#:
 public partial class Form1 : Form
 {
     private Dictionary<string, INetFwRule> ruleDictionary;
     //kuralları listelemek adına kullanılacak bir dict yapısı oluşturuyorum
     public Form1()
     {
         InitializeComponent();
         ruleDictionary = new Dictionary<string,INetFwRule>();
         LoadFirewallRules();
     }

     private void Form1_Load(object sender, EventArgs e)
     {

         LoadFirewallRules();
         groupBox1.Visible = false;
         groupBox2.Visible = false;
     }


     //
     private void LoadFirewallRules()
     {
      
         INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));

         // Tüm kuralları al
         foreach (INetFwRule rule in firewallPolicy.Rules)
         {
             try
             {
                 //kuralları listboxa dökmek için sihir yapıyorum
                 INetFwRule2 fwRule = (INetFwRule2)rule;
                 if (!ruleDictionary.ContainsKey(fwRule.Name))
                 {
                     ruleDictionary.Add(fwRule.Name, fwRule);
                     listBox1.Items.Add(fwRule.Name);
                 }
             }
             catch (InvalidCastException)
             {
                 // valla burda hata veriyodu burayı çaldım :P
                 continue;
             }
         }
     }


     private void kuralToolStripMenuItem_Click(object sender, EventArgs e)
     {
         groupBox1.Visible = true;
         groupBox2.Visible = false;
         //işte stripmenuye tıklanınca groupboxlardan biri gözüksün diğeri gözükmesin şeyi
     }

     private void button1_Click_1(object sender, EventArgs e)
     {

         if (textBox1.Text=="")
         {
             MessageBox.Show("Kural adını doldurunuz!");
         }
         else
         {
         try
            
         {
             OpenFileDialog openFileDialog = new OpenFileDialog();
             openFileDialog.Filter = "Executable Files (*.exe)|*.exe|All Files (*.*)|*.*";
             openFileDialog.FilterIndex = 1;
             openFileDialog.RestoreDirectory = true;

             if (openFileDialog.ShowDialog() == DialogResult.OK)
             {
                 string selectedAppPath = openFileDialog.FileName;
          
                textBox2.Text = openFileDialog.FileName;

                 INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));

                 // Yeni bir kural oluştur
                 INetFwRule rule = (INetFwRule)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));
                
                 rule.Action = NET_FW_ACTION_.NET_FW_ACTION_BLOCK; // Bağlantıyı engelle
                 rule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_OUT; // Giden bağlantıları engelle
                 rule.Enabled = true;
                 rule.ApplicationName = selectedAppPath;
                 rule.Name = textBox1.Text;

                 // Kuralı güvenlik duvarına ekle
                 firewallPolicy.Rules.Add(rule);
                 MessageBox.Show("Kural başarıyla oluşturuldu.", "Başarılı", MessageBoxButtons.OK, MessageBoxIcon.Information);
             }
         }
         catch (Exception ex)
         {
             MessageBox.Show("Hata oluştu: " + ex.Message, "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
         }
     }

     private void kuralKaldırToolStripMenuItem_Click(object sender, EventArgs e)
     {
         groupBox2.Visible = true; groupBox1.Visible = false;
         LoadFirewallRules();

     }

     private void button2_Click(object sender, EventArgs e)
     {
         if (listBox1.SelectedItem != null)
         {
             string selectedRuleName = listBox1.SelectedItem.ToString();

             if (MessageBox.Show($"Seçilen kuralı silmek istediğinizden emin misiniz?\n\nKural Adı: {selectedRuleName}", "Kuralı Sil", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
             {
                 try
                 {
                     // Kuralı güvenlik duvarından kaldır
                     INetFwRule ruleToRemove = ruleDictionary[selectedRuleName];
                     INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
                     firewallPolicy.Rules.Remove(ruleToRemove.Name);
                     listBox1.Items.Remove(selectedRuleName);
                     ruleDictionary.Remove(selectedRuleName);
                     MessageBox.Show("Kural başarıyla kaldırıldı.", "Başarılı", MessageBoxButtons.OK, MessageBoxIcon.Information);
                 }
                 catch (Exception ex)
                 {
                     MessageBox.Show("Kural kaldırılırken bir hata oluştu: " + ex.Message, "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
                 }
             }
         }
         else
         {
             MessageBox.Show("Lütfen silmek istediğiniz kuralı seçin.", "Uyarı", MessageBoxButtons.OK, MessageBoxIcon.Warning);
         }
     }

  
 }
(Steam'i engellemeniz daha mantıklı.)
5m7kd5f.jpg
6dd53eg.jpg


Final:
m1phmir.jpg

(Eğer hayatınızda her şey yolunda gidiyor ve bir problem arıyorsanız kesinlikle oynamanız gereken bir oyun.)
 

Bunjo

Uzman üye
14 Ara 2020
1,587
1,886
I Won

Arkadaşlar selamlar ben Kruvazör.
Bugün sizlerle c# kullanarak uygulamaların internete çıkmasını firewall kuralı yazarak engelleyeceğiz.
Teknik bir bilgiye pek ihtiyaç duymadan güvenlik duvarı ayarlarına girerek de aynı işlemi yapabilirsiniz ancak bazı insanlar klavye kullanmaktan bile aciz olabiliyor...



Senaryo (Gerçek)
(Okumak için aşağı tıklayınız.)

Oyun fiyatlarının pahalılığı dolayısıyla Sekiro: Shadows Die Twice oynayamayan fukara yazılımcı bir çare aramaktadır.
Aklına crack indirmek gelir ancak Vietnamlı bir hacker grubuna bitcoin kazandırmak istememektedir.
zartoyunzurtsatis.com a girip 20 liraya Steam hesabı almak aklına gelir ve hesabı satın alır.

Yaptığı Anadolu kurnazlığının verdiği keyif ile zevkten 4 köşe olmuşken oyuna girmek ister ve "Ucuz Etin Yahnisi Yenmez" gerçeği yüzüne bir
baba tokadı gibi çarpar.
Hesap milyarlarca çinli, hindistanlı vb bireyler tarafından kullanılmakta olduğu için ve steam üzerinde bir oyuna 2 kişi giremediği için oyuna girememektedir.



c5vjqkd.jpg

Planlarının tutmaması yüzünden gözyaşı denizlerden kendini hüzün dağlarına vuran yazılımcı son şeytani hamlesini yapar ve Visual Studioyu açar:

Şu şekilde bir form tasarımı yapıp GroupBox2 yi GroupBox1 in üstüne koyar.
gwo5qtm.jpg

(Son Hali)

fnccs5i.jpg



Ve kodları yazmaya başlar:

vocaluxe.dependencies.netfwtypelib
İsimli kütüphaneyi nuget aracılığıyla kurup kütüphaneyi ekliyoruz.

C#:
using NetFwTypeLib;
C#:
 public partial class Form1 : Form
 {
     private Dictionary<string, INetFwRule> ruleDictionary;
     //kuralları listelemek adına kullanılacak bir dict yapısı oluşturuyorum
     public Form1()
     {
         InitializeComponent();
         ruleDictionary = new Dictionary<string,INetFwRule>();
         LoadFirewallRules();
     }

     private void Form1_Load(object sender, EventArgs e)
     {

         LoadFirewallRules();
         groupBox1.Visible = false;
         groupBox2.Visible = false;
     }


     //
     private void LoadFirewallRules()
     {
     
         INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));

         // Tüm kuralları al
         foreach (INetFwRule rule in firewallPolicy.Rules)
         {
             try
             {
                 //kuralları listboxa dökmek için sihir yapıyorum
                 INetFwRule2 fwRule = (INetFwRule2)rule;
                 if (!ruleDictionary.ContainsKey(fwRule.Name))
                 {
                     ruleDictionary.Add(fwRule.Name, fwRule);
                     listBox1.Items.Add(fwRule.Name);
                 }
             }
             catch (InvalidCastException)
             {
                 // valla burda hata veriyodu burayı çaldım :P
                 continue;
             }
         }
     }


     private void kuralToolStripMenuItem_Click(object sender, EventArgs e)
     {
         groupBox1.Visible = true;
         groupBox2.Visible = false;
         //işte stripmenuye tıklanınca groupboxlardan biri gözüksün diğeri gözükmesin şeyi
     }

     private void button1_Click_1(object sender, EventArgs e)
     {

         if (textBox1.Text=="")
         {
             MessageBox.Show("Kural adını doldurunuz!");
         }
         else
         {
         try
           
         {
             OpenFileDialog openFileDialog = new OpenFileDialog();
             openFileDialog.Filter = "Executable Files (*.exe)|*.exe|All Files (*.*)|*.*";
             openFileDialog.FilterIndex = 1;
             openFileDialog.RestoreDirectory = true;

             if (openFileDialog.ShowDialog() == DialogResult.OK)
             {
                 string selectedAppPath = openFileDialog.FileName;
         
                textBox2.Text = openFileDialog.FileName;

                 INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));

                 // Yeni bir kural oluştur
                 INetFwRule rule = (INetFwRule)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));
               
                 rule.Action = NET_FW_ACTION_.NET_FW_ACTION_BLOCK; // Bağlantıyı engelle
                 rule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_OUT; // Giden bağlantıları engelle
                 rule.Enabled = true;
                 rule.ApplicationName = selectedAppPath;
                 rule.Name = textBox1.Text;

                 // Kuralı güvenlik duvarına ekle
                 firewallPolicy.Rules.Add(rule);
                 MessageBox.Show("Kural başarıyla oluşturuldu.", "Başarılı", MessageBoxButtons.OK, MessageBoxIcon.Information);
             }
         }
         catch (Exception ex)
         {
             MessageBox.Show("Hata oluştu: " + ex.Message, "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
         }
     }

     private void kuralKaldırToolStripMenuItem_Click(object sender, EventArgs e)
     {
         groupBox2.Visible = true; groupBox1.Visible = false;
         LoadFirewallRules();

     }

     private void button2_Click(object sender, EventArgs e)
     {
         if (listBox1.SelectedItem != null)
         {
             string selectedRuleName = listBox1.SelectedItem.ToString();

             if (MessageBox.Show($"Seçilen kuralı silmek istediğinizden emin misiniz?\n\nKural Adı: {selectedRuleName}", "Kuralı Sil", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
             {
                 try
                 {
                     // Kuralı güvenlik duvarından kaldır
                     INetFwRule ruleToRemove = ruleDictionary[selectedRuleName];
                     INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
                     firewallPolicy.Rules.Remove(ruleToRemove.Name);
                     listBox1.Items.Remove(selectedRuleName);
                     ruleDictionary.Remove(selectedRuleName);
                     MessageBox.Show("Kural başarıyla kaldırıldı.", "Başarılı", MessageBoxButtons.OK, MessageBoxIcon.Information);
                 }
                 catch (Exception ex)
                 {
                     MessageBox.Show("Kural kaldırılırken bir hata oluştu: " + ex.Message, "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
                 }
             }
         }
         else
         {
             MessageBox.Show("Lütfen silmek istediğiniz kuralı seçin.", "Uyarı", MessageBoxButtons.OK, MessageBoxIcon.Warning);
         }
     }

 
 }
(Steam'i engellemeniz daha mantıklı.)
5m7kd5f.jpg
6dd53eg.jpg




Final:

m1phmir.jpg




(Eğer hayatınızda her şey yolunda gidiyor ve bir problem arıyorsanız kesinlikle oynamanız gereken bir oyun.)

Elinize sağlık abi :)
 

kst132

Junior Hunter
12 Haz 2023
920
542

Arkadaşlar selamlar ben Kruvazör.
Bugün sizlerle c# kullanarak uygulamaların internete çıkmasını firewall kuralı yazarak engelleyeceğiz.
Teknik bir bilgiye pek ihtiyaç duymadan güvenlik duvarı ayarlarına girerek de aynı işlemi yapabilirsiniz ancak bazı insanlar klavye kullanmaktan bile aciz olabiliyor...



Senaryo (Gerçek)
(Okumak için aşağı tıklayınız.)

Oyun fiyatlarının pahalılığı dolayısıyla Sekiro: Shadows Die Twice oynayamayan fukara yazılımcı bir çare aramaktadır.
Aklına crack indirmek gelir ancak Vietnamlı bir hacker grubuna bitcoin kazandırmak istememektedir.
zartoyunzurtsatis.com a girip 20 liraya Steam hesabı almak aklına gelir ve hesabı satın alır.

Yaptığı Anadolu kurnazlığının verdiği keyif ile zevkten 4 köşe olmuşken oyuna girmek ister ve "Ucuz Etin Yahnisi Yenmez" gerçeği yüzüne bir
baba tokadı gibi çarpar.
Hesap milyarlarca çinli, hindistanlı vb bireyler tarafından kullanılmakta olduğu için ve steam üzerinde bir oyuna 2 kişi giremediği için oyuna girememektedir.



c5vjqkd.jpg

Planlarının tutmaması yüzünden gözyaşı denizlerden kendini hüzün dağlarına vuran yazılımcı son şeytani hamlesini yapar ve Visual Studioyu açar:

Şu şekilde bir form tasarımı yapıp GroupBox2 yi GroupBox1 in üstüne koyar.
gwo5qtm.jpg

(Son Hali)

fnccs5i.jpg



Ve kodları yazmaya başlar:

vocaluxe.dependencies.netfwtypelib
İsimli kütüphaneyi nuget aracılığıyla kurup kütüphaneyi ekliyoruz.

C#:
using NetFwTypeLib;
C#:
 public partial class Form1 : Form
 {
     private Dictionary<string, INetFwRule> ruleDictionary;
     //kuralları listelemek adına kullanılacak bir dict yapısı oluşturuyorum
     public Form1()
     {
         InitializeComponent();
         ruleDictionary = new Dictionary<string,INetFwRule>();
         LoadFirewallRules();
     }

     private void Form1_Load(object sender, EventArgs e)
     {

         LoadFirewallRules();
         groupBox1.Visible = false;
         groupBox2.Visible = false;
     }


     //
     private void LoadFirewallRules()
     {
     
         INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));

         // Tüm kuralları al
         foreach (INetFwRule rule in firewallPolicy.Rules)
         {
             try
             {
                 //kuralları listboxa dökmek için sihir yapıyorum
                 INetFwRule2 fwRule = (INetFwRule2)rule;
                 if (!ruleDictionary.ContainsKey(fwRule.Name))
                 {
                     ruleDictionary.Add(fwRule.Name, fwRule);
                     listBox1.Items.Add(fwRule.Name);
                 }
             }
             catch (InvalidCastException)
             {
                 // valla burda hata veriyodu burayı çaldım :P
                 continue;
             }
         }
     }


     private void kuralToolStripMenuItem_Click(object sender, EventArgs e)
     {
         groupBox1.Visible = true;
         groupBox2.Visible = false;
         //işte stripmenuye tıklanınca groupboxlardan biri gözüksün diğeri gözükmesin şeyi
     }

     private void button1_Click_1(object sender, EventArgs e)
     {

         if (textBox1.Text=="")
         {
             MessageBox.Show("Kural adını doldurunuz!");
         }
         else
         {
         try
           
         {
             OpenFileDialog openFileDialog = new OpenFileDialog();
             openFileDialog.Filter = "Executable Files (*.exe)|*.exe|All Files (*.*)|*.*";
             openFileDialog.FilterIndex = 1;
             openFileDialog.RestoreDirectory = true;

             if (openFileDialog.ShowDialog() == DialogResult.OK)
             {
                 string selectedAppPath = openFileDialog.FileName;
         
                textBox2.Text = openFileDialog.FileName;

                 INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));

                 // Yeni bir kural oluştur
                 INetFwRule rule = (INetFwRule)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));
               
                 rule.Action = NET_FW_ACTION_.NET_FW_ACTION_BLOCK; // Bağlantıyı engelle
                 rule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_OUT; // Giden bağlantıları engelle
                 rule.Enabled = true;
                 rule.ApplicationName = selectedAppPath;
                 rule.Name = textBox1.Text;

                 // Kuralı güvenlik duvarına ekle
                 firewallPolicy.Rules.Add(rule);
                 MessageBox.Show("Kural başarıyla oluşturuldu.", "Başarılı", MessageBoxButtons.OK, MessageBoxIcon.Information);
             }
         }
         catch (Exception ex)
         {
             MessageBox.Show("Hata oluştu: " + ex.Message, "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
         }
     }

     private void kuralKaldırToolStripMenuItem_Click(object sender, EventArgs e)
     {
         groupBox2.Visible = true; groupBox1.Visible = false;
         LoadFirewallRules();

     }

     private void button2_Click(object sender, EventArgs e)
     {
         if (listBox1.SelectedItem != null)
         {
             string selectedRuleName = listBox1.SelectedItem.ToString();

             if (MessageBox.Show($"Seçilen kuralı silmek istediğinizden emin misiniz?\n\nKural Adı: {selectedRuleName}", "Kuralı Sil", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
             {
                 try
                 {
                     // Kuralı güvenlik duvarından kaldır
                     INetFwRule ruleToRemove = ruleDictionary[selectedRuleName];
                     INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
                     firewallPolicy.Rules.Remove(ruleToRemove.Name);
                     listBox1.Items.Remove(selectedRuleName);
                     ruleDictionary.Remove(selectedRuleName);
                     MessageBox.Show("Kural başarıyla kaldırıldı.", "Başarılı", MessageBoxButtons.OK, MessageBoxIcon.Information);
                 }
                 catch (Exception ex)
                 {
                     MessageBox.Show("Kural kaldırılırken bir hata oluştu: " + ex.Message, "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
                 }
             }
         }
         else
         {
             MessageBox.Show("Lütfen silmek istediğiniz kuralı seçin.", "Uyarı", MessageBoxButtons.OK, MessageBoxIcon.Warning);
         }
     }

 
 }
(Steam'i engellemeniz daha mantıklı.)
5m7kd5f.jpg
6dd53eg.jpg




Final:

m1phmir.jpg




(Eğer hayatınızda her şey yolunda gidiyor ve bir problem arıyorsanız kesinlikle oynamanız gereken bir oyun.)

Elinize emeğinize sağlık hocam seneryoya bayıldım :D
 

hoaydar

Yazılım Ekibi
18 Ocak 2023
489
412
/system32

Arkadaşlar selamlar ben Kruvazör.
Bugün sizlerle c# kullanarak uygulamaların internete çıkmasını firewall kuralı yazarak engelleyeceğiz.
Teknik bir bilgiye pek ihtiyaç duymadan güvenlik duvarı ayarlarına girerek de aynı işlemi yapabilirsiniz ancak bazı insanlar klavye kullanmaktan bile aciz olabiliyor...



Senaryo (Gerçek)
(Okumak için aşağı tıklayınız.)

Oyun fiyatlarının pahalılığı dolayısıyla Sekiro: Shadows Die Twice oynayamayan fukara yazılımcı bir çare aramaktadır.
Aklına crack indirmek gelir ancak Vietnamlı bir hacker grubuna bitcoin kazandırmak istememektedir.
zartoyunzurtsatis.com a girip 20 liraya Steam hesabı almak aklına gelir ve hesabı satın alır.

Yaptığı Anadolu kurnazlığının verdiği keyif ile zevkten 4 köşe olmuşken oyuna girmek ister ve "Ucuz Etin Yahnisi Yenmez" gerçeği yüzüne bir
baba tokadı gibi çarpar.
Hesap milyarlarca çinli, hindistanlı vb bireyler tarafından kullanılmakta olduğu için ve steam üzerinde bir oyuna 2 kişi giremediği için oyuna girememektedir.



c5vjqkd.jpg

Planlarının tutmaması yüzünden gözyaşı denizlerden kendini hüzün dağlarına vuran yazılımcı son şeytani hamlesini yapar ve Visual Studioyu açar:

Şu şekilde bir form tasarımı yapıp GroupBox2 yi GroupBox1 in üstüne koyar.
gwo5qtm.jpg

(Son Hali)

fnccs5i.jpg



Ve kodları yazmaya başlar:

vocaluxe.dependencies.netfwtypelib
İsimli kütüphaneyi nuget aracılığıyla kurup kütüphaneyi ekliyoruz.

C#:
using NetFwTypeLib;
C#:
 public partial class Form1 : Form
 {
     private Dictionary<string, INetFwRule> ruleDictionary;
     //kuralları listelemek adına kullanılacak bir dict yapısı oluşturuyorum
     public Form1()
     {
         InitializeComponent();
         ruleDictionary = new Dictionary<string,INetFwRule>();
         LoadFirewallRules();
     }

     private void Form1_Load(object sender, EventArgs e)
     {

         LoadFirewallRules();
         groupBox1.Visible = false;
         groupBox2.Visible = false;
     }


     //
     private void LoadFirewallRules()
     {
     
         INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));

         // Tüm kuralları al
         foreach (INetFwRule rule in firewallPolicy.Rules)
         {
             try
             {
                 //kuralları listboxa dökmek için sihir yapıyorum
                 INetFwRule2 fwRule = (INetFwRule2)rule;
                 if (!ruleDictionary.ContainsKey(fwRule.Name))
                 {
                     ruleDictionary.Add(fwRule.Name, fwRule);
                     listBox1.Items.Add(fwRule.Name);
                 }
             }
             catch (InvalidCastException)
             {
                 // valla burda hata veriyodu burayı çaldım :P
                 continue;
             }
         }
     }


     private void kuralToolStripMenuItem_Click(object sender, EventArgs e)
     {
         groupBox1.Visible = true;
         groupBox2.Visible = false;
         //işte stripmenuye tıklanınca groupboxlardan biri gözüksün diğeri gözükmesin şeyi
     }

     private void button1_Click_1(object sender, EventArgs e)
     {

         if (textBox1.Text=="")
         {
             MessageBox.Show("Kural adını doldurunuz!");
         }
         else
         {
         try
           
         {
             OpenFileDialog openFileDialog = new OpenFileDialog();
             openFileDialog.Filter = "Executable Files (*.exe)|*.exe|All Files (*.*)|*.*";
             openFileDialog.FilterIndex = 1;
             openFileDialog.RestoreDirectory = true;

             if (openFileDialog.ShowDialog() == DialogResult.OK)
             {
                 string selectedAppPath = openFileDialog.FileName;
         
                textBox2.Text = openFileDialog.FileName;

                 INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));

                 // Yeni bir kural oluştur
                 INetFwRule rule = (INetFwRule)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));
               
                 rule.Action = NET_FW_ACTION_.NET_FW_ACTION_BLOCK; // Bağlantıyı engelle
                 rule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_OUT; // Giden bağlantıları engelle
                 rule.Enabled = true;
                 rule.ApplicationName = selectedAppPath;
                 rule.Name = textBox1.Text;

                 // Kuralı güvenlik duvarına ekle
                 firewallPolicy.Rules.Add(rule);
                 MessageBox.Show("Kural başarıyla oluşturuldu.", "Başarılı", MessageBoxButtons.OK, MessageBoxIcon.Information);
             }
         }
         catch (Exception ex)
         {
             MessageBox.Show("Hata oluştu: " + ex.Message, "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
         }
     }

     private void kuralKaldırToolStripMenuItem_Click(object sender, EventArgs e)
     {
         groupBox2.Visible = true; groupBox1.Visible = false;
         LoadFirewallRules();

     }

     private void button2_Click(object sender, EventArgs e)
     {
         if (listBox1.SelectedItem != null)
         {
             string selectedRuleName = listBox1.SelectedItem.ToString();

             if (MessageBox.Show($"Seçilen kuralı silmek istediğinizden emin misiniz?\n\nKural Adı: {selectedRuleName}", "Kuralı Sil", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
             {
                 try
                 {
                     // Kuralı güvenlik duvarından kaldır
                     INetFwRule ruleToRemove = ruleDictionary[selectedRuleName];
                     INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
                     firewallPolicy.Rules.Remove(ruleToRemove.Name);
                     listBox1.Items.Remove(selectedRuleName);
                     ruleDictionary.Remove(selectedRuleName);
                     MessageBox.Show("Kural başarıyla kaldırıldı.", "Başarılı", MessageBoxButtons.OK, MessageBoxIcon.Information);
                 }
                 catch (Exception ex)
                 {
                     MessageBox.Show("Kural kaldırılırken bir hata oluştu: " + ex.Message, "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
                 }
             }
         }
         else
         {
             MessageBox.Show("Lütfen silmek istediğiniz kuralı seçin.", "Uyarı", MessageBoxButtons.OK, MessageBoxIcon.Warning);
         }
     }

 
 }
(Steam'i engellemeniz daha mantıklı.)
5m7kd5f.jpg
6dd53eg.jpg




Final:

m1phmir.jpg




(Eğer hayatınızda her şey yolunda gidiyor ve bir problem arıyorsanız kesinlikle oynamanız gereken bir oyun.)

Eline sağlık sayın liderim
 

'Ra

Ticaret Kategori Sorumlu Yardımcısı
21 Kas 2015
2,396
949
Elinize sağlık hocam.

Souls oyunlarını oynamak için sağlam irade ve dayanıklı vücut lazım özellikle sekiro için :)
 

ACE Veen

Uzman üye
4 Şub 2023
1,100
554
Belirsiz

Arkadaşlar selamlar ben Kruvazör.
Bugün sizlerle c# kullanarak uygulamaların internete çıkmasını firewall kuralı yazarak engelleyeceğiz.
Teknik bir bilgiye pek ihtiyaç duymadan güvenlik duvarı ayarlarına girerek de aynı işlemi yapabilirsiniz ancak bazı insanlar klavye kullanmaktan bile aciz olabiliyor...



Senaryo (Gerçek)
(Okumak için aşağı tıklayınız.)

Oyun fiyatlarının pahalılığı dolayısıyla Sekiro: Shadows Die Twice oynayamayan fukara yazılımcı bir çare aramaktadır.
Aklına crack indirmek gelir ancak Vietnamlı bir hacker grubuna bitcoin kazandırmak istememektedir.
zartoyunzurtsatis.com a girip 20 liraya Steam hesabı almak aklına gelir ve hesabı satın alır.

Yaptığı Anadolu kurnazlığının verdiği keyif ile zevkten 4 köşe olmuşken oyuna girmek ister ve "Ucuz Etin Yahnisi Yenmez" gerçeği yüzüne bir
baba tokadı gibi çarpar.
Hesap milyarlarca çinli, hindistanlı vb bireyler tarafından kullanılmakta olduğu için ve steam üzerinde bir oyuna 2 kişi giremediği için oyuna girememektedir.



c5vjqkd.jpg

Planlarının tutmaması yüzünden gözyaşı denizlerden kendini hüzün dağlarına vuran yazılımcı son şeytani hamlesini yapar ve Visual Studioyu açar:

Şu şekilde bir form tasarımı yapıp GroupBox2 yi GroupBox1 in üstüne koyar.
gwo5qtm.jpg

(Son Hali)

fnccs5i.jpg



Ve kodları yazmaya başlar:

vocaluxe.dependencies.netfwtypelib
İsimli kütüphaneyi nuget aracılığıyla kurup kütüphaneyi ekliyoruz.

C#:
using NetFwTypeLib;
C#:
 public partial class Form1 : Form
 {
     private Dictionary<string, INetFwRule> ruleDictionary;
     //kuralları listelemek adına kullanılacak bir dict yapısı oluşturuyorum
     public Form1()
     {
         InitializeComponent();
         ruleDictionary = new Dictionary<string,INetFwRule>();
         LoadFirewallRules();
     }

     private void Form1_Load(object sender, EventArgs e)
     {

         LoadFirewallRules();
         groupBox1.Visible = false;
         groupBox2.Visible = false;
     }


     //
     private void LoadFirewallRules()
     {
     
         INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));

         // Tüm kuralları al
         foreach (INetFwRule rule in firewallPolicy.Rules)
         {
             try
             {
                 //kuralları listboxa dökmek için sihir yapıyorum
                 INetFwRule2 fwRule = (INetFwRule2)rule;
                 if (!ruleDictionary.ContainsKey(fwRule.Name))
                 {
                     ruleDictionary.Add(fwRule.Name, fwRule);
                     listBox1.Items.Add(fwRule.Name);
                 }
             }
             catch (InvalidCastException)
             {
                 // valla burda hata veriyodu burayı çaldım :P
                 continue;
             }
         }
     }


     private void kuralToolStripMenuItem_Click(object sender, EventArgs e)
     {
         groupBox1.Visible = true;
         groupBox2.Visible = false;
         //işte stripmenuye tıklanınca groupboxlardan biri gözüksün diğeri gözükmesin şeyi
     }

     private void button1_Click_1(object sender, EventArgs e)
     {

         if (textBox1.Text=="")
         {
             MessageBox.Show("Kural adını doldurunuz!");
         }
         else
         {
         try
           
         {
             OpenFileDialog openFileDialog = new OpenFileDialog();
             openFileDialog.Filter = "Executable Files (*.exe)|*.exe|All Files (*.*)|*.*";
             openFileDialog.FilterIndex = 1;
             openFileDialog.RestoreDirectory = true;

             if (openFileDialog.ShowDialog() == DialogResult.OK)
             {
                 string selectedAppPath = openFileDialog.FileName;
         
                textBox2.Text = openFileDialog.FileName;

                 INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));

                 // Yeni bir kural oluştur
                 INetFwRule rule = (INetFwRule)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));
               
                 rule.Action = NET_FW_ACTION_.NET_FW_ACTION_BLOCK; // Bağlantıyı engelle
                 rule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_OUT; // Giden bağlantıları engelle
                 rule.Enabled = true;
                 rule.ApplicationName = selectedAppPath;
                 rule.Name = textBox1.Text;

                 // Kuralı güvenlik duvarına ekle
                 firewallPolicy.Rules.Add(rule);
                 MessageBox.Show("Kural başarıyla oluşturuldu.", "Başarılı", MessageBoxButtons.OK, MessageBoxIcon.Information);
             }
         }
         catch (Exception ex)
         {
             MessageBox.Show("Hata oluştu: " + ex.Message, "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
         }
     }

     private void kuralKaldırToolStripMenuItem_Click(object sender, EventArgs e)
     {
         groupBox2.Visible = true; groupBox1.Visible = false;
         LoadFirewallRules();

     }

     private void button2_Click(object sender, EventArgs e)
     {
         if (listBox1.SelectedItem != null)
         {
             string selectedRuleName = listBox1.SelectedItem.ToString();

             if (MessageBox.Show($"Seçilen kuralı silmek istediğinizden emin misiniz?\n\nKural Adı: {selectedRuleName}", "Kuralı Sil", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
             {
                 try
                 {
                     // Kuralı güvenlik duvarından kaldır
                     INetFwRule ruleToRemove = ruleDictionary[selectedRuleName];
                     INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
                     firewallPolicy.Rules.Remove(ruleToRemove.Name);
                     listBox1.Items.Remove(selectedRuleName);
                     ruleDictionary.Remove(selectedRuleName);
                     MessageBox.Show("Kural başarıyla kaldırıldı.", "Başarılı", MessageBoxButtons.OK, MessageBoxIcon.Information);
                 }
                 catch (Exception ex)
                 {
                     MessageBox.Show("Kural kaldırılırken bir hata oluştu: " + ex.Message, "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
                 }
             }
         }
         else
         {
             MessageBox.Show("Lütfen silmek istediğiniz kuralı seçin.", "Uyarı", MessageBoxButtons.OK, MessageBoxIcon.Warning);
         }
     }

 
 }
(Steam'i engellemeniz daha mantıklı.)
5m7kd5f.jpg
6dd53eg.jpg




Final:

m1phmir.jpg




(Eğer hayatınızda her şey yolunda gidiyor ve bir problem arıyorsanız kesinlikle oynamanız gereken bir oyun.)

hikaye güzel olmuş konu da güzel elinize sağlık
 

Kruvazör

Yazılım Ekibi Lideri
28 Mar 2020
1,724
2,542
Wrong Side Of Heaven
Elinize sağlık abi :)

Elinize emeğinize sağlık hocam seneryoya bayıldım :D

Eline sağlık abi

Eline sağlık sayın liderim

Elinize sağlık çok iyi

Ellerine sağlık abi

Eline sağlık abi yine birilerinin yüzünü güldürüp umut oldun:D

Eline sağlık smod um

hikaye güzel olmuş konu da güzel elinize sağlık

Elinize, Klavyenize, C#'nıza sağlık liderim.
Teşekkürler :)

Oyun oynamak için proje geliştiren koca yürekli smodum. Elinize sağlık.
Problem ve problemi çözmek odaklı çalışınca genelde böyle oluyor :D
Elinize sağlık hocam, en yakın zamanda aynı yöntemle oynayacağım 😁
Allah bol bol sabır versin
Ben bunu geçen elden ring için yapmıştım arkadaşa :ROFLMAO: ama direkt steam için. Bilgisayarımdam çıkabilir misin 👉 👈
:D gerçekten rahatsız edici bir denk gelme olmuş bu. Galiba aynı bilgisayarı kullanıyoruz :D
Eline sağlık hocam biraz arayüzlü yani guna siticone gibi ui arayüzlü projeler görsek sizden güzel olur
Basit bir Uı tasarımı kullanmaktaki amacım herkesin yapabilmesini uygulayabilmesini sağlamak ancak senin dediğin gibi vites attırmak güzel olabilir.
Elinize sağlık hocam.

Souls oyunlarını oynamak için sağlam irade ve dayanıklı vücut lazım özellikle sekiro için :)
Genichiro Ashina savaşı için ruhumu şeytana sattım
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.