C# Web Filtreleme

C# Web Filtreleme

sistem dosyalarını ve sistem dosyalarından bilgi almayı daha iyi kavramanızı sağlayacak bir 
uygulama. uac korumasından izin alma ve bir web sayfasının gerçek olup olmadığının kontrolünü yapmayı içermektedir.

2 bölümden oluşmakta.

1. komut : komut istemi ile web sayfalarını filtreleme
2. arayüz : arayüz kullanarak web sayfalarını filtreleme

1. Komut
Komut Satırı

hosts -e webadresi => belirtilen adresi engelle
hosts -i webadresi => belirtilen adrese izin ver

Arayüz yazarken kullanılacak geri dönüş değerleri

Return 1 => Adresine erişim engellendi
Return 2 => Adresine erişime izin verildi
Return 3 => Eksik parametre
Return 4 => Fazla parametre
Return 5 => Hatalı parametre
Return 6 => Gerçek bir adres değil
Return 7 => Gerçek bir adres
Return 8 => Belirtilen adresi kontrol ediniz
Return 9 => Hosts dosyasına yazım başarısız
Return 10 => Hosts dosyasından okuma başarısız

komut çalıştırırken yönetici olarak çalıştırmanız gerekmekte. aksi taktirde dosyaya yazma başarısız olacaktır. bu uygulamayı sistem dosyası olarak kullanabilir ve projelerinize ekleyebilirsiniz. sadece “hosts – e www.engelleneceksite.com” komutunu çalıştırmanız web sayfasına girilmeye çalışıldığında hiçbir uyarı vermeden google.com a yönlenmesini sağlayacaktır.

2. Arayüz

yazdığım consol uygulamasına bir arayüz oluşturdum

isterseniz bu arayüzü kullanarak web sayfalarını engelleyebilirsiniz.
10 sn bekledikten sonra engelleme/izinverme işlemi gerçekleşecektir.

hosts.exe

// Barbaros Kuşçular
// www.teknoforum.org
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.NetworkInformation;
using System.Diagnostics;
using System.IO;


namespace ConsoleApplication1
{

class Program
{
//web filtreleme v1.0.0.0
//tarih 07.03.2011
public static string kullanim = "\n\n----------KULLANIM--------------\n\n-e ipadresi belirtilen adresi engelle\n-i ipadresi belirtilen adrese izin ver\n\n--------------------------------"; // return 3
public static string hata1 = "Eksik parametre"; // return 3
public static string hata2 = "Fazla parametre"; // return 4
public static string hata3 = "Hatalı parametre"; // return 5
public static string message1 = "Adresine Erişim Engellendi"; // return 1
public static string message2 = "Adresine Erişime İzin verildi"; // return 2
public static string hata5 = "Gerçek Bir Adres Değil"; // return 6
public static string message3 = "Gerçek Bir Adres"; // return 7
public static string hata6 = "Belirtilen adresi kontrol ediniz"; // return 8
public static string hata7 = "Hosts dosyasına yazım başarısız"; // return 9
public static string hata8 = "Hosts dosyasından okuma başarısız"; // return 10
public static string[] engellenenler = new string[10];

public static Boolean sitekontrol(string site)
{
try
{
Ping pingat = new Ping();
PingReply bilgi;
bilgi = pingat.Send(site);
if (bilgi.Status == IPStatus.Success || bilgi.Status == IPStatus.TimedOut)
{
return true;
}
else
{
return false;
}
}
catch
{
System.Console.WriteLine(hata6);
return false;
}
}


public static Boolean engelle(string ip)
{
StreamWriter hosts = File.AppendText(@"C:\Windows\System32\drivers\etc\hosts");
hosts.Write("74.125.87.99 " + ip + "\r\n");
hosts.Close();
return true;
}


public static int hostsoku()
{
try
{

int i = 0;

StreamReader oku = File.OpenText(@"C:\Windows\System32\drivers\etc\hosts");
engellenenler[i] = oku.ReadLine();
do
{
i++;
engellenenler[i] = oku.ReadLine();
} while (engellenenler[i] != null);

// dosyamızı kapatıyoruz..
oku.Close();
return i;
}
catch
{
return 0;
}

}


public static Boolean izinver(string ip)
{
int engellenenkayit;
engellenenkayit = hostsoku();
if (engellenenkayit == 0)
{
System.Console.WriteLine(hata8);
}
else
{
StreamWriter yaz = File.CreateText(@"C:\Windows\System32\drivers\etc\hosts");
for (int i = 0; i < engellenenkayit; i++)
{
if (engellenenler[i] != "74.125.87.99 " + ip)
{
yaz.Write(engellenenler[i] + "\r\n");
}
}
yaz.Close();

}

return true;
}

static int Main(string[] args)
{

/*yönetici izni için gerekli olan kod
* ProcessStartInfo processInfo = new ProcessStartInfo();
processInfo.Verb = "runas";
processInfo.FileName = "cmd";
try
{
Process.Start(processInfo);
System.Console.WriteLine("İzin verildi");
}
catch(Exception)
{
System.Console.WriteLine("izin verilmedi");
}*/





int a=0;//parametre sayısı

foreach (string arg in args)
{
a++;
}
if (a == 0)
{
System.Console.WriteLine(kullanim);
return 3;
}
else if (a == 1)
{
if (args[0] == "help" || args[0] == "HELP" || args[0] == "?")
{
System.Console.WriteLine(kullanim);
return 3;
}
else if(args[0] == "-e" || args[0] =="-i")
{
System.Console.WriteLine(hata1);
return 3;
}
else
{
System.Console.WriteLine(hata3);
return 5;
}
}
else if (a > 2)
{
System.Console.WriteLine(hata2);
return 4;
}
else
{
if (args[0] == "-e")
{

if (sitekontrol(args[1]) == false)
{
System.Console.WriteLine(hata5);
return 6;
}
else
{

if (engelle(args[1]))
{
System.Console.WriteLine(message3 + "\n" + args[1] + " " + message1);
return 1;
}
else
{
System.Console.WriteLine(hata7);
return 9;
}

}
}
else if (args[0] == "-i")
{

if (sitekontrol(args[1]) == false)
{
System.Console.WriteLine(hata5);
return 6;
}
else
{
if (izinver(args[1]))
{
System.Console.WriteLine(message3 + "\n" + args[1] + " " + message2);
return 2;
}
else
{
System.Console.WriteLine(hata5);
return 6;
}
}
}
else
{
if (a == 2)
{
System.Console.WriteLine(hata3);
return 5;
}
else
{
System.Console.WriteLine(kullanim);
return 3;
}

}
}

}
}
}

Arayüz


// Barbaros Kuşçular
// www.teknoforum.org
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.Threading;

namespace WindowsFormsApplication3
{

public partial class Form1 : Form
{
public static string hata1 = "Eksik parametre"; // return 3
public static string hata2 = "Fazla parametre"; // return 4
public static string hata3 = "Hatalı parametre"; // return 5
public static string message1 = "Adresine Erişim Engellendi"; // return 1
public static string message2 = "Adresine Erişime İzin verildi"; // return 2
public static string hata5 = "Gerçek Bir Adres Değil"; // return 6
public static string message3 = "Gerçek Bir Adres";
public static string hata6 = "Belirtilen adresi kontrol ediniz"; // return 8
public static string hata7 = "Hosts dosyasına yazım başarısız"; // return 9
public static string hata8 = "Hosts dosyasından okuma başarısız"; // return 10

public Form1()
{
InitializeComponent();
}

public static void cikti(int mesajnumarasi, string adres)
{
if (mesajnumarasi == 1)
{
MessageBox.Show(message3 + "\n" + adres + " " + message1);
}
else if (mesajnumarasi == 2)
{
MessageBox.Show(message3 + "\n" + adres + " " + message2);
}
else if (mesajnumarasi == 3)
{
MessageBox.Show(hata1);
}
else if (mesajnumarasi == 4)
{
MessageBox.Show(hata2);
}
else if (mesajnumarasi == 5)
{
MessageBox.Show(hata3);
}
else if (mesajnumarasi == 6)
{
MessageBox.Show(hata5);
}
else if (mesajnumarasi == 8)
{
MessageBox.Show(hata6);
}
else if (mesajnumarasi == 9)
{
MessageBox.Show(hata7);
}
else if (mesajnumarasi == 10)
{
MessageBox.Show(hata8);
}
else
{
MessageBox.Show("işlem başarısız: belirtilmeyen hata");
}
}
private void button1_Click(object sender, EventArgs e)
{
ProcessStartInfo processInfo = new ProcessStartInfo();
processInfo.Verb = "runas";
processInfo.FileName = "hosts";
processInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
processInfo.Arguments = "-e " + textBox1.Text;
Process sonuc = null;


try
{

sonuc = Process.Start(processInfo);
Thread.Sleep(10000);
cikti(sonuc.ExitCode,textBox1.Text);


}
catch (Exception)
{
MessageBox.Show("izin verilmedi");
}
}

private void button2_Click(object sender, EventArgs e)
{
ProcessStartInfo processInfo = new ProcessStartInfo();
processInfo.Verb = "runas";
processInfo.FileName = "hosts";
processInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
processInfo.Arguments = "-i " + textBox1.Text;
Process sonuc = null;

try
{

sonuc = Process.Start(processInfo);
Thread.Sleep(10000);
cikti(sonuc.ExitCode, textBox1.Text);


}
catch (Exception)
{
MessageBox.Show("izin verilmedi");
}
}
}
}

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir