C Programlama Arşivi (Bir çok program tek bir çatı altında)

C programlama dili alıştırmalarından 7 tanesini tek bir programın
 içerisinde topladığım bir çalışmamı buldum ve onu da sizlerle paylaşmak istedim.Kodları aşağıya bırakıyorum iyi günler dilerim.

#include<stdio.h>
#include<stdlib.h>
void girilensayisatirsutun();
void satirsayisinitoplamamatris();
void matrisenkucuk();
void vizefinal();
void matrispozneg();
void canegrisi();
void dizibuyukkucuk();

void menu(){
    int islem;
    system("cls");
    printf("\t Lutfen yapmak istediginiz islemi yaninda bulunan numarasina gore seciniz \n");
    printf("\t 1- Bir matriste girilen sayinin satir sutun bilgilerini bulma \n");
    printf("\t 2- Bir matriste satir sutun sayilarini toplayip yeni diziye atama \n");
    printf("\t 3- Bir matristeki en kucuk sayinin satir sutun bilgisi \n");
    printf("\t 4- Ogrenci notlarinin matris seklinde girilip goruntulenmesi \n");
    printf("\t 5- Bir matristeki pozitif negatif sayilarin ortalamasi,sayisi\n");
    printf("\t 6- Can egrisi hesaplama \n");
    printf("\t 7- Bir dizide girilen sayidan buyuk kucuk kac sayi var bulan ve ortalamasi ile toplamini veren \n");
    printf("\t Cikis yapmak icin < 0 > tusuna basin \n");
    scanf("%d",&islem);
    switch(islem){
        case 0: exit(1);
            break;
            case 1: girilensayisatirsutun();
                        break;
                        case 2: satirsayisinitoplamamatris();
                                break;
                                case 3: matrisenkucuk();
                                    break;
                                    case 4: vizefinal();
                                        break;
                                        case 5: matrispozneg();
                                            break;
                                            case 6: canegrisi();
                                                break;
                                                case 7: dizibuyukkucuk();
                                                    break;
                                                    default: printf("Lutfen 0-7 arasi bir rakam giriniz");
                                                    system("PAUSE");
                                                    menu();
    }
}
            void girilensayisatirsutun(){
                system("cls");
                int N,M,A[100][100],gsayi,i,j,sat,sut;
    printf("dizinin satir sayisi :\n");
        scanf("%d",&N);
    printf("dizinin sutun sayisi :\n");
    scanf("%d",&M);
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        {
        printf("A[%d][%d] : ",i+1,j+1);
        scanf("%d",&A[i][j]);
    }
    }
    gsayi==A[0][0];
    // diziyi çaðýr,gsayi ara
    printf("Aranacak sayiyi girin");
    scanf("%d",&gsayi);
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        {
       
        if(A[i][j]==gsayi)
        {
            gsayi=A[i][j];
            sat=i+1;
            sut=j+1;
        }
    }
}
    printf("aranan eleman %d ve satiri %d sutunu %d",gsayi,sat,sut);
                system("PAUSE");
        menu();
      
            }
            void satirsayisinitoplamamatris(){
                system("cls");
                    int i,j,N,M;
            int A[100][100],B[100];
    printf("satir sayisi : ");
        scanf("%d",&N);
        printf("sutun sayisi : ");
        scanf("%d",&M);
        for(i=0;i<N;i++)
        {
            for(j=0;j<M;j++)
            {
                printf("A[%d][%d]",i+1,j+1);
                scanf("%d",&A[i][j]);
            }
        }
     for(i=0;i<N;i++)
     {
         for(j=0;j<M;j++)
         {
             B[i]+=A[i][j];
         }
     }
     for(i=0;i<N;i++)
     {
         for(j=0;j<M;j++)
         {
             printf("%3d",A[i][j]);
            
             printf("\n");
         }
     }
     printf("sonuc dizisi\n");
     for(i=0;i<N;i++)
     {
   
     printf("%3d",B[i]);
}
system("PAUSE");
        menu();
      
            }
    void matrisenkucuk(){
        system("cls");
            int N,M,A[100][100],i,j,enk=100,sat=0,sut=0;
    printf("dizinin satir sayisi :\n");
        scanf("%d",&N);
    printf("dizinin sutun sayisi :\n");
    scanf("%d",&M);
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        {
        printf("A[%d][%d]:",i+1,j+1);
        scanf("%d",&A[i][j]);
    }
    }
for(i=0;i<N;i++)
{
    for(j=0;j<M;j++)
    {
        if(A[i][j]<enk)
        {
       
        enk=A[i][j];
        sat=i+1;
        sut=j+1;
    }
    }
}
for(i=0;i<N;i++)
    for(j=0;j<M;j++)
        printf("%2d",A[i][j]);
        printf("\n");
       
printf("en kucuk sayi %d\n",enk);
printf("satir no :%d,sutun no %d\n",sat,sut);
system("PAUSE");
        menu();
      
    }
   
    void vizefinal(){
        system("cls");
        int not_cizelgesi[100][100];
    int N,M,i,j;
    printf("ogrenci sayisini giriniz :\n");
    scanf("%d",&N);
    printf("Sinav Sayisini girin:\n");
    scanf("%d",&M);
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        {
            printf("%d numarali ogrencinin",i+1);
            printf("%d numarali sinavi: \n",j+1);
            scanf("%d",&not_cizelgesi[i][j]);
        }
    }
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        printf("%4d",not_cizelgesi[i][j]);
        printf("\n");
    }
   
    system("PAUSE");
        menu();
      
    }
   
    void matrispozneg(){
        system("cls");
            int A[100][100],poz[100],neg[100],n,m,i,j,p=0,ne=0;
    float ort1=0,ort2=0,top1=0,top2=0;
        printf("satir sayisi: ");
        scanf("%d",&n);
        printf("sutun sayisi: ");
        scanf("%d",&m);
        for(i=0;i<n;i++)
        {
            for(j=0;j<m;j++)
            {
                    printf("A[%d][%d]: ",i+1,j+1);
                        scanf("%d",&A[i][j]);
            }
        }
        for(i=0;i<n;i++)
        {
            for(j=0;j<m;j++)
            {
                    if(A[i][j]>0)
                    {
                        poz[p]=A[i][j];
                        p++;
                        top1+=A[i][j];
                    }
                    else if(A[i][j]<0)
                    {
                        neg[ne]=A[i][j];
                        ne++;
                        top2+=A[i][j];
                    }
            }
        }
        ort1=top1/p;
        ort2=top2/ne;
        printf("Asagida %d Tane pozitif sayi vardir \n ",p);
       
    for(i=0;i<p;i++)
    {
        printf(" %d ",poz[i]);
    printf("\n");
    }
    printf("Pozitif sayilarin ortalamasi : %f",ort1);
    printf("Asagida %d tane negatif sayi vardir \n",n);
    for(i=0;i<n;i++)
    {
            printf(" %d ",neg[i]);
            printf("\n");
    }
    printf("Negatif sayilarin ortalamasi : %f",ort2);

system("PAUSE");
        menu();
      
    }
   
    void canegrisi(){
        system("cls");
    float ogrenci[100];
    float ortalama,toplam = 0;
    int ortalama_ustu_adedi = 0,ortalama_alti_adedi = 0,i,N;
    // Dizinin elemanlarýný girdirelim herþeyden önce
    printf("Ogrenci sayisini giriniz:");
    scanf("%d",&N);
    for(i=0;i<N;i++)
    {
   
    printf("%d. Ogrencinin notunu giriniz: ",(i+1));
    scanf("%f",&ogrenci[i]);
    toplam+=ogrenci[i];
}
// Bu bölümde öðrencilere ait notlarý girdirmiþ olduk kullanýcýya
// Þimdi ise dizinin ortalamasýný hesaplatýcaz
ortalama = toplam / N;
// Tekrar bir döngü açýcaz ve bu döngü de ortalamadan küçük ve büyük öðrencilerin kaç adet olduðunu belirlicez.
for(i=0;i<N;i++)
{
    if(ogrenci[i]<ortalama)
    ortalama_alti_adedi++;
    else if(ogrenci[i]>ortalama)
    ortalama_ustu_adedi++;
}
// artýk kullanýcýya ne varsa bam bam sýralýcaz
printf("Ortalama %f\n",ortalama);
printf("ortalamadan dusukk %d ogrenci vardir.\n",ortalama_alti_adedi);
printf("Ortalamadan yuksek %d ogrenci vardir",ortalama_ustu_adedi);

system("PAUSE");
        menu();
      
}

void dizibuyukkucuk(){
    system("cls");
    int a[100],i,n,adet=0,gsayi=0,top=0;
    float ort;
    printf("dizi kac elemanli olsun");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        printf("A[%d]",i+1);
        scanf("%d",&a[i]);
    }
    printf("Bir Sayi giriniz ");
    scanf("%d",&gsayi);
    for(i=0;i<n;i++)
    {
        if(a[i]>gsayi)
        {
            top=top+a[i];
            adet++;
           
        }
       
    }
    ort=top/adet;
    printf("%d tane sayi icerisinde %d sayisindan buyuk %d tane sayi vardir.Toplami = %d ortalamasi = %f",n,gsayi,adet,top,ort);
    system("PAUSE");
        menu();
      
   
}

int main(){
   
    menu();
    return 0;
}

C Programlama Dili Örnek Arşivi

Herkese merhabalar,biraz yoğun bir temponun içerisinde olduğum halde nerden aklıma geldiğini bilmiyorum ama Drive'ımda öyle sessiz sakin unutulmuş olarak kalan C dili örneklerimi burada paylaşmak istedim.Örnek sayısı 150 nin üzerinde ve içerisinde çok basit olarak nitelendirdiklerimi eleyeceğim.Bugün ve ilerleyen günlerde vakit buldukça yenilerini eklemeyi düşünüyorum.Şunu da belirtmek isterim ki örnekler 4 sene öncesine aittir yani buram buram hamlık,çiğlik kokabilir bunun altını çizmek isterim( :) ).C# ve Java daki çalışmalarımı da yüklemeyi isterdim fakat onları yedeklememiş olmamdan ötürü onlar ne yazık ki yok.Bu örneklerin işinizi görmesini dilerim,soru-cevaplarınız için mail adresimden,yorum bırakarak veya LinkedIn den ulaşabilirsiniz.

Decision Making Under Uncertainty Automation C#(Belirsizlik Altında Karar Verme Otomasyonu C#)

Karar verme teknikleri çatısı altında bulunan karar verme yöntemlerinden belirsizlik altında karar verme problemlerinin  çözümünün C# dilinde yazılmış kodlarını paylaşma gereği duydum çünkü, internette bu konuyla alakalı Türkçe ve yabancı kaynak göremedim.Yorum satırlarında gerekli bilgiler verildiği için bir ön açıklama yapma gereği duymadım ama sizler sorularınız olduğu takdirde yorum bırakabilir veya instagram hesabımdan benimle iletişime geçebilirsiniz.İşinize yarayacağını umuyorum iyi çalışmalar dilerim.





            int n = 0, m = 0;

            Console.WriteLine("*****Decision Making Under Uncertainty Automation*****"); // Belirsizlik altında karar verme otomasyonu.

            Console.WriteLine("Please enter the values we need"); // Lütfen ihtiyacımız olan sayıları girin
            //Create the matris ( Matrisi oluşturacağız)

            Console.WriteLine("Please enter the matris column pax :  "); // lütfen matrisin sütun sayısını giriniz

            n = Convert.ToInt32(Console.ReadLine());  // n değişkenine sütunu atadık

            Console.WriteLine("Please enter the matris line pax : "); // lütfe matrisin satır sayısını giriniz

            m = Convert.ToInt32(Console.ReadLine()); // m değişkenine satır sayısını atadık

            int[,] masterValues = new int[n,m]; // matrisimizi n ve m sayılarına göre oluşturduk.

            string[] decisionVariable = new string[n]; // decisionVariable alternatif demek yani burada alternatiflerin adını tutucaz(örn. network)

            //Read Values // Kullanıcıdan matrise veri girişi yapmasını istiyoruz burada


            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    Console.WriteLine("Please enter Values : [" + (i + 1) + "][" + (j + 1) + "]");

                    masterValues[i, j] = Convert.ToInt32(Console.ReadLine());
                }
            }
            // alternatiflerin adını girdireceğiz aşağıdaki döngüde

            // ( örn : network , network + güvenlik)
            Console.WriteLine("Please enter the decision variables name : "); // LÜTFEN ALTERNATİFLERİN ADINI GİRİN
           
           
            for (int i = 0; i < n; i++)
            {
                Console.WriteLine((i + 1) + ". decision name : ");  

                decisionVariable[i] = Console.ReadLine();

            }
            Console.Clear(); // bu komutla konsol ekranını temizlemiş olduk yani önceki yazılanlar silindi.

            Console.WriteLine(" ");

            //Write Values On Screen (Kullanıcının girdiği değerleri ekrana yazdırıcaz.)

            for (int i = 0; i < n; i++)
            {

                for (int j = 0; j < m; j++)
                {
                    Console.Write(masterValues[i, j] + "\t");

                }
                Console.WriteLine(" ");
            }

            //MaxiMax


            string maxiMaxDecisionName = " "; // Maximax işlemi sonucunda seçilen kararın adını tutacağımız değişkeni tanımladık.

            int maxiMax = 0; // maximax sonuç değerimizi tutacağımız değişkeni tanımladık.

            int[] maxNumber = new int[n]; // Her satırın en büyük değerini tutacağımız diziyi tanımladık.

            int helper = 0; // her satırdaki büyük değişkeni bulup maxNumber dizisine atmamızı sağlayacak olan değişken.

            for (int i = 0; i < n; i++)   
            {
                for (int j = 0; j < m; j++)                 //her satırdaki en büyük değeri buluyoruz
                {
                    if (masterValues[i, j] > helper)
                    {
                        helper = masterValues[i, j];


                    }

                }
                maxNumber[i] = helper;
            }
            helper = 0;                     // bu sefer her satırın en büyük elemanları arasında en büyük olanı seçeceğimiz için helper değişkenini tekrardan 0 yaptık.
            for (int i = 0; i < n; i++)
            {
                if (maxNumber[i] > helper)
                {
                    maxiMax = maxNumber[i];
                    maxiMaxDecisionName = decisionVariable[i];
                }
            }

            //MaxiMin
            int maxiMin = 0;    // maximin karar değişkenimizi tutacağımız değişkeni tanımladık
            string maxiMinDecisionName = " ";  // maximin de seçilen alternatifi tutacağımız değişkeni tanımladık  
            int[] minNumber = new int[n];    // her satırın maximin değerini tutacağımız diziyi tanımladık
            helper = 100000;  /// küçük olan sayıyı bulmak için helper değişkenine 10000 sayısını atadık.
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)         //her satırdaki en küçük elemanı buluyoruz
                {
                    if (masterValues[i, j] < helper)
                    {
                        helper = masterValues[i, j];

                    }

                }
                minNumber[i] = helper;
            }

            helper = -500;  // en büyük elemanı bulacağımız için helpera -500 tanımladık
            for (int i = 0; i < n; i++)
            {
                if (minNumber[i] > helper)
                {
                    helper = minNumber[i];
                    maxiMin = minNumber[i];
                    maxiMinDecisionName = decisionVariable[i];

                }
            }
            //Harwics
            Console.WriteLine("Please enter the alpha value : "); // alfa değeri istiyoruz kullanıcıdan
            double alpha = Convert.ToDouble(Console.ReadLine()); //
            double oneMinusAlpha = (1 - alpha); // burada 1- alfa değişkenine değer olarak 1-alpha değerini atadık.
            int[] harwics = new int[n];
            string harwicsDecisionName = "";
            for (int i = 0; i < n; i++)
            {
                harwics[i] = (int)(alpha * maxNumber[i]) + (int)(oneMinusAlpha * minNumber[i]); // Her satırdaki en büyük elemanla alfayı,
                                                                                                // en küçük elemanla 1- alfayı çarpıyoruz
            }
            helper = 0;
            double harwicsMax = 0;
            for (int i = 0; i < n; i++)
            {
                if (harwics[i] > helper)                // burada her alternatif için bulduğumuz hurwics değerlerinin en büyüğünü buluyoruz.
                {
                    harwicsMax = harwics[i];
                    harwicsDecisionName = decisionVariable[i];
                }
            }
            //Laplace Criterion
            double temporary = 0;
            int[] laplace = new int[n];
            int laplaceDecision = 0;
            string laplaceDecisionName = "";
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {

                    temporary = temporary + masterValues[i, j];             //geçici değişkene bütün satırın elemanlarını atıyoruz,
                                                                            //aşağıda (1 / satır sayısı)na bölebilmek için.

                }
                temporary *= 0.166666666666667;
                laplace[i] = Convert.ToInt32(temporary);

                temporary = 0;

            }
            temporary = 0;
            for (int i = 0; i < n; i++)
            {
                if (laplace[i] > temporary)                 // her  alternatif için bulduğumuz laplace değerlerinin en büyük olanını bulduğumuz kısımdayız
                {
                    laplaceDecision = laplace[i];
                    laplaceDecisionName = decisionVariable[i];
                }
            }
            //MinMax
            int[] minMax = new int[m];              //her sütunun minmax değerini tutacağımız diziyi tanımladık
            int[,] temporaryMasterValues = new int[n, m]; // minmax işlemi sonrasında matrisin yeni halini tutacağımız matrisi tanımladık.
            int counter = 0;
            int c = 0;
            int l = 0;
            helper = -500;          
            for (int i = 0; i < n; i++)                         // ana matrisimizi yeni matrisin içine kopyalıyoruz
            {
                for (int j = 0; j < m; j++)
                {
                    temporaryMasterValues[i, j] = masterValues[i, j];
                }
            }


            for (l = 0; l < m;     )             //Burada her sütunun  en büyük değerini bulacağımızdan ötürü bir sayaç yardımıyla bu işlemi gerçekleştirdik
            {                                    // mantığı ise sayaç satır sayısı kadar döndüğünde satır indisini başa al sütunu ise 1 arttır şeklinde
                if (masterValues[c, l] > helper) // bir yol izliyoruz.
                {
                    helper = masterValues[c, l];
                    minMax[l] = masterValues[c, l];
                }
                counter++;
                c++;
                if (counter == n)
                {
                    counter = 0;
                    c = 0;
                    l++;
                    helper = -500;
                }
            }
            c = 0;
            l = 0;
            counter = 0;           
            for (l = 0; l < m;)                 //burada ise her sütunun en büyük elemanını bulduktan sonra o sütune ait elemanlardan bulduğumuz
            {                                   //sayıyı çıkartıyoruz.
                temporaryMasterValues[c, l] = minMax[l] - (temporaryMasterValues[c, l]);
                counter++;
                c++;
                if (counter == n)
                {
                    counter = 0;
                    c = 0;
                    l++;
                }

            }
            int[] minMaxsMaxNumber = new int[n];
            int miniMax = 0;                   
            string minMaxDecisionName = " ";
            //sort
            helper = -500;
            for (int i = 0; i < n; i++)         //artık yeni tabloyu elde ettik ve her satırın en büyüğünü bulup onlar arasından
            {                                   //en küçüğünü seçeceğimiz kısımdayız.
                for (int j = 0; j < m; j++)
                {
                    if (temporaryMasterValues[i, j] > helper)
                    {
                        helper = temporaryMasterValues[i, j];


                    }

                }
                minMaxsMaxNumber[i] = helper;
                helper = -500;
            }
            helper = -500;
            for (int i = 0; i < n; i++)
            {
                if (minMaxsMaxNumber[i] > helper)
                {
                    miniMax = minMaxsMaxNumber[i];
                    minMaxDecisionName = decisionVariable[i];

                }
            }

            // Expected Value(gain)    -- (beklenen değer / kar )
            int[] expectedValue = new int[n];
            double[] expectedValueMultiply = new double[6] { 0.15, 0.25, 0.1, 0.15, 0.25, 0.1 };


            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {

                    expectedValue[i] += Convert.ToInt32(expectedValueMultiply[j] * Convert.ToDouble(masterValues[i, j]));
                }
            }
            //sort
            helper = -500;                  //burada her satır için bulduğumuz değerlerin en büyüğünü alıyoruz.
            int expectedValueDecision = 0;
            string expectedValueDecisionName = " ";
            for (int i = 0; i < n; i++)
            {
                if (expectedValue[i] > helper)
                {
                    helper = expectedValue[i];
                    expectedValueDecision = expectedValue[i];
                    expectedValueDecisionName = decisionVariable[i];
                }
            }

            // Expected value of complete information     // tam bilginin beklenen değeri
            double evoci = 0;
            c = 0;
            l = 0;
            counter = 0;
            for (l = 0; l < m;)
            {
                if (temporaryMasterValues[c, l] == 0)
                {
                    evoci += expectedValueMultiply[l] * Convert.ToDouble(masterValues[c, l]);
                }
                counter++;
                c++;
                if (counter == 3)
                {
                    counter = 0;
                    c = 0;
                    l++;
                }

            }

            double realEvoci = evoci - expectedValueDecision;

            //Write the results // artık sonuçları ekrana yazdırıyoruz.
            Console.WriteLine(" ************************* MaxiMin *************************");
            Console.WriteLine(" ");
            Console.WriteLine("MaxiMin valuse is : " + maxiMin + ". \t And decision is : " + maxiMinDecisionName);
            Console.WriteLine(" ");
            Console.WriteLine(" ************************* MaxiMax *************************");
            Console.WriteLine(" ");
            Console.WriteLine("MaxiMax value is : " + maxiMax + ". \t And decision is : " + maxiMaxDecisionName);
            Console.WriteLine(" ");
            Console.WriteLine(" ************************* Hurwicz *************************");
            Console.WriteLine(" ");
            Console.WriteLine("The output of the table obtained based on Hurwicz criterion is as follows as a result of the examination, the decision value was : [" + harwicsMax + "]. \t And decision is" +
                ":" + harwicsDecisionName);

            for (int i = 0; i < n; i++)
            {

                Console.WriteLine(harwics[i]);

            }
            Console.WriteLine(" ************************* Laplace *************************");
            Console.WriteLine("The output of the table obtained based on Laplace criterion as follows as a result of the examination,the decision value was : [" + laplaceDecision + "]. \t And decision is " +
                ":" + laplaceDecisionName);

            for (int i = 0; i < n; i++)
            {

                Console.WriteLine(laplace[i]);

            }
            Console.WriteLine(" ");
            Console.WriteLine(" *************************minMax *************************");
            Console.WriteLine(" ");
            Console.WriteLine("You see your table status after minMax progress under this line ;  ");
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    Console.Write(temporaryMasterValues[i, j] + "\t");
                }
                Console.WriteLine(" ");
            }
            Console.WriteLine(" ");
            Console.WriteLine("And you see  every lines biggest value is under this line ");
            Console.WriteLine(" ");
            for (int i = 0; i < n; i++)
            {
                Console.WriteLine(minMaxsMaxNumber[i]);
            }
            Console.WriteLine(" ");
            Console.WriteLine("And miniMax decision value is : [" + miniMax + "],miniMax decision is :" + minMaxDecisionName);
            Console.WriteLine(" ");
            Console.WriteLine(" ************************* Expected Value *************************");
            Console.WriteLine(" ");
            Console.WriteLine("You see your decision and decisions expected values under this line");
            Console.WriteLine(" ");
            for (int i = 0; i < n; i++)
            {
                Console.WriteLine("[" + decisionVariable[i] + "] :" + expectedValue[i]);
            }
            Console.WriteLine(" ");
            Console.WriteLine("And expected values decision value is : [" + expectedValueDecision + "],and decision variable is : " + expectedValueDecisionName);
            Console.WriteLine(" ");
            Console.WriteLine(" ************************* Expected Value Of Complete Information *************************");
            Console.WriteLine(" ");
            Console.WriteLine("Expected value of complete informations is : " + evoci + " - " + expectedValueDecision + " = " + realEvoci);
            Console.ReadKey();
            Console.Clear();

                Console.ReadKey();
           
        
    


Evil Twin Kablosuz Ağ Saldırı Yöntemi ve Bu Saldırılardan Korunmak

  Yoğun bir tempo atlattığım için blogta aktif olarak yazı yazamıyorum ki blogu kurarken haftada iki konu anlatırım diye açmıştım ama eldeki hesap çarşıya uymadı her zamanki gibi.Bugün de hazır izin günümdeyken bir yazı paylaşmak istemiştim ve  ne yapacağım konusunda kararsızdım ama sonra eskiden çok ekmeğini yediğim bir yöntemi anlatma konusunda karar kıldım.Devasa wordlistlerle günlerce brute force saldırısı yapacak sabıra sahip birisi değilseniz benim gibi bu yöntem hem çok daha pratik hemde işe yaraması muhtemel.İlerleyen zamanlarda da krack saldırısı hakkında bir anlatım yapmak istiyorum boş vakit bulduğum takdirde.

Başlamadan önce kablosuz ağ saldırıları üzerine kafa patlatmaktansa web zaafiyetlerine kafa patlatmanızı önerdiğimi vurgulayıp uygulama kısmına geçelim.Evil twin saldırısı bir ağın klonunu oluşturarak kurbanı klon ağa yönlendirip ağın şifresinin elde edilmesidir.Bu işlemi gerçekleştiren bir çok araç internet üzerinde mevcuttur.Ben Parrot OS üzerinde fluxion-master aracını kullanarak bu işlemi gerçekleştireceğim,fluxionu da https://github.com/hunnain/fluxion-master adresinden edinebilirsiniz.



 
ilk olarak fluxion-masterı indirdiğimiz dizine giderek chmod +x fluxion.sh yaptıktan sonra ./fluxion.sh komutunu giriyoruz

Dil seçeneği gelecek İngilizce veya Türkçe seçeneği ile devam edebilirsiniz

1 deyip bütün kanallar seçeneği ile devam ediyoruz

Yaklaşık 10-15 saniye tarama yaptıktan sonra Ctrl + C tuşlarına basarak taramadan çıkıyoruz

İstediğimiz ağın başında ki numarayı girerek işleme devam ediyoruz.Burada numarasının yanında " * " olan ağı seçmenizi öneririm

Ağımızı seçtikten sonra hangi atak ile devam edeceğimizi soruyor, 1 deyip devam edelim.

 Handshake dosyasını nereye kaydedeceğini soruyor.Varsayılan dizin dışında bir dizin istiyorsanız girin yoksa enter deyip devam edebilirsiniz


Handshake kontrolünün yapılacağı aracı seçmemizi istiyor.Ben pyriti kullanıyorum siz de 1 deyip devam edebilirsiniz

Bütün kullanıcıları ağdan atmasını istediğimiz için 1 deyip devam ediyoruz

Burada beklememiz gerekecek,ağdaki kullanıcı sayısı ve aktifliğine göre bekleme süremiz şekilleniyor.Kafe gibi çok sayıda kullanıcıya sahip alanlarda çok kısa süre beklerken bir ev ağına saldırı düzenlendiğinde bu süre uzayabiliyor

Ve nihayet birisi ağdan düşüp tekrar bağlandığında bizde handshake imizi elde etmiş oluyoruz.Bunu da ilgili alanda beliren "wpa handshake" yazılı alandan anlayabiliyoruz

Handshake imizi aldıktan sonra 1 deyip devam ediyoruz

1 deyip devam ediyoruz

Yine 1 deyip devam ediyoruz


Burada şifreyi alacağımız oturum açma ekranının arayüzünü seçeceğiz.Türkçe seçeneği ile devam edebilirsinzi veya internet sağlayıcılarının arayüzlerinin taklit edilmesi gibi yöntemlere başvurabilirsiniz

Şimdi evil twin saldırısının işçilik kısmını bitirdik.Artık birisinin oluşturduğumuz klon ağa bağlanıp parolasını girmesini beklemek kalıyor geriye

Resimde göreceğimiz üzere klon ağımız oluşturulmuş durumda.Kurban olarak bağlanıyoruz direk


Bizi otomatik olarak oturum açma sayfasına yönlendiriyor

Bu senaryoda önümüze böyle bir pencere çıkıyor ve buraya oturum açmak ağ şifremizi girmemiz isteniyor


Biz bunları yaparken sol altta FAKEDNS penceresi altında da arka planda dönen işlemleri görebilirsiniz.Sağ üstte de android cihazdan 1 kullanıcı bağlandığını görebiliyoruz.


Parolamızı giriyoruz

Ve saldırı başarıyla gerçekleşti.Ağ şifresini elde etmiş bulunuyoruz.Sağda belirtilen dizine giderek parolaya bakıyoruz



Vee şifreyi elde etmiş bulunuyoruz.

Burada asıl amaç insanlara kablosuz ağlara nasıl sızabileceğinizi öğretmek değil.Burada temel nokta saldırıyı anlayıp nasıl korunmanız gerektiğinizi bilmektir.Eminim ki şu satırları okuyan birisi bir evil twin saldırısına maruz kaldığı takdirde asla kurban olmayacaktır.Benim lisede en çok kullandığım yöntemdi ve brute force yöntemindense daha tercih edildiğini düşündüğümden dolayı evil twin saldırısından bahsetmeyi düşündüm.Umarım faydalı olmuştur ve bir saldırgan sizi klon ağ oluşturarak kurban durumuna düşürmeye çalışırsa bu yemi yutmazsınız.Sorularınız olursa sorabilirsiniz dinlediğiniz için teşekkür ederim bir sonraki yazımda görüşmek dileğiyle.