Turkhackteam.net/org - Turkish Hacking & Security Platform  
Geri git   Turkhackteam.net/org - Turkish Hacking & Security Platform >
Programlama
> C# j# vb.net (.NET dilleri)


C#: Hadi Excel şifre kırıcı yapalım...

C# j# vb.net (.NET dilleri)

Yeni Konu aç Cevapla
 
Seçenekler
Alt 09-02-2018 00:49   #1
  • Yarbay
  • Üye Bilgileri
Üyelik tarihi
07/2015
Nereden
Ankara
Mesajlar
Konular


  
C#: Hadi Excel şifre kırıcı yapalım...



Heçkırların en çok kullandığı algoritmalardan biri de "brute force", yani kaba kuvvet algoritmalarıdır.

Brute force'un temel mantığı, bilinmeyen bir kodun muhtemel bütün kombinasyonların denenerek bulunmasıdır. Yapılması epey basit programlardır, ama gene de programlama mantığı konusunda güzel örnekler sayılabilirler.

Şifrenin gerek kompleksliği, gerekse uzunluğu arttıkça brute force için gereken süre geometrik olarak arttığından ne yazık ki genelde işe yaramazlar ama, forumdaki bir arkadaşın paylaştığı excel dosyasını gene de kırmayı deneyelim.

Öncelikle Visual Studio'da yeni bir konsol applikasyonu açalım.

.... Sonra uploads.im sitesinin bozulduğunu, artık otomatik resim upload ettirmediğini öğrenelim, bir saat arayıp kek.gg sitesini bulalım, resim kesicimizi düzeltelim...

Ahem! Ne diyorduk... Bir excel dosyasını tekrar tekrar açmaya çalışmanın en kolay yolu interoplardır. Bundan dolayı projemize Excel interopunu yükleyeceğiz. Interoplar, başka sistemlerle çalışmak için bazı applikasyonlarda açılmış kapılardır. Mesela excel'in interopunu kullanarak bir çok dilde Excel programını arkaplanda açıp istediğimiz işlemleri yapabiliriz.

Önce proje adının üstünde sağ tıklayıp, "Add Reference" seçeneğini seçelim.


Soldaki listeden Assemblies'i seçelim. Çünkü Excel interop'u .NET uyumlu bir assembly'dir. Ardından sağ üstteki arama kısmına "excel" yazıp, interop dll'lerinden birini seçelim. Gereken diğer referansları otomatik olarak ekleyecektir.


Başka bir şeye ihtiyacımız yok.. Şimdi mantığı kurmaya başlayalım.

Bir algoritma kurarken, örneği sadeleştirmek her zaman için iyidir. Mesela diyelim ki sadece a, b ve c karakterlerinden oluşan bütün şifreleri yazmak istiyoruz. Nasıl yazarız?

a
b
c
....

Sonra? Bir karakter daha ekleriz.

aa
ab
ac

... Sonra da aynen sayılarda olduğu gibi, soldaki basamağı bir artırırız.

ba
bb
bc
ca
cb
cc
aaa

Bu mantığı aynen kullanan bir class yazarsak, şifrelerin değişimini çok hızlı bir şekilde hesaplayabiliriz. Ve HIZLI bir şekilde şifre kırmak istiyoruz.

Benim zaten bir class'ım var bu işler için ama, sizinle beraber yenisini yazacağım.

Proje üstünde sağ tıklayalım, yeni bir öğe ekleyelim...


Ekleyeceğimiz şey bir Visual C# elemanı, bir "class"...


Ekle tuşuna basmadan aşağından ismini "SifreKarakteri" yapıverin tabii.. Resimde göstermeyi unuttum.

Kod:
class SifreKarakteri
{
    //Önce bütün kullanacağımız karakterleri, "const" yani sabit bir değer olarak tanımlayalım. Bu değer
    //programın çalışması esnasında değişmeyecektir.
    private const string karakterler = "qwertyuıopğüasdfghjklşizxcvbnmöçQWERTYUIOPĞÜASDFGHJKLŞİZXCVBNMÖÇ1234567890";
    //Bütün karakterler "karakterler" string'i içinde ilk değerden başlayacak, sonra yavaş yavaş ilerleyecekler.
    private byte degeri=0;
    //Başta bu değer "null" olsa da, şifremiz ilerledikçe, kendinden sonraki karakterin ne olduğunu da hatırlamalılar.
    private SifreKarakteri sonrakiKarakter;
    //String değeri olarak şifremizi istememiz gerekecek.
    //Standart "ToString()" metodunu override ediyoruz, yani onun yerine kendi özel fonksiyonumuzu yazıyoruz.
    public override string ToString()
    {
        //?? operatörünü bilmeyenler için; bu operatör soldaki değer NULL ise, sağdaki değeri verir.
        //Yani sonrakiKarakter boş ise, boş string ile işlem yapıyoruz.
        //Neden (object) yazıp sonrakiKarakter'i objeye dönüştürdük? Çünkü bilgisayarın kafası karıştı,
        //"Ne yani SifreKarakteri türünden bir eleman ile boş string aynı türden mi?" dedi.
        //Biz de dedik ki; "biz sonucu 'object' olarak istiyoruz. Salla gitsin."
        //Son olarak da bu değere, en son karakterimiz hangi değer ise karakterler arasından seçip onu ekledik.
        return ((object)sonrakiKarakter??"").ToString() + karakterler[degeri];
    }
    //Bir sonraki şifreyi isteme fonksiyonumuz son fonksiyonumuz olacak...
    public vo id sonrakiSifreyeGit()
    {
        //Değerini artıralım.
        degeri++;
        //Eğer bütün karakterleri geçmişsek...
        if (degeri == karakterler.Length)
        {
            //Öncelikle bu basamak en baştaki değere geri dönmeli...
            degeri = 0;
            //Sonra da sonraki basamak yoksa oluşturulmalı, varsa ilerletmeli.
            if (sonrakiKarakter == null) sonrakiKarakter = new SifreKarakteri(); else sonrakiKarakter.sonrakiSifreyeGit();
        }
    }
}
Süper zeki forum filtremiz "vo id" anahtar kelimesini "****" yapıyor, ondan dolayı onu boşluk ile yazıyorum, anlarsınız onu artık.

Süper, şimdi şifre oluşturucu bir class'ımız var. Ana fonksiyonu yazalım...

Kod:
class Program
{
    //Şifrenin bulunduğunu bütün diğer thread'lere bildirmemiz lazım değil mi?
    //Bu değişkenimiz "volatile".. Yani bilgisayara "önüne gelen thread değiştirebilir
    //bunu, ona göre önlemi sen al, ben almayacağım" diyoruz.
    private static volatile bool sifreBulundu = false;
    //İlk şifre karakterimizi oluşturmuş oluyoruz. Böylece ilk şifremiz de oluşuyor. "q"...
    private static SifreKarakteri sifremiz = new SifreKarakteri();
    static vo id Main(string[] args)
    {
        // 20 kez...
        for (int i = 0; i < 20; i++)
        {
            //Yeni bir thread oluştur, bu thread "sifreKir" fonksiyonunu çalıştırsın.
            System.Threading.Thread thread = new System.Threading.Thread(sifreKir);
            //Bu thread Single Thread Apartment Model üstünden çalışacak.
            //O ne demek?
            //Yani modası geçmiş COM objelerinin sadece tek thread üstünde çalışabildiği
            //zamanlarda olduğu gibi, bilgisayar bu thread için hafızada sabit, değişmez
            //bir alan atayacak.
            //Bunu yapmak zorundayız. Excel applikasyonu bir GUI'dir, yani grafiksel
            //kullanıcı arayüzüdür. Bütün grafiksel kullanıcı arayüzleri STAThread
            //üstünden çalışır, çünkü windows onlardan değişmez bir "handle" ister.
            //Bazı windows kütüphanelerinin istediği HWND değerleri diğer thread türü
            //olan MTA - Multi Thread Apartment Model - çok threadli apartman modeli
            //için oluşturulmaz.
            thread.SetApartmentState(System.Threading.ApartmentState.STA);
            //Çok konuştuk başlasın işlem....
            thread.Start();
        }
    }
    private static vo id sifreKir()
    {
        //Önce bu thread'e özel bir Excel Applikasyonu açalım.
        Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
        Microsoft.Office.Interop.Excel.Workbook book;
        //Görünmez olsun bu applikasyon.
        app.Visible = false;
        //Bize uyarı muyarı da göstermesin...
        app.DisplayAlerts = false;
        //Şimdi şifremizi, başka thread'ler değiştirmeden alıp, sonra hemen biz ilerletelim.
        string suankiSifre;
        //Doğru şifreyi bulmadıkça denemeye devam etmek için sonsuz döngüye giriyoruz.
        while (true)
        {
            //"Şifremize başka thread ben kullanırken dokunamasın, onu kilitle"
            //diyoruz.. Yani "lock" ediyoruz.
            lock (sifremiz)
            {
                //Lokal bir değişkene aktardık...
                suankiSifre = sifremiz.ToString();
                //Sonra şifreyi ilerlettik ve kilitten çıktık.
                sifremiz.sonrakiSifreyeGit();
            }
            //Hata bloğu açıyoruz. Şifre yanlış ise, COM objesi hata verecek. O zaman sonrakini deneyeceğiz.
            try
            {
                //Workbook'u açmaya çalışıyoruz. İlk parametre dosya adı, 2. parametre excel kitabı içindeki
                //linklerin yenilenip yenilenmeyeceği, 3. dosyayı sadece okunur şekilde açıp açmayacağımız,
                //5. parametre de şifredir.
                //Aradaki 4. parametre yerine Type.Missing, yani "girilmemiş değer" olarak algılanan sabit
                //değeri giriyoruz. Bizi ilgilendirmiyor, formatı kendi bulsun.
                book = app.Workbooks.Open("d:\\deneme.xlsx", false,true, Type.Missing, suankiSifre);
                //Buraya geldiysek hata gelmedi! Şifremiz doğru! Önce bulduğumuzu belirtelim.
                sifreBulundu = true;
                //Sonra şifreyi ekrana yazalım..
                Console.WriteLine("Şifre: " + suankiSifre);
                //Sonra da kullanıcının enter'a basmasını bekleyelim.
                Console.ReadLine();
                //Sonra da excel'i kapatıp bu thread'den çıkalım.
                app.Quit();
                return;
            }
            catch (System.Runtime.InteropServices.COMException ex)
            {
            }
            //Acaba şifreyi başkası buldu mu?
            if (sifreBulundu)
            {
                //Diğer thread şifreyi bulmuş, bizdeki gereksiz excel'i kapatalım.
                app.Quit();
                //.... sonra da çıkalım bu thread'den.
                return;
            }
            //Yok bulunmadı ise denediği şifreyi yazsın...
            Console.WriteLine(suankiSifre + " denendi...");
        }
    }
}
İşte bu kadar... Ne yazık ki, düşündüğümden çok daha yavaş çalışıyor.. Ama yine de son çare olursa, kullanılır...

Tabii bunu denedikten sonra, görev yöneticisinde ayrıntılar sekmesine gelip, görünmez 20 tane excel.exe'yi kapatmayı unutmayın
    


___________________________________________

Gayrıresmi Trolleme Kulübü Kurucu Üyesi...

Sii Şarp: 430%
Site yapmah: 386%
Piieyçpii: 396.8%
Cava: 205%
Andıroyid: 37.9²%
Nodjiies: 196%
Sii artı artı: 342.333333334%
Yuniti: 154%
Paytın 304%
Bat dosyasıyla hedef çökertme: 96i+382√17%


Konu zztri tarafından (09-02-2018 01:30 Saat 01:30 ) değiştirilmiştir..
 Offline  
 
Alıntı ile Cevapla
Alt 09-02-2018 00:53   #2
  • Tamamen Forumdan Uzaklaştırıldı
  • Üye Bilgileri
Üyelik tarihi
09/2017
Nereden
Yalova
Mesajlar
Konular
7


  


Ellerinize sağlık üstadım hazır boş vakit varken bende sizinle beraber ilerliyeyim.
    
 Offline  
 
Alıntı ile Cevapla
Alt 09-02-2018 01:00   #3
  • Binbaşı
  • Üye Bilgileri
Üyelik tarihi
12/2015
Mesajlar
Konular


  


Eline, Emeğine Sağlık
    


___________________________________________

Aldanma insanların samimiyetine: Aldanma insanların samimiyetine! Menfaatleri gelir her şeyden önce. “Vaad etmeseydi Allah cenneti; O’na bile etmezlerdi secde.”

 Offline  
 
Alıntı ile Cevapla
Alt 09-02-2018 01:09   #4
  • Yüzbaşı
  • Üye Bilgileri
Üyelik tarihi
10/2015
Nereden
c-137
Mesajlar
Konular


  


excel'i felan filan bırakın da hocam nasa'ya ne zaman giriyoruz?
    


___________________________________________

İçmek için güzel bir zaman,hesaplanmış soğuk bir konuşma adına;
Politika hakkında,
düzen hakkında,
kardeşlik hakkında,
güç hakkında,
ama söylemler seçim kampanyaları içindir.
ŞİMDİ AKSİYON ZAMANI...
-Evil Morty

 Offline  
 
Alıntı ile Cevapla
Alt 09-02-2018 01:33   #5
  • Yarbay
  • Üye Bilgileri
Üyelik tarihi
07/2015
Nereden
Ankara
Mesajlar
Konular


  


Alıntı:
crackedx1´isimli üyeden Alıntı Mesajı göster
excel'i felan filan bırakın da hocam nasa'ya ne zaman giriyoruz?
search.nasa.gov'u istediğimde çökertebiliyorum zaten...

Hay hay, bir ara 3-4 kişi birleşirsek nasa.gov'un kendisini çökertelim. Ama bana zaman verin, Türkiye'ye yeni geldim sayılır.
    


___________________________________________

Gayrıresmi Trolleme Kulübü Kurucu Üyesi...

Sii Şarp: 430%
Site yapmah: 386%
Piieyçpii: 396.8%
Cava: 205%
Andıroyid: 37.9²%
Nodjiies: 196%
Sii artı artı: 342.333333334%
Yuniti: 154%
Paytın 304%
Bat dosyasıyla hedef çökertme: 96i+382√17%

 Offline  
 
Alıntı ile Cevapla
Alt 09-02-2018 01:35   #6
  • Siber Güvenlik Ekibi Sorumlusu
  • Üye Bilgileri
Üyelik tarihi
04/2016
Nereden
Teşkilat
Mesajlar
Konular


  


Elinize sağlık
    


___________________________________________


Sadece 1 TURK
|ceys@thtmoderasyon.com
| +1 (440) 462-0818

 Offline  
 
Alıntı ile Cevapla
Alt 09-02-2018 01:47   #7
  • Asteğmen
  • Üye Bilgileri
Üyelik tarihi
10/2009
Nereden
BURSA
Mesajlar
Konular


  


Elinize emeğinize yüreğinize sağlık. Teşekkürler
    


___________________________________________

Güneş geceyi sevmedi diye ay doğmayı bırakmaz.
 Offline  
 
Alıntı ile Cevapla
Alt 09-02-2018 11:09   #8
  • Tamamen Forumdan Uzaklaştırıldı
  • Üye Bilgileri
Üyelik tarihi
06/2013
Nereden
Jüpiter
Mesajlar
Konular


  


Hort.
Hoşgeldin üstad, eline sağlık
    
 Offline  
 
Alıntı ile Cevapla
Alt 13-05-2018 22:54   #9
  • Forumdan Uzaklaştırıldı
  • Üye Bilgileri
Üyelik tarihi
01/2016
Nereden
Nebula
Yaş
21
Mesajlar
Konular


  


Eline saglik haci abi
    
 Offline  
 
Alıntı ile Cevapla
Alt 13-05-2018 23:14   #10
  • Tamamen Forumdan Uzaklaştırıldı
  • Üye Bilgileri
Üyelik tarihi
03/2017
Nereden
T Ü R K
Mesajlar
Konular


  


Harika konu .
    
 Offline  
 
Alıntı ile Cevapla
Cevapla

Bookmarks

Seçenekler


Bilgilendirme Turkhackteam.net/org
Sitemizde yer alan konular üyelerimiz tarafından paylaşılmaktadır.
Bu konular yasalara uygunluk ve telif hakkı konusunda yönetimimiz tarafından kontrol edilse de, gözden kaçabilen içerikler yer alabilmektedir.
Bu tür konuları turkhackteamiletisim [at] gmail.com mail adresimize bildirebilirsiniz, konular hakkında en kısa sürede gerekli işlemler yapılacaktır.
Please Report Abuse, DMCA, Harassment, Scamming, Warez, Crack, Divx, Mp3 or any Illegal Activity to turkhackteamiletisim [at] gmail.com

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.



         

Powered by vBulletin® Copyright ©2000 - 2018

TSK Mehmetçik Vakfı

Türk Polis Teşkilatını Güçlendirme Vakfı



Google+

wau

Search Engine Friendly URLs by vBSEO 3.6.0 ©2011, Crawlability, Inc.