folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder C# İle Websitelere User Ve Password Post Edecegm Ama Nasil?



C# İle Websitelere User Ve Password Post Edecegm Ama Nasil?

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Kanakan
    Kanakan's avatar
    Kayıt Tarihi: 21/Aralık/2014
    Erkek

    C# ile bir websitesine combo liste ile User taramasi yapacaim.(Basitbir Sentry MBA programcigi gibi birsey) sfre kirmak icin.

    yani elimdeki User ve Passwordlari login sayfasina post edecegim.

    aldigim resonse icinde örnegin "Hos geldiniz"  stringini alip o userin kayitli olup olmadigina bakacagim.

    ögrenmek istedigim bir iki olay var.

     

    C# da bu islemi en hizli hangi siniflarla yapabilirim? HttpWebRequest, WebClient  veya webBrowser?

    Sitede sayet koruma var ise, yani iki üc denemedn sonra IP banlanirsa, proxy kullanmak istiyorum.

    her User denemesi icin bir Proxy mi , yoksa bir proxy'i 4-5 User denemesinde kullanabilirmiyim? Bunu nasil anlayacagim?

    Bazi sitelerde DDOS korumas var bunu atlatmanin bir yolu varmi?

     

     

     

     

     

     

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nick üstü yazısı.
    uguraba
    uguraba's avatar
    Kayıt Tarihi: 02/Eylül/2005
    Erkek

    Selenium kullanabilirsin, (https://www.seleniumhq.org/download) C# dahil bir çok dil için desteği var.

    Her deneme için proxy değiştirmene gerek yok, proxy kullanmadan programı çalışır hale getir. Sonrasında deneme limitine ulaştığı zaman çıkan sayfada unique bir kısım belirle ve her denemeden sonra o kısım çıkıyor mu diye kontrol et. Eğer o kısım çıkıyorsa, deneme limitine ulaştığın anlamına gelir. Bu aşamada proxy değişikliği yaparsın.

    DDOS korumasından tam olarak kaçmasa da bir öneri olarak dakikada yapılacak deneme sayısını limitle. Örneğin dakikada 20 deneme yap, bu şekilde DDOS korumasının altında kalma olasılığın olabilir.

    Eğer elinde bir veri seti varsa ve hangisinin güncel olup olmadığını kontrol edeceksen bu konuştuğumuz mantıklı. Ancak brute-force şeklinde bir şifre kırma yapmaya çalışacaksan başka bir şekil gerekli.


    Vir sapit qui pauca loquitur.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Kanakan
    Kanakan's avatar
    Kayıt Tarihi: 21/Aralık/2014
    Erkek

    Tesekkürler dediklerini dikkate alacagim.

    yanliz bir siteye post ile user ve password önderip gelen responseyi alip icide bir stringi arama bayagi uzun sürüyor.

    Söyle bir fonksiyon  yazdim.Bunu nasil hizlandirabilirim yada bu isi en hizli yapan siniflar varmi??

    Tüm responseyi cekip onun icinde string aramam mantiklimi?

            private void button1_Click(object sender, EventArgs e)
            {
                string url = textBox1.Text.Trim();
                string user = textBox2.Text.Trim();
                string password = textBox3.Text.Trim();
                string postdata = textBox4.Text.Trim();
                postdata = postdata.Replace("[user]", user).Replace("[pass]",password);
                webBrowser1.DocumentText = login(url, postdata);
    
                //string gelen = login(url, postdata);
                if (Regex.IsMatch(login(url,postdata), "Mein Profil"))
                MessageBox.Show("Bulundu");
                else
                MessageBox.Show("Bulunamadi");
    
    
            }
        
    private string login(string url,string postdata)
            {
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
                CookieContainer cookieContainer = new CookieContainer();
                request.CookieContainer = cookieContainer;
                //request.Proxy = new WebProxy("127.0.0.1:8888");
    
                request.Method = "POST";
                //string postData = "username=" + username + "&password=" + password;
                byte[] byteArray = Encoding.UTF8.GetBytes(postdata);
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = byteArray.Length;
                Stream dataStream = request.GetRequestStream();
                dataStream.Write(byteArray, 0, byteArray.Length);
                dataStream.Close();
                WebResponse response = request.GetResponse();
                if ((((HttpWebResponse)response).StatusDescription) != "OK") return (((HttpWebResponse)response).StatusDescription);
                dataStream = response.GetResponseStream();
                StreamReader reader = new StreamReader(dataStream);
                string responseFromServer = reader.ReadToEnd();
                reader.Close();
                dataStream.Close();
                response.Close();
                //MessageBox.Show(responseFromServer.IndexOf("Mein Profil").ToString());
                return responseFromServer;
            }

     

     

    Kanakan tarafından 30/Nis/18 14:12 tarihinde düzenlenmiştir
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DuPi
    DuPi's avatar
    Kayıt Tarihi: 21/Ağustos/2005
    Erkek

    Thread kavramını araştır.


    Ne zaman birşey öğrenmek istesem, Birden Vaktim Kalmıyor ?
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MadJack
    MadJack's avatar
    Kayıt Tarihi: 07/Temmuz/2014
    Erkek

    WebClient kullanmanı tavsiye ederim. Kullanımı daha kolaydır, cevabı okumak için stream işlemleri falan yapmaya gerek kalmaz. Async destekler, tek seferde birden fazla istek yapılabilir.

    Genelde siteler başarılı girişlerde 301, 302 veya 200 dönerken başarısız denemelerde 400 kodlarından birini döner. Hedef siteler belliyse önceden bir analiz ederek response u okumadan önce http yanıt kodlarına bakmak daha iyi olabilir.

    IP banlaması yapılıyorsa burada hangi kullanıcı ile istek yapıldığının önemi yoktur muhtemelen. Rastgele bir proxy'e ait IP'yi banlatıp, banlı IP'de dönen cevabın ne olduğunu görerek kodu ona göre yazardım ben olsam.

    DoS/DDoS korumasının nasıl yapıldığı önemli tabi ama atlatmanın en basit yolu daha az aralıklarla istek atmak diye düşünüyorum.

    IP ban ve DoS koruması, tam olarak sizin yapmak istediğiniz şeyi engelleme amaçlı olduğu için bu tür koruma olan yerlerde bruteforce yapıp hızlı sonuç almak pek kolay olmayacaktır.


    Everyone sees just what they want to see.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    emirhan-exp
    emirhan-exp's avatar
    Kayıt Tarihi: 10/Ocak/2010
    Erkek

    yav hocam regex.match nedir öncelikle Bunun yerine string işlemlerinden bir tanesini mesela contains i kullanabilirdin. (ben hep öyle yaparım)

     

    hızlandrmak içinse boyutuna bakmak daha mantıklı olur. response un boyutuna ulaşıp bir kaç harfin değişip değişmediğini ölçebilirsin

     

    proxynin engellenmesi için ip adresinle yaptığın kadar deneme yapman lazım. webbrowser kullanıyorsan cookie leri silmen lazım.

     

    emirhan-exp tarafından 14/May/18 02:07 tarihinde düzenlenmiştir
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Kanakan
    Kanakan's avatar
    Kayıt Tarihi: 21/Aralık/2014
    Erkek

    iste hocam bilmedigim icin soruyorum.

    yani regex.ismatch() yerine

    bool varmi = login(url, postdata).Contains("Mein Profil");

    kullansam dahami hizli olur?

    hızlandrmak içinse boyutuna bakmak daha mantıklı olur. response un boyutuna ulaşıp bir kaç harfin değişip değişmediğini ölçebilirsin

    peki bu saglikli olmazmi, sitenin login saafasinda site sahibi kücük bir degisiklik yaptiginda hep hata almazmiyim??

     

     

    Kanakan tarafından 14/May/18 03:19 tarihinde düzenlenmiştir
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    emirhan-exp
    emirhan-exp's avatar
    Kayıt Tarihi: 10/Ocak/2010
    Erkek

    eki bu saglikli olmazmi, sitenin login saafasinda site sahibi kücük bir degisiklik yaptiginda hep hata almazmiyim??

    login olamadin sayfası boyutu alınır. eğer login olunursa farklı bir boyut çıkacağından != operatörü kullanılır.

    mesela normal login olamadın sayfası 3000 byte ise program şöyle olmalıdır

    if response.length==3000 then messagebox.show("başarısız")

    if response.length!= 3000 then messagebox.show("başarılı")

    bütün işlem 15 30 dk içinde biteceğinden günümüzdeki hiç bir sitede bu kadar hızlı değişim olmaz. 

    eğer genel bir program yazmak istiyorsan sürekli boyutları kontrol etmen lazım.

    diğer soruya gelince contains regex ten hızlıdır diye tahmin ediyorum.

    bir de bu 3 sınıf içerisinde uzunluğu cevabından önce bulan ve diğerlerinden gayet hızlı bir sınıf vardı şu anda bakamıyorum o yüzden de çok hızlıydı. yarına pm gönderebilirim istiyorsan

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    emirhan-exp
    emirhan-exp's avatar
    Kayıt Tarihi: 10/Ocak/2010
    Erkek

    eklemek gerekirse örneğin civarı da alınabilir 2500 ile 3000 arası gibi

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Kanakan
    Kanakan's avatar
    Kayıt Tarihi: 21/Aralık/2014
    Erkek

    Aslinda mantikli,

    boyutuna bakarak hemen deneme yapayim bakalim nasil olacak?

    Birde combo.txt dosyasindan username ve paswwortdlarida whle döngüsüyle satir satir okuyuorm.Bunun hizli br yolu varmi?

    eger hizli yöntemleri bana verebilirseniz sevinirim.

     

  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wasd
    wasd's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    Dosyadan string okuma için daha hızlı çalışır mı bilmem ama https://msdn.microsoft.com/tr-tr/library/ms143368(v=vs.110).aspx tüm texti okuyup satır satır parse edebilirsin. (Ki şöyle düşün, dosyadan bir satır okuman x birim süre ise, o bilgiler ile request atman 20x birim süre alacak zaten internet bağlantısından kaynaklı, bu noktada dosya okuma performansına çok takılma derim)

    İşlemini de hızlandırmak istiyorsanşöyle bir önerim olabilir; login sayfasını aç, araya http proxy ile girip formu doldurup giriş denemesini yap ve parametrelerin ne şekilde hangi adrese gittiğine bak, sonrasında http://restsharp.org/

    Her seferinde htmli çek, kullanıcı adını bas, login dene falan çok yavaş kaçar.

    Girişin başarılı olup olmadığını kontrol etmek için de bir başarısız bir de başarılı giriş denemesi yap, başarılıda gelen sonucu kontrol edersin, ya da giriş için hesap yoksa başarısız giriş denemesinde dönen yanıtı al, her seferinde dönen cevabı karşılaştır, farklı sonuç dönerse başarılı olmuş ya da bruteforce engeline takılmışsın demektir :D Haydi kolay gelsin

     

    wasd tarafından 15/May/18 02:02 tarihinde düzenlenmiştir

    :)
Toplam Hit: 2469 Toplam Mesaj: 11
sentry mba httpwebrequest