C# Dışarıdan Veri Çekme Hk.

Bu konuyu okuyanlar

CapScroLL

Müdavim
Katılım
22 Ağustos 2014
Mesajlar
3,657
Reaksiyon puanı
2,682
Puanları
113
Yaş
26
Merhabalar, basit bir .Net Framework 4.6.1 projesi için uzaktan lisans doğrulaması yapmak istiyorum. Uygulama, kullanıcının IP adresini alıp belirttiğim adreste ki liste ile karşılaştırıyor, eğer belirtilen adreste kullanıcının IP adresi varsa kullanım izni sağlıyor. Serial no ile lisanslama yapma gereksinimi duymuyorum, kırmak için uğraşacak kişilerin olduğunu pek zannetmem, olursa da güle güle kullansın pek önemli değil. Sorunuma dönecek olursak verdiğim listede ne yazıyorsa olduğu gibi çekiyor, yapmak istediğim ise listede kullanıcının IP adresi varsa izin vermesi. Mesela sorgulama yaptığı liste şu şekilde diyelim;
192.168.1.1
192.168.1.2
192.168.1.3
Kullandığım kodların çıktısı da şu şekilde oluyor;
192.168.1.1192.168.1.2192.168.1.3

Sonuç olarak IP adresi eşleşmediği için istediğim ayarı tutturamıyorum. Yapmak istediğim ise bu listede ki IP adreslerini kontrol etmesi ve bu sıralamanın en az birinde kullanıcının IP adresi varsa izin vermesi. Yani çıktı 192.168.1.1192.168.1.2192.168.1.3 olsa dahi bu çıktının içinde kullanıcının IP adresinin geçmesi halinde izin vermesi.

Not: Kullanıcının bana vermiş olduğu IP adresini manuel olarak string değişkene atayıp, IP Sorgulama sitesinden de kullanıcının IP adresini farklı bir değişkene atayarak bunları karşılaştırabiliyorum. Hal böyle olunca her IP için kodlarda değişiklik yapmam ve tekrardan debug atmam gerekecek, bu da beni bayağı uğraştıracak. Önemli olan ise websitem de uygulamanın sorgulama yapabileceği bir sayfa belirlemek, benim o listeye istediğim IP'yi eklemem ve bunun sürekli olarak çalışması.
 
Son düzenleme:

ozmen_celik

Software Developer
Katılım
3 Mart 2012
Mesajlar
571
Reaksiyon puanı
318
Puanları
63
Yaş
39
şimdi öncelikle ip adresleri değişir o yüzden ip ye alman yalnız. Birde ip ler iç ve dış ip ler diye ikiye ayırır senin o bağlamda ikisinide kontrol ettirmen lazım olur dışarıdanda erişilecekse bence sen bunu mac adresi olarak al ve uzak sunucuya gönder yada uzak sunucuda tanımlanan mac adresi cek ve localdekini karşılaştır eğer uyarsa seri nosunu işlettir uymazsa uyarı verdirt ve direk kapattır.
 

CapScroLL

Müdavim
Katılım
22 Ağustos 2014
Mesajlar
3,657
Reaksiyon puanı
2,682
Puanları
113
Yaş
26
şimdi öncelikle ip adresleri değişir o yüzden ip ye alman yalnız. Birde ip ler iç ve dış ip ler diye ikiye ayırır senin o bağlamda ikisinide kontrol ettirmen lazım olur dışarıdanda erişilecekse bence sen bunu mac adresi olarak al ve uzak sunucuya gönder yada uzak sunucuda tanımlanan mac adresi cek ve localdekini karşılaştır eğer uyarsa seri nosunu işlettir uymazsa uyarı verdirt ve direk kapattır.
Doğru demişsiniz hocam ama yazdığım eklenti oyun serverları üzerinde kullanılacağı için o noktaya pek takılmadım, bildiğiniz gibi genelde private oyun serverları kolay kolay IP değiştirmezler. Değiştiren olursa da destek sistemi üzerinden iletişime geçmek durumunda kalacak... Aslında oldukça basit ve kırılgan bir sistem olduğunun farkındayım, amacım basit bile olsa küçük bir engel koymak. Doğrulama olarak kullanıcının dış IP adresini alıp belirttiğim adreste ki liste ile karşılaştırıyorum, eğer kullanıcının dış IP adresi listede varsa kodlar true döndürüyor. İyi kötü regex çözümleme ile bir şekilde ayarladım ama aklıma bir soru takıldı. Eğer uzak sunucuya bağlantı kurulamazsa kodlar true döndürmeli, çünkü benim sorunum müşterileri etkilerse hem benim hem de müşterinin içi rahat etmez. Fakat birileri kodları çözüp uzak sunucunun ip adresini öğrenirse hosts üzerinden ipyi engelleyip bağlantı kurulmasını engelleyebilir, bu durumda bağlantı kurulamadığı için kodlar true döndürecek. Buna bir alternatif önerebilir misiniz?
 

ozmen_celik

Software Developer
Katılım
3 Mart 2012
Mesajlar
571
Reaksiyon puanı
318
Puanları
63
Yaş
39
Doğru demişsiniz hocam ama yazdığım eklenti oyun serverları üzerinde kullanılacağı için o noktaya pek takılmadım, bildiğiniz gibi genelde private oyun serverları kolay kolay IP değiştirmezler. Değiştiren olursa da destek sistemi üzerinden iletişime geçmek durumunda kalacak... Aslında oldukça basit ve kırılgan bir sistem olduğunun farkındayım, amacım basit bile olsa küçük bir engel koymak. Doğrulama olarak kullanıcının dış IP adresini alıp belirttiğim adreste ki liste ile karşılaştırıyorum, eğer kullanıcının dış IP adresi listede varsa kodlar true döndürüyor. İyi kötü regex çözümleme ile bir şekilde ayarladım ama aklıma bir soru takıldı. Eğer uzak sunucuya bağlantı kurulamazsa kodlar true döndürmeli, çünkü benim sorunum müşterileri etkilerse hem benim hem de müşterinin içi rahat etmez. Fakat birileri kodları çözüp uzak sunucunun ip adresini öğrenirse hosts üzerinden ipyi engelleyip bağlantı kurulmasını engelleyebilir, bu durumda bağlantı kurulamadığı için kodlar true döndürecek. Buna bir alternatif önerebilir misiniz?

Zaten normal kullanıcıların dış ipsi değişebiliyor siz konuyu tamamen yanlış anlamışsınız. Sizin dediğinize bakarsak o zaman bir oyunu evde oynadığımızda ipmizi sistem kaydececek sonra kafeye gittiğimizde yada yazlığa yada başka mekana gittiğimizde oyuna girince ban mı yiyeceğiz? sonuçta dış ipde değişiyor iç ipde sizi evdeki wifi dan aldığınız iç ip ve ttnetin yada süperonline nın size havuzdan ayırdığı ip ile başka bir mekandaki aynımı olur zannediyorsunuz ? Bence siz bu olayı tekrar düşünün.
 

Mxns

Asistan
Katılım
12 Temmuz 2019
Mesajlar
229
Reaksiyon puanı
91
Puanları
28
Yapını bilmiyorum bende çok yeniyim lakin aklıma geldi. Acaba Array List içinde String olarak ipleri tutsan ancak bunları veritabanında ID ile tanımlasan ve sana İD rakamları dönse böylece başka ipleri göremeseler nasıl olur.
Bunun dışında senin onay sunucundan yanıt almadıkça çalışmasını engelleyebilirsin. Veya bunu ara sıra kontrol ettirirsen atıyorum System Datetime ile gün aralıklı senin uzak sunucudan onay alsın.
 

ozmen_celik

Software Developer
Katılım
3 Mart 2012
Mesajlar
571
Reaksiyon puanı
318
Puanları
63
Yaş
39
Arkadaşlar kardeşler bu iş ip ile çözülmez bu iş ya mac adresi ile yada başka lisanslama yöntemi ile çözülür.
 

CapScroLL

Müdavim
Katılım
22 Ağustos 2014
Mesajlar
3,657
Reaksiyon puanı
2,682
Puanları
113
Yaş
26
Zaten normal kullanıcıların dış ipsi değişebiliyor siz konuyu tamamen yanlış anlamışsınız. Sizin dediğinize bakarsak o zaman bir oyunu evde oynadığımızda ipmizi sistem kaydececek sonra kafeye gittiğimizde yada yazlığa yada başka mekana gittiğimizde oyuna girince ban mı yiyeceğiz? sonuçta dış ipde değişiyor iç ipde sizi evdeki wifi dan aldığınız iç ip ve ttnetin yada süperonline nın size havuzdan ayırdığı ip ile başka bir mekandaki aynımı olur zannediyorsunuz ? Bence siz bu olayı tekrar düşünün.
Hocam anlatmak istediğim şey bu eklenti evde oturup kişisel bilgisayarda kullanılabilecek bir şey değil, öyle olursa mantıklı olmaz. Pingi tavan yapmış + her gün geceleri kapanan bir oyun sunucusunda hiç kimse oynamaz, bu durumda bomboş bir sunucuya eklenti satın almak pek akıl işi olmaz, olursa da güncel ipsini gönderip durmakla uğraşır. Oyun eklentisine para harcayan kişi mutlaka bir sunucuya sahiptir ve sunucular her gün IP değiştirmezler. Gerekmedikçe dinamik IP kullanmazlar, zaten dinamik IP kullanan bir sunucu oyun sunucusu yapılmaz. IP lisansı yapan ilk kişi ben değilim, bunu aynı sektörde kullananlar da var. Üstelik en az 100 aktif müşteriye sahipler. Bu eklentiler Unity tabanlı çözümleyicilerde çalıştığı için Mono platformuna uymak zorundalar, bu durumda her şeyi kafamıza göre yapamıyoruz. Dediğiniz gibi MAC ile doğrulama yapmak istesek bu sefer müşteriden MAC adresini almaya çalışacağız, güvenecek mi? verecek mi? bulabilecek mi? Her biri ayrı dert. MAC'i eleyip CPU, HDD, Anakart seriale geçiş yapsak bu serialleri alacak, sorgulayacak, şifreleyecek ve çözecek kodları yazıp ortaya iki farklı uygulama çıkartacağız. Bu ilkel lisanslamanın ayrıntısına girmeden noktasını koyayım, oyun sunucuları genellikle Linux üzerinden açılıyor. Bu durumda müşterinin serialini veren form uygulaması çöp oluyor. Geriye IP lisans kalıyor, zaten C# oldukça kolay kırılan bir dil. Artık uzak sunucu adresini görmemeleri için bir kaç kaynak kodlarını şifreleyen program deneyeceğim, onlar da pek iş görmeyecek ama hiç yoktan iyidir.
Mesaj otomatik birleştirildi:

Yapını bilmiyorum bende çok yeniyim lakin aklıma geldi. Acaba Array List içinde String olarak ipleri tutsan ancak bunları veritabanında ID ile tanımlasan ve sana İD rakamları dönse böylece başka ipleri göremeseler nasıl olur.
Bunun dışında senin onay sunucundan yanıt almadıkça çalışmasını engelleyebilirsin. Veya bunu ara sıra kontrol ettirirsen atıyorum System Datetime ile gün aralıklı senin uzak sunucudan onay alsın.
Mantıklı ama iş yine tekrar tekrar IP eklemeye geliyor, her müşteri için kodlarda oynama yapıp ayrı ayrı debug atmam gerekecek. Yapmak istediğim şey ipleri uzak makineden kontrol ettirmekti, bunu bir şekilde yaptım ama kararsız kaldığım nokta sunucuya bağlantı kurulamadığında kodların döndüreceği değer. Şimdi true döndürse birileri uzak sunucunun adresini öğrenip onu engelleyebilir böylece bağlantı kurulamaz sürekli true döndürür, false döndürse benim sorunum müşterileri de etkileyecek, bu durumda haksızlık olacak.
 

ozmen_celik

Software Developer
Katılım
3 Mart 2012
Mesajlar
571
Reaksiyon puanı
318
Puanları
63
Yaş
39
Yukarıda yaptığım yorum dışında ekleyeceğim tek şey konuya webservis yani webapi kullanman. Bu sayede c# kodları kırılsada db ile münasebeti göremezler ( db bilgilerini yani) böylelikle veri alışverişinide o webservis yani webapi ile yaparsın.
 
Üst