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.

Windows'da Programsız Dosya Yedekleme



Windows üzerinde çalışırken belirli sıklıkta yedeğini almak istediğimiz dosyaların yedek alma işlemini manuel olarak yapmaktansa emektar dos ortamında kolayca yapabiliriz.İnternette çözüm olarak :


xcopy/s /h /e c:\yedeklenecek/klasör\*.* d:\yedek/alınacak/klasör\ /y


şeklinde bir bat scriptleri önerilmektedir en azından Türkçe kaynaklardan bahsedecek olursam.Ama bunun da manuelden bir farkı kalmıyor çünkü zamanlayıcı sayesinde otomatiğe aldığınız zaman size aşağıdaki gibi bir soru yöneltecek ve işin otomatik kısmı yarı otomatiğe dönüşecek.xcopyde varolan dosyaları atla gibi bir seçenek yok veya ben araştırmama rağmen bulamadım.Ama robocopy soruna rahatça çözüm getiriyor.






Robocopy kullanarak dosya yedekleme scripti aşağıdaki gibi olacaktır:


@ECHO OFF

ECHO YEDEKLEME İŞLEMİ BAŞLATILIYOR

robocopy C:\yedeklenecek\klasör C:\Yedeğin\atılacağı\klasör /e

ECHO Yedekleme İşlemi Bitti

PAUSE


bunu metin belgesine yazıp farklı kaydet dosyaadi.bat şeklinde kaydedin.Çalıştırdığınızda

kodun ekran çıktısı aşağıdaki gibidir.Toplam,kopyalanan,atlanan,eşleşmeyen ve başarısız olan kopyalama işlemi sayılarını takip etmenizi sağlaması robocopyi copy ve xcopyden ayıran nokta.







Şimdi bu işlemi otomatikleştirmek için aşağıda adımları takip edin




  • 1) Arama kısmına Görev Zamanlayıcı yazıp enterlayın
  • 2)Görevin adı ve açıklaması alanlarını doldurun
  • 3)Görevin ne zaman başlaması istediğinizi seçiniz
  • 4)Saati seçiniz
  • 5)Program Başlat ı seçiniz
  • 6)Oluşturduğumuz bat dosyasını seçiniz




Böylece işleminiz tamamlanmış oluyor.Eğer Windows 10 kullanıcısıysanız işlem farklı olabilir ama adımlar yine bu şekilde olacaktır.Eğer kopyalarken atlamasın üzerine yazsın ya da daha farklı opsiyonlar istiyorum diyorsanız komut satırına robocopy /? yazıp seçeneklerinize bakabilirsiniz,ekstra sorularınızı yorum bölümünden iletebilirsiniz.Bir sonraki yazıda görüşmek üzere

Console.WriteLine("Hello World");

Öncelikle herkese merhaba.Bu yazımda teknik bilgiden ziyade blogun içeriğinden bahsetmek istiyorum.Niş blog olarak içerik sağlayacağım yani belirli bir alan üzerine olacak yazılarımın içeriği ve içerik olarak Siber Güvenlik,Adli Bilişim,Ağ Güvenliği ve zaman zaman Programlamaya dair
yazılar bulabileceksiniz.Giriş konularından ziyade daha spesifik noktalara değineceğim,Türkçe kaynaklar dışında yer alan konuları,sorunları ve çözümleri adım adım aktaracağım bir alan olacak burası kısaca fakat çalıştığım süre zarfında bahsettiğim alanlardan ziyade Windowsla alakalı yazılar paylaşacağım.Kendi becelerilerimden bahsedecek olursam C,C#,Java programlama dillerini biliyorum şu an Phytona da hakim olmaya çalışıyorum,lisede Web Tasarım okudum fakat web alanına fazla hakim olduğum söylenemez ama web güvenlik açıklarıyla ilgilenmeye yetecek kadar biliyorum.Asıl ilgi alanım Sızma Testleridir şu an bu alanda uzmanlaşmaya çalışıyorum ctfler ve sanal makineler aracılığıyla.Bir sonraki yazıda görüşmek üzere.