NETWORKTAN PROGRAMIM ÇALIŞMASIN

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
orhanefe
Üye
Mesajlar: 6
Kayıt: 14 Nis 2005 02:24

NETWORKTAN PROGRAMIM ÇALIŞMASIN

Mesaj gönderen orhanefe »

Merhaba,

Yazdığım programlara makinenin Bios, Mac adresi ve Bios tan aldığım bilgilerle belirli bir algoritma ile şifrelediğim bir seri no koruması ekledim. Böylece programlarım sadece ben seri nosunu aktifleştirince çalışabiliyor. aksi halde program o bilgisayarda çalışmıyor.

Yalnız sorun şu ki: ağ ortamındaki 10 bilgisayardan 1 tanesi için seri no alıp, diğer makineler programı ağ üzerinden kullanabiliyorlar.

Daha önce böyle birşey hiç aklıma gelmemişti, bunu nasıl önleyebilirim. Kullanım yetkisi almış bilgisayardaki EXE, networkten diğer bilgisayarlardan çalıştırılmak istendiğinde bunu nasıl engelleyebilirim.

Yardımlarınız için teşekür ederim
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Eğer yazdıklarınızı yanlış anlamadıysam, zaten BIOS, MacAddress gibi bilgiler Networkte her makina için ayrı olmalı ve bahsettiğiniz sorunun ortaya çıkmaması gerekiyor !...

Yani EXE'yi çalıştıran makinanın MacAddressi (Network Kartının) ayrıca BIOS'u her makinada farklı olmalı.

Bence bir daha deneyin !... Mümkünse programı bir makina için Şifreleyin ve başka bir makinadan (server'daki exe'yi) çalıştırın, size okuduğu MacAdr ve BIOS Bilgilerini versin.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

merhaba,
zannedersem ,siz bahsettiğiniz makina özelliklerini sadece seri numarası girilme aşamasında kontrol ediyorsunuz. eğer girilen karşılı kod doğruysa lisanslama ile ilgili bir noktaya bilgi yazıyor ve daha sonra her açılışta o bilgiyi okuyarak programın lisanslı olup olmadıoğını kontrol ediyorsunuz. eğer algoritmanız bu şekilde bir yapıya benziyorsa , önerim her açılışta lisasn bilgisine göre değerleri kontrol edip lisanslama algortimasını tekrar çaıştırmalısınız. örneğin seri no girilme aşamasında doğru olduğu taktirde ilgili makina bilgilerine de dosyaya yazdırmalı diğer açılışlarda bunları kontrol etmelisiniz.
iyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
serkan1634
Üye
Mesajlar: 17
Kayıt: 13 Nis 2005 10:37

register

Mesaj gönderen serkan1634 »

bence program çalıştığında registerı okuyarak çalışsın algoritmanı register üzerine adapte et....ama diğer arkadaşlarada katılıyorum bios numarası falan aldıysan çalışmamalı bence program bunu registere yazsın ve her açılışta bunu kontrol etsin eğer registerda yoksa çalışmasın
her şey yaratana dönüşten ibarettir
Kullanıcı avatarı
serkan1634
Üye
Mesajlar: 17
Kayıt: 13 Nis 2005 10:37

register

Mesaj gönderen serkan1634 »

bence program çalıştığında registerı okuyarak çalışsın algoritmanı register üzerine adapte et....ama diğer arkadaşlarada katılıyorum bios numarası falan aldıysan çalışmamalı bence program bunu registere yazsın ve her açılışta bunu kontrol etsin eğer registerda yoksa çalışmasın
her şey yaratana dönüşten ibarettir
orhanefe
Üye
Mesajlar: 6
Kayıt: 14 Nis 2005 02:24

Mesaj gönderen orhanefe »

İlginiz için teşekürler arkadaşlar.

çalıştırma mantığım tam olarak şöyle:

Program çalıştığında, bilgisayarın: Harddisk Serinosonu, Mac Adresini ve Bios tarhini alır: elde ettiği bilgileri bir formül eşliğinde anlamlı sayılara çevirir. Öyle bir formül ki bu, ilgili sayı yalnızca, bu üç bilgi yine yanyana gelirse elde edilebiliyor. HD, anakart yada ethernet değiştiğinde üretilen seri no da değişiyor.

Elde edilen bu seri noyu Müşteri lisans satın aldıktan sonra bize göderiyor. Biz gönderilen seri numarasını internetteki Veritabanımıza kaydediyoruz. Program zaten internet ortamında çalışacak şekilde yazıldı. Her çalıştırılışında ilgili seri noyu tekrar üretiyor ve internet yoluyla veritabanımızdan serino yu kontrol ediyor. Şayet tanımlı değilse çalıştırma izni vermiyor. Program çalışırken de zaman zaman bu testi Thread açarak yaptırıyoruz.

Sorun şu ki, bazı kişilerin network üzerinde uzak masa üstü yada başka bi yolla bizden erişim izni almış bir bilgisayardan programı çalıştırabildiklerini öğrendik. Sıkıntımız, hiç birşekilde uzaktaki masaüstü dahi olsa erişim izni olmayan bir bilgisayardan programımız çalıştırılamasın. Kısacası 1 lisans prası ödeyip ağdan istedikleri adet sayıda makinede çalıştırabiliyolar. Benim için çözmem gereken ciddi bir sorun bu şu anda.

Fikirlerinizi bekliyorum

Sağolun
Kullanıcı avatarı
MicroChip
Kıdemli Üye
Mesajlar: 1119
Kayıt: 02 Ağu 2003 01:02
Konum: İstanbul
İletişim:

Mesaj gönderen MicroChip »

bence bu gibi durumlarda ethernet kartı seri nosu alınmamalı diye düşünüyorum. diyelim ki ethernet kartını değişti veya yandı.
Kafkas Kartalı Kabarday
Sitesi!= http://www.ahmetceylan.com
Resim
orhanefe
Üye
Mesajlar: 6
Kayıt: 14 Nis 2005 02:24

Mesaj gönderen orhanefe »

Aslında haklı olabilirsin, bununla birlikte ethernet kartının değişmesi çok rastlanan bir durum değil gibi görünüyor. değişsse ve seri nosu farklı bir değer olsa bile destek servisimiz, seri no değişim işlemlerini ücretisiz yapıyor. Yani, müşterilerin mağduriyeti sözkonusu değil.

Yurtdışında birçok yazılım evinin menzer uygulamayla işlerini yürüttüğünü müşahade etmiştik, o sebeple benzer uygulayamı bizde yazılımlarımıza ekledik, ancak ilk başta bahsettiğim sorunla karşılaştık

fikirlerinizi bekliyorum arkadaşlar

sağolasınız
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhaba.

- MAC adresi almak için IP'yi sabit mi verdin ? Öncelikle mevcut makinenin IP numarasını öğrenen bir procedure yazıp, MAC adresi okuduğun fonksiyonun parametresi olarak dinamik olacak bu IP öğrenme fonksiyonunu ekle.

- Mesela Ana makinenin IP'si

Kod: Tümünü seç

192.168.2.2
olsun. Fonksiyonun da

Kod: Tümünü seç

MacIDOgren(IP:String):String;
olsun

- Bu durumda programa eklemek durumunda olduğun kod

Kod: Tümünü seç

MacID = MacIDOgren('192.168.2.2');
gibi değil

Kod: Tümünü seç

MacId = MacIDOgren(LocalIPOgren);
şeklinde olmalı ki, program hangi makineden çalıştırılıyorsa o makinenin MacID'sini görsün.

- Sonra Server'deki ürettiğin kod ve sadece çalışmasını istediğin makineler için ürettiğin kod(ları) bir veritabanında veya en güzeli benim hep yaptığım programa DLL şeklinde istediğin zaman güncelleyebileceğin halde ekli tutar, hariç makine varsa çalışmasını engellersin...
:idea:
Resim
Resim ....Resim
orhanefe
Üye
Mesajlar: 6
Kayıt: 14 Nis 2005 02:24

Mesaj gönderen orhanefe »

Mac adresi almak için IP yi sabit vermedim. Diyelimki 10 bilgisayarlı bir ağ var ve bizim program bu 10 bilgisayarda da çalışıyor. "İnternet" de sabit IP li bir Veritabanı sunucumuz var. Bu 10 bilgisayarlı network yapısı, türkiyede çeşitli illerdeki 8 şubede mevcut. İstanbul, izmir, antalya, kayseri vs... Herşubede hemen hemen 10 bilgisayar var ve tüm bilgisayarlarda bizim uygulama çalışıyor. Ofislerde bir istemci sunucu mantığı yok. bizim yazılım, internet yoluyla direk Sabit IP li, ve internete 7/24 bağlı bir sunucuya erişerek işlemlerini yapıyor. Her bir ofis de Sabit IP li ADSL hattı var.

Sunucu sistemde, bizim müşterilerde çalışan yazılımla entegre çalışan bir XML arayüzü yazdık. Bu arayüz direk sunucunun içerisinde çalışan bir uygulama, ve veritabını ile işlem yapma yetkisi sadece sunucuda çalışan bu uygulamada var. Böylece, Müşterilere verdiğimiz programda aslında veritabanı erişim yetkisi yok. Kısacası veritabanımıza dışardan erişim yok. Geliştirdiğimiz, XML web arayüzüne pogramımız sorguyu gönderir. Giden sorgunun sonuçlarını SSL ile şifreleyip, müşteride çalışan uygulamamıza gönderir. XML arayüzümüz, programımızın ihtiyaçlarına göre yine bizim tarafımızdan güncelleştirilenbilen bir PHP yazılımları ailesidir. Dolayısıyla, Programın ihtiyaç duyacağı özel sorgu yada işlem natıklarının bir benzeri php de de yazıyor. Bu yaklaşım bizim iş yükümüzü artırsa bile, Veritabanın da oluşturulan bir kullanıcıya internetten erişim yetkisi verilmesinden daha Güvenli olduğunu düşündüğümden böyle bir yol seçtik. Ve, bazı yazılım evlerininde buna bnzer bir yaklaşım sergilediğini biliyoruz.

Konumuza dönersem, Şubelerde ADSL modemlerde DHCP aktif. Bilgisayarların herhangi bir sabit IP yi almasını zorunlu tutmuyoruz. İnternete çıkında nasıl çıkarsanız çıkın diyoruz. olyısıla, her müşterinin ofisinde aynı IP dağıtım mantığı olmayabiliyor.

Biz, hangi çalışma koşulunda olursa olsun, programın gerçekte hangi makinede çalıştığını tespit etmek durumundayız. Mesela, dün XP Uzak Desktop ıyla, diğer makineden çalıştırabilidim. gerçi çok sağlıklı bir çalışma olmadı, diğer makine kilitlendiş ama her ne olursa olsun program gerçekte hangi makinede çalıştığını bilebilmeli. Henüz bizim keşfedemediğimiz, [[mekan problemi: bu işi yapan müşterinin antalya da olduğunu öğrendik. gbidip gömem gerekir nasıl yaptıklarını ama istanbuldan gitmek helede böyle yoğun zamanlarda zor bir iş. gerçi yaz olsaydı düşünürdüm gitmeyi!! :)) ]] bir yolla bu işi nadir de olsa yapanların olduğunu öğrendik.

Evet arkadaşlar, bu sektörde ayakta kalabilmek için paraya ihtiyacımız var. Ve birşekilde yaptıklarımızdan para kazanmalıyızki daha iyi eğitimler alıp, yurtdışına gitme imkanı yakalayıp, yurtdışında bu iş nasıl yapılıyor u öğrenmeye şansımız olsun. Programlama işi hobi değişdir bence. Çok ciddi bir iş ve bu işde başarılı olmak için ayakta kalmak için paraya ihtyaç var. Uyanık müşeteriler para vermemek için uğraşa dursun biz de daha ii uygulamalarla hakkımızı almalıyız diye düşünüyorum :)

Hayalim, Hindistan yazılım endüstrisinden çok daha güçlü bir türk yazılım endüstrisinin geliştiğini görmek.

Saygılar
Cevapla