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






C#: SOCKS5 Proxy'lere ve TOR'a bağlanma/ AR-GE Kulübü

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

Yeni Konu aç Cevapla
 
Seçenekler
Alt 13-05-2018   #1
  • Yarbay
  • Üye Bilgileri
Üyelik tarihi
07/2015
Nereden
Ankara
Mesajlar
Konular


  
C#: SOCKS5 Proxy'lere ve TOR'a bağlanma/ AR-GE Kulübü



.NET Framework, internete bağlanan her şey için HTTP ve HTTPS proxy desteği verir. Ama ne yazık ki SOCKS5 proxy'ler ilgi alanı dışında kalmıştır.

E biz heçkırız, Tor kullanacağız yahu! Tor bir SOCKS5 proxy'dir, bizi nasıl engellerler?!

Hadi hemen bir Socks5 sınıfı oluşturalım. Ben tembellik yapıyorum aslında. DoS programımın zaten Socks5 portları üstünden aktarım yapma yeteneği var, yani bu class'ın elimde yapılmışı var

Bunu bir Dynamic Link Library, yani dll projesi olarak yapacağız ki diğer projelerimizde hızlıca aktarıverelim.

Class'ı oluşturduktan sonra bilmemiz gereken tek şeyler SOCKS5 proxy'nin adresi ve portu. Bunun için gerekli alanları ve constructor'ı yazalım...

Kod:
public class Socks5Baglanti
{
    public string proxyAdres;
    public int proxyPort;
    public System.Net.Sockets.Socket soket;
    public System.IO.Stream baglanti;
    public Socks5Baglanti(string proxyAdres,int proxyPort)
        : base()
    {
        this.proxyAdres=proxyAdres;
        this.proxyPort = proxyPort;
        soket = new System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp);
    }
Ne yaptık? Proxy adres ve portunu kaydettikten sonra sonradan kullanacağımız soketi de hazırlayıverdik. Ama daha hiç bir yere bağlanmadık! Kullanıcı "bağlan" desin öyle bağlanacağız. Yoksa gereksiz timeout'ları kontrol etmemiz gerekir. "baglanti" değerini sonradan kullanacağız. Şimdilik kafanıza takmayın.

Sonra yapacağımız ise sadece "bağlanmak". Bunu adım adım yapacağız.

İlk işimiz, "arkadaş socks versiyonun 5 olmalı, bir tane authentication metodu kabul ediyorum, o da 0, yani auth olmadan kullanmak" demek. Sırayla 5, 1 (1 tane auth türü) ve 0 göndermek yani..

Sadece soketimizi proxy'ye bağladık, sonra dediğim gibi sadece 5, 1 ve 0 byte'larını gönderdik. Şimdi sunucunun cevabını dinleyeceğiz, bu da sadece 2 byte olacak. Ama sonradan daha büyük buffer kullanacağımızdan baştan ben 50 byte'lık bir buffer açıyorum.

Sunucu cevap olarak önce protokolünü tekrar edecek, yani ilk byte 5 gönderecek. İkinci byte, auth olmadan girişi kabul etmişse bu protokol numarasının tekrarı olacak, yani 0, yok kabul etmemişse 255 olacak.

Kod:
soket.Connect(proxyAdres, proxyPort);
    soket.Send(new byte[] { 5, 1, 0 });
    byte[] buffer = new byte[50];
    soket.Receive(buffer);
    if (buffer[1] != 0) return false;
    ....
Bir buffer oluşturduk, o buffer'a okuma yaptık, yaptığımız okumanın 2. byte'ı 0 değilse "yanlış" döndürerek çıktık çünkü bağlanamıyoruz.

Sonra tekrar versiyon numarasını göndeririz tek byte, yani 5. İsteğimiz TCP ile porta bağlanmak ise 1, TCP portu bind etmek ise 2 (TOR bunu desteklemez, ücretsiz hiç bir proxy desteklemez) veya UDP bağlantı kurmak ise 3 göndeririz(TOR UDP'yi de desteklemez.)

Benim amacım TCP portuna bağlanmak şu anda, 1 göndereceğim. Bunun ardından tek bir byte 0 gönderiyoruz. Bu rezerve bir değer, hep göndermek zorundayız.

Sonra da adres gönderim şekli var. IP gönderiyorsak 1, domain adı gönderiyorsak 3, IPv6 gönderiyorsak 4 göndeririz.

Biz domain adresi göndermek istedik, kullanıcıdan string istedik.

Eğer IPv4 veya IPv6 gönderiyorsak bu IP'nin byte'larını sırayla gönderirdik. Ama domain adı her uzunlukta olabileceğinden ilk byte olarak uzunluğunu, ardından da bütün domain adresini gödneriyoruz.

En son da kullanacağımız portu, 2 byte olarak (0-65535 arası her port olabilir) gönderiyoruz bu kadar.

Yani ne diyoruz; öncelikle protokol, sonra bağlantı türü,sonra rezerve olan 0, sonra adres türü.
Kod:
new byte[]{5,1,0,3}
Sonra bunu domain adresinin boyutu ile birleştiriyoruz...
Kod:
new byte[]{5,1,0,3}.Concat(new byte[]{(byte)adres.Length})
Sonra domain'in kendisini yazıyoruz ardına..
Kod:
new byte[] { 5, 1, 0, 3 }.Concat(new byte[] { (byte)adres.Length }).Concat(Encoding.ASCII.GetBytes(adres))
En son da port adresimizi yazalım. Little endian unsigned short olarak yazacağız. Yani önce portumuzun son byte'ını, sonra ilk byte'ını yazıyoruz.
Kod:
new byte[] { 5, 1, 0, 3 }.Concat(new byte[] { (byte)adres.Length }).Concat(Encoding.ASCII.GetBytes(adres)).Concat(new byte[] { (byte)(port / 256), (byte)(port % 256) })
Şimdi bunu gönderelim.

Kod:
soket.Send(new byte[] { 5, 1, 0, 3 }.Concat(new byte[] { (byte)adres.Length }).Concat(Encoding.ASCII.GetBytes(adres)).Concat(new byte[] { (byte)(port / 256), (byte)(port % 256) }).ToArray());
if (buffer[1] != 0) return false;
Sunucu cevap olarak önce protokol numarasını gönderecek; 5.. Hemen ardından 0 göndermişse bağlantı başarılıdır, artık gönderdiğimiz her byte'ı istisnasız hedefe aktaracaktır. Yoksa SOCKS5 hata kodlarını araştırın, onlardan birini göndermiştir.

Şimdi ssl, yani HTTPS sitelere bağlanmak var. SSL istenmişse ve istenmemişse farklı şeyler yapacağız.

Kod:
baglanti = new System.Net.Sockets.NetworkStream(soket);
if (ssl)
{
    System.Net.Security.SslStream _stream = new System.Net.Security.SslStream(baglanti);
    _stream.AuthenticateAsClient(adres);
    baglanti = _stream;
}
return true;
Eğer eleman ssl istememişse, oluşturduğumuz NetworkStream üstünden mesaj gönderip alabiliriz. Hiç sorun yok.

Ama eğer eleman ssl istemişse, bunu bir SslStream içine gömüp, adresten auth istiyoruz. Normalde gıcık bir iştir ama en azından bunu, sağolsun .NET Framework bizim için yapıyor.

Neticede "baglanti" alanımız hedefe doğru bir şekilde bağlanmış bir stream oluyor. İşimiz bitti.

Bütün kod;

Kod:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TCP
{
    public class Socks5Baglanti
    {
        public string proxyAdres;
        public int proxyPort;
        private System.Net.Sockets.Socket soket;
        public System.IO.Stream baglanti;
        public Socks5Baglanti(string proxyAdres, int proxyPort)
            : base()
        {
            this.proxyAdres = proxyAdres;
            this.proxyPort = proxyPort;
            soket = new System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp);
        }
        public bool baglan(string adres, int port, bool ssl = false)
        {
            soket.Connect(proxyAdres, proxyPort);
            soket.Send(new byte[] { 5, 1, 0 });
            byte[] buffer = new byte[50];
            soket.Receive(buffer);
            if (buffer[1] != 0) return false;
            soket.Send(new byte[] { 5, 1, 0, 3 }.Concat(new byte[] { (byte)adres.Length }).Concat(Encoding.ASCII.GetBytes(adres)).Concat(new byte[] { (byte)(port / 256), (byte)(port % 256) }).ToArray());
            if (buffer[1] != 0) return false;
            baglanti = new System.Net.Sockets.NetworkStream(soket);
            if (ssl)
            {
                System.Net.Security.SslStream _stream = new System.Net.Security.SslStream(baglanti);
                _stream.AuthenticateAsClient(adres);
                baglanti = _stream;
            }
            return true;
        }
    }
}
    


___________________________________________

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 (13-05-2018 Saat 13:24 ) değiştirilmiştir..
 Offline  
 
Alıntı ile Cevapla
Alt 13-05-2018   #2
  • Yüzbaşı
  • Üye Bilgileri
Üyelik tarihi
10/2015
Nereden
Python
Mesajlar
Konular


  


Elinize sağlık.
    


___________________________________________

Sınırsız VPN !
 Offline  
 
Alıntı ile Cevapla
Alt 13-05-2018   #3
  • Yarbay
  • Üye Bilgileri
Üyelik tarihi
05/2013
Nereden
İstanbul
Mesajlar
Konular


  


Zamanında böyle hocam olsaydı, tıp fakültesini rekor ile bitirirdim.. Ellerine sağlık üstad.
    


___________________________________________

En çok ne zoruma gidiyor biliyor musun? "Ülkem" diye kaydetmiştin beni telefonuna. Kalbimi parçalara ayırdın, hani vatan bölünmezdi?

Yokluğun bilinç altımdayken , varlığın kimin altında merak ediyorum.
 Offline  
 
Alıntı ile Cevapla
Alt 13-05-2018   #4
  • Yüzbaşı
  • Üye Bilgileri
Üyelik tarihi
12/2017
Nereden
Belirsiz.
Mesajlar
Konular


  


Ellerinize Sağlık
    


___________________________________________

𝓟𝓗𝓔𝓜İ𝓢
 Offline  
 
Alıntı ile Cevapla
Alt 13-05-2018   #5
  • Binbaşı
  • Üye Bilgileri
Üyelik tarihi
11/2011
Nereden
Andromeda G.
Mesajlar
Konular


  


Eline sağlık hocam fakat biz bunda proxye socket.connect ile bağlanıyoruz aynı anda siteye connect ile bağlanıp çeşitli proxylerden header gönderebilir miyiz?
    

Konu gharmori tarafından (13-05-2018 Saat 17:39 ) değiştirilmiştir..
 Offline  
 
Alıntı ile Cevapla
Alt 13-05-2018   #6
  • Üsteğmen
  • Üye Bilgileri
Üyelik tarihi
07/2017
Nereden
ANGARA
Yaş
16
Mesajlar
Konular


  


Eline sağlık yararli
    


___________________________________________

şiirlerle bile anlatılamayacak kadar güzelsin, nasıl şair olmamı beklersin?


Kim o, deme boşuna…
Benim, ben.
Öyle bir ben ki gelen kapına;
Başdan başa sen.
2=1 özdemir asaf

"Bıraksaydın da son sözümü söyleseydim, arar bulurdun gerçekten özleseydin.''
 Offline  
 
Alıntı ile Cevapla
Alt 13-05-2018   #7
  • Yarbay
  • Üye Bilgileri
Üyelik tarihi
07/2015
Nereden
Ankara
Mesajlar
Konular


  


Alıntı:
gharmori´isimli üyeden Alıntı Mesajı göster
Eline sağlık hocam fakat biz bunda proxye socket.connect ile bağlanıyoruz aynı anda siteye connect ile bağlanıp çeşitli proxylerden header gönderebilir miyiz?
Zaten sen proxy'e bağlanırsın, proxy siteye. Senin gönderdiğin her byte'ı proxy siteye aktarır, mantık odur. Yoksa senin IP adresin görünürdü, proxy'nin değil
    


___________________________________________

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 13-05-2018   #8
  • Tamamen Forumdan Uzaklaştırıldı
  • Üye Bilgileri
Üyelik tarihi
06/2013
Nereden
Jüpiter
Mesajlar
Konular


  


Eline sağlık üstad
    
 Offline  
 
Alıntı ile Cevapla
Alt 13-05-2018   #9
  • Yüzbaşı
  • Üye Bilgileri
Üyelik tarihi
08/2017
Nereden
'KALU BELA'
Mesajlar
Konular


  


Eline sağlık üstad .
    


___________________________________________

'' Güçlü Olduğunu Mu
Düşünüyorsun..?
Sabah Namazı Vaktinde ,
Battaniyeni Kaldırmayı Dene..! ''


'' Hedefi Olmayan Gemiye Hiçbir
Rüzgar Yardım Etmez . ''



C# : %60
Python : %45

 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.