PDA

Tam Sürümünü Görmek İçin : şifreleme


DotNetKid
03/06/2004, 04:07
Mrb arkadaşlar;

vb.net ile yapmış olduğum bir formum var içine şifre girişi için bir adet textbox ekledim.. ama yapmak istediğim şey sabit bir şifre olmasın. mesela sabit şifre olarak diyelim 123 dedik bilmeyen giriş yapamaz ama projeyi cd ye çektik ve satın alan firmaya verdik adam proje yi başka bir pc ye kurup ilgili şifreyi girerek kullanabilir. bunun önüne geçmek istiyoum. tam hatırlamıyorum da harddisk in seri nosunu alarak bişekilde bişeyler yapılıyordu. ilgili algoritma/yöntem hakkında bilginiz varsa ve vb.net ile HDD seri noyu bulan kod varsa yardımlarınızı bekliyorum iyi çalışmalar dilerim.


Cekici
03/06/2004, 09:43
kullanıcının bir defa kullandığı şifreyi bir daha başka makine de kullanmasını engelleyemezsin çünkü cd de bu şifre kullanıldı bunu sil diyemezsin mantık olarak cd yi tekrar yazması gerek ama aynı makina için dediğin gibi hdd seri nosu alarak 2. kere yüklemesini engelleyebilirsin. sana tavsiyem bir xx.txt koy içinede 2 sütun koy bunları program calıştırılınca gizli bir datagrid e çağır
1. sütun karsilamasifre 2. sifre verirsin içinede 500 - 750 tane sifre girersin rakam ve sayı karısık olsun program ilk yüklenip çalıştırılınca karsilamasifre çıksın bunun kasısındaki Sifre yi senden telefonla alsınlar sifre alınınca sifreyi girecekler ve giriş tuşuna basılınca datandaki sifre database dosyasını kople sileceksin bu şekilde kimse senin diğer şifrelerini göremeyecek zaten aynı şifre gelmesi çok düşük bir ihtimal... hatta program çalışırken şifre isteyeceğinden dolayı bir sorduğu şifreyi bir daha sorma diyebilirsin...

DotNetKid
03/06/2004, 10:34
vb.net ile drive information (sürücü bilgisi):


Private Sub Form1_Load(ByVal sender As System.Object, ByVal _
e As System.EventArgs) Handles MyBase.Load
Dim fso As New Scripting.FileSystemObject()
Dim drv As Scripting.Drive
Dim string_builder As New System.Text.StringBuilder()
For Each drv In fso.Drives
string_builder.Append( _
drv.DriveLetter & ":" & vbCrLf & _
" Type: " & _
drv.DriveType.ToString() & vbCrLf)
If drv.IsReady Then
string_builder.Append( _
" File System: " & drv.FileSystem & _
vbCrLf & _
" Free Space: " & drv.FreeSpace & _
vbCrLf & _
" Total Size: " & drv.TotalSize & _
vbCrLf & _
" Volume Name: " & drv.VolumeName & _
vbCrLf & _
" Serial Number: " & drv.SerialNumber & _
vbCrLf & _
"--------------------" & vbCrLf)
Else
string_builder.Append( _
" Not ready" & vbCrLf & _
"--------------------" & vbCrLf)
End If
Next drv
txtDrives.Text = string_builder.ToString()
txtDrives.Select(0, 0)
End Sub

şifreleme olayını düşünüyorum bu arada HDD seri noyu kullanarak bir şifreleme olayı vardı tam hatırlayamıyorum cd den kursak bile.. ayrıca senni yazdıklarından pek bişey anlamadım.. biraz daha acıklar mısın bir de karışık olmuş..

Cekici
03/06/2004, 10:50
bak şimdi sırayla açıklıyorum

* 1 tane şifre datası oluşturacaksın benim tavsiyem bunları txt dosyasında tutman olacak

* Oluşturduğun txt dosyası şu şekilde olacak

128454 - 1254sd74A
548544 - 8oa8415Aw
.........

* adam senin programı kurdu daha ilk defa çalıçacak önce şifreyi isteyecek mesela 1 tane label1.text ="128454" yazacak ve Textbox1.text=1254sd74A olmadan program çalışmayacak

* ama her seferinde şifre alma kodu aynı çıkmayacak 128454

* adam sana telefon etti sana dediki şifre alma kodum 128454 sende adama 1254sd74A
yi vereceksin adamda giriş butonuna basacak program çalışacak.

* ilk defa ana menü ilk defa çalışıyor sa şifre.txt dosyasını sil adam daha sonra bu dosyaya bakıp diğer numaraların şifresini görmesin diye..

* programın aynı makinaya bir daha yüklenmemesi için ana menü ilk defa açılırken gidip geristiriye bir kayıt açıp değeri 1 versin adam programı kadırıp kursa bile program birdaha orada çalışmayacak niye çünkü bakacak o değer var registiri 1 değeri varsa çalışma

DotNetKid
03/06/2004, 12:37
tabii bu arada bi soru daha msdn de buldum ama cok uğraştım bi türlü kullanamadım.. ayrıca cvp için saol ama algoritma akla geliyo da nasıl yapılacak.. peki dediğin sifre.txt i nasıl oluşturalım tek tek elimle mi gireyim örnek bi ton şifre kodu ve karşılığı... öyle olmaz tabii.. aklıma şöyle bişey geldi.. kullanıcı programı aldı kurdu ve ilk defa çalıştırdı.. kendisine göstermelik mesela 123456789 gibi bi şifre vercem.. bunu ana formda girecek bunu girmeden önce nete bağlanacak benim server a.. ben asp ile x.txt dosyasını adamın pc ye c:\windows\..\..\ nin içine attırcam.. sonra bi alert
"işlem tamamlandı şimdi lütfen size verilen işfreyi giriniz..!" sonra şifreyi girecek hem o şifreyi kontrol edecem 1 den 9 a.. hem de ilgili dizinin altındaki txt i okucam öyle br txt varsa ve içindeki değer istediğim degerse ok program başlıcak çalışmaya..ve txt için deki değeri mesela "işlem tamam" olarak değiştircek ondan sonraki her kullanısında sadece 1 den 9 a şifre girer o şifreyi kontrol ederim ve ilgili dizinin altındaki txt in degerinin işlem tamam olup olmadıgına bakarım.. eğer ilgili txt dosyasını bulamazsa tekrar programı ilk defa kurduktan sonraki server a yönlendirme olayına gider.. sizce nasıl.. hem kolay hem de sağlamsayılır (bence) yine msdn de dosya yoksa komutunu buldum ama cok ugrasmam ragmen yine yapamadım..filenotfound..


Public Class FileNotFoundException
Inherits Exception
' Implementation code goes here.
End Class


tabii ki senin ki de iyi bir yöntem ama bilgim nerdeyse hiç yok daha .net de..
mesela
1- label1.text için herhangi bir txt dosyadaki verileri rasgele ugun kritere göre cekmeyi bilmiyorum...

Cekici
03/06/2004, 12:50
txt dosyasını el ile girmeyeceksiin 1 tane boşluk birtane nokta kayması programının çakmasına neden olur bir tane form oluşturacan 2 adet textbox 1 tane button iki texte yazacan butona basacan ben sana txt ye yazma ve okuma kodları ile ilgili küçük bir örnek yaparım hatta ben kodu sana yazıp göndereyim bari...
içine dosyadan okuma işleminide yaparım sende oradan kes yapıştır yaparsın..

Euclides
03/06/2004, 15:05
bak şimdi sırayla açıklıyorum

* 1 tane şifre datası oluşturacaksın benim tavsiyem bunları txt dosyasında tutman olacak

* Oluşturduğun txt dosyası şu şekilde olacak

128454 - 1254sd74A
548544 - 8oa8415Aw
.........

* adam senin programı kurdu daha ilk defa çalıçacak önce şifreyi isteyecek mesela 1 tane label1.text ="128454" yazacak ve Textbox1.text=1254sd74A olmadan program çalışmayacak

* ama her seferinde şifre alma kodu aynı çıkmayacak 128454

* adam sana telefon etti sana dediki şifre alma kodum 128454 sende adama 1254sd74A
yi vereceksin adamda giriş butonuna basacak program çalışacak.

* ilk defa ana menü ilk defa çalışıyor sa şifre.txt dosyasını sil adam daha sonra bu dosyaya bakıp diğer numaraların şifresini görmesin diye..

* programın aynı makinaya bir daha yüklenmemesi için ana menü ilk defa açılırken gidip geristiriye bir kayıt açıp değeri 1 versin adam programı kadırıp kursa bile program birdaha orada çalışmayacak niye çünkü bakacak o değer var registiri 1 değeri varsa çalışma

1...
Hiç profesyonel bir yazılım firmasının böyle birşey yapmadığını gördünüz mü ?
(tel. açıp reg istemek...)
2...
kullanıcı hiç satın almaz programını olur biter....

Cekici
03/06/2004, 16:35
haklısın Euclides benim web bilgim olsa netten almazmıyım şifreyi şu an için idare et web işine girince otomatik alacak şifresini zaten... ama kişinin internet bağlantısı yok ise ne yapacak.... ?

Euclides
03/06/2004, 16:52
1....
İllaki bu yöntemi kullanmak istiyorsanız WinXP taktiğini kullanın, program yüklensin fakat
15 gün için program kayıt yaptırmanın gerekmesi daha mantıklı....
2...
Uninstall içi özel yapılmış programlar var.Bunlarla kaldırısan o dosyada silinir... :) :)
3....
Kullanıcın en YASAL hakkı kullandığı yazılımın cd'den bir kopya almak ve istediği PC'ye yüklemektir.Onu engelleyemezsin.

Cekici
03/06/2004, 17:07
ya zaten internet kullanmayan fax modeni olmayan kullanıcılar kullanmasın anlamınada gelir........
.net in kendi paketleme servisi ve install sheild paketleme programı regedit kayıtlarınıda silmiyor ama yazdığın 3. madde kafamı karıştırdı... ama sen win xp modelini örnek vermişsin lisanslı win ip alırsanız ancak microsoft baba size 5 tane format hakkı tanıyor 6. da yeni bir xp almanız lazım ben adama al bu şifre makinana yükle diyecem o da arkadaşına verecek oda piyasaya sürecek al senin programcılık halayin ilk programda gitti.. dikkat ettiysen şifre alma yöntemi Telefon ve Web interneti olmayan adam telefon açar olan adam bağlanır ilgili sayfaya alır şifresini..

DotNetKid
03/06/2004, 17:13
ben yukarıda dediğim gibi yapacam karar verdim adamlar da teknoloji kullanmaya alışsın :p .. ama dosya yok sa kontrolünü nasıl yapcam bilmiyorum..

ASA
03/06/2004, 17:14
Ne yaparsan yap, programin isteyecegi seri numaralarinin o an calistigi makinaya spesifik olduklarindan emin ol. Becerebilirsen, seri numarasini programina oyle bir entegre et ki, o olmadan program duzgun calisamasin. Mesela matematiksel bir i$lem yaparken, seri numarasi ve bunun kar$it numarasinin kar$ila$tirmasini yapabilirsin. Diyelim ki normalde bu farkin her zaman 4356 gibi bir$ey cikmasi lazim.

Program, bu sonuc 4356 degilse random olarak 4 i$lem ve 4 sayi secer, o $ekilde devam eder ve muhtemelen -iyi bir tuzak mekanizmasi hazirladiysan- exception verir durur.

:cool:

DotNetKid
03/06/2004, 17:33
asa, dostum kusura bakma ama pek bişey anlamadım yazdıklarından.. :( dediğim gibi yapmak iyi bir yol değil mi netten windows a bir txt yollatacam.. ve göstermelk verdiğim serial in yanında o dosyanın içindeki değeri de kontrol ettirecem


Mesela matematiksel bir i$lem yaparken, seri numarasi ve bunun kar$it numarasinin kar$ila$tirmasini yapabilirsin. Diyelim ki normalde bu farkin her zaman 4356 gibi bir$ey cikmasi lazim.

Program, bu sonuc 4356 degilse random olarak 4 i$lem ve 4 sayi secer, o $ekilde devam eder ve muhtemelen -iyi bir tuzak mekanizmasi hazirladiysan- exception verir durur.


bı kısmını pek anlamadım

IcenGuard
03/06/2004, 18:17
programın ticari degeri ne?
Kac kisiye dagıtacaksın?
kimler kullanıcak?

DotNetKid
04/06/2004, 12:29
sorunu anlayamadım yani 1 kişiye verecem dersem "uğraşmayalım ozaman" mı diyeceksin :) zaten asıl maksat öğrenmek..
ticari değeri = ?
kaç kişiye = ne kadar kişi alırsa (?)
kimler kullanıcak = satın alanlar veya personelleri :)

arkadaşlar FileNotFoundException ı bi türlü kullanamıyorum elimde bi ton e kitap var ama hiç bişie yaramadılar sanırım syntax bilgimin eksikliğinden (ya da sıfır olduğundan..) bunu kullanmak için başka biyerlere başka kodlar eklicez galiba..

delucian
26/06/2004, 00:13
sana bi tavsiye programa beleş kullanım sınırı ver mesela 30 kere felan 31. kez program çalışınca serial istesin ve bu olayıda öyle textle felan yapma direkt kafana göre bi sistem bul ona uygun bi serial maker yap ben daha önce yaptım acayip güzel oluyo mantığı şuydu ;

1: Program ilk çalıştığı zaman sistem saatini alıyodu onu 3.4568 ile çarpıyo sonra 2 ye bölüyo sonra 26.78 le çarpıyo .... ve dahası

2:En son ortaya çıkan değerin tam sayı kısmını alıp ekrana yansıtıyodum ve bu numarayı registry e kaydediyodum

3:Aynı işlemi yapan küçük bi serial maker programcığına bu çıkan sayıyı yazınca aynı işlemleri yapıp gereken kodu çıkarıyodu

anlıcan baya bi sağlam yoldu...

Tek kusuru program her kurulduğunda başka bi serial istemesiydi buna bi çare arıyodum ki vb olayından kopmak zorunda kaldım ama rahat bi şekilde bu yolu kullanabilirsin bence başarılar...