USB Flash Memory ile kopyalama koruması nasıl olabilir?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
USB Flash Memory ile kopyalama koruması nasıl olabilir?
Programlama yarışması başlığı altında tartışmamak için bu topic'i açıyorum.
bkz. viewtopic.php?p=44444#44444
Off-topic olmamak için de birkaç öneri yazayım:
- 16 veya 32 MB'lık flash memory'ler bu iş için çok uygun. 15-20 milyona bulunabiliyor.
- Benim önerim boot sector ve FAT arasındaki kullanılmayan bölgeye bilgi yazmak ve programdan bunu doğrulamak.
- Kullanılmayan bir sektörü FAT üzerinde BAD Block olarak işaretleyip buraya birkaç veri yazmak ve doğrulamak.
- Üretici adı veya seri no'sunun alınması.
- Bunların combine kullanılması olabilir.
bkz. viewtopic.php?p=44444#44444
Off-topic olmamak için de birkaç öneri yazayım:
- 16 veya 32 MB'lık flash memory'ler bu iş için çok uygun. 15-20 milyona bulunabiliyor.
- Benim önerim boot sector ve FAT arasındaki kullanılmayan bölgeye bilgi yazmak ve programdan bunu doğrulamak.
- Kullanılmayan bir sektörü FAT üzerinde BAD Block olarak işaretleyip buraya birkaç veri yazmak ve doğrulamak.
- Üretici adı veya seri no'sunun alınması.
- Bunların combine kullanılması olabilir.
http://www.pretec.com/driver_download_center.htm#iDisk
bu adreste iDisk Version Checker diye bi program var.
taktığınız usb aygıta ait tüm özellikleri seriyor. bunu bi inceleyebilirsiniz.
en azından usb nin marka modeli seri no gibi özelliklerini ayırabilirsiniz. eşinden bikaç milyon tane olsada
ayrıyeten fat sistemleri isobuster gibi ne var ne yok kopyalayan programlar var? bunlara karşıda birşeyler düşünmek gerek tabi.
bu adreste iDisk Version Checker diye bi program var.
taktığınız usb aygıta ait tüm özellikleri seriyor. bunu bi inceleyebilirsiniz.
en azından usb nin marka modeli seri no gibi özelliklerini ayırabilirsiniz. eşinden bikaç milyon tane olsada
ayrıyeten fat sistemleri isobuster gibi ne var ne yok kopyalayan programlar var? bunlara karşıda birşeyler düşünmek gerek tabi.
.-.-.-.-.-.-.-. ^_^
Evet arkadaş ayrı başlık açman bence iyi olmuş
Bu kadar ilgi olmasıda bence herkes için gerekli bir fikir olmasıyla ilgili
Ancak flah memory'nin kullanılmayan bölümlerine bir değer yazabilmek ve burdan o değeri okuyabilmek ve bu bölümün kopylanmasını engellemek gibi işlemlerin daha önce harddiklerde uygulandığını ve burdaki bilgilerinde simule edildiğini hatırlıyorum yanlışım yoksa ancak c programcıları bizlere belki delphi içinden kullanabileceğimiz kodlarla yardımcı olabilirler belkide.
Bu kadar ilgi olmasıda bence herkes için gerekli bir fikir olmasıyla ilgili
Ancak flah memory'nin kullanılmayan bölümlerine bir değer yazabilmek ve burdan o değeri okuyabilmek ve bu bölümün kopylanmasını engellemek gibi işlemlerin daha önce harddiklerde uygulandığını ve burdaki bilgilerinde simule edildiğini hatırlıyorum yanlışım yoksa ancak c programcıları bizlere belki delphi içinden kullanabileceğimiz kodlarla yardımcı olabilirler belkide.
- uğur alkan
- Üye
- Mesajlar: 227
- Kayıt: 29 Ağu 2004 04:49
- Konum: Istanbul
alt seviye erişim diliyle (ASM) yukarıda bahsettiğin şeyleri ve daha fazlasını yapabilirsin....
1. Sistem interruptları hiç bir zaman değişmez.
2. Disk erişim mantığı hiç bir zaman değişmez.
13 adet anakart kaynaklı ana interrupt vardır ve bunlar sistemi yönetir.
Mesela;
Dosyayı diske interrupt yazar,siler. İşletim sistemi bunları yapmaz işletim sistemi sadece parametreleri interrupta aktarır o kadar...
Sistem saati kendisini saniyede 25 defa günceller işletim sistemi sadece saati anakarta sorar.
Yalnız bazen işletim sistemiyle çakıştığın zaman "Geçersiz uygulama... " mesajını alırsın. Asm ile board seri numarasından tutta disk seri numarasına, .... ekran kartı seri numarasına kadar pek çok şeyi sorgulayabilirsin. Disk veya disketlerin el değmeyen her yerine ulaşabilirsin. Sektör yazma ve silmede(HDD erişiminde, Bütün disk erişimlerinde) int13 kullanılır
istersen daha detaylı şeyler ve erişimle ilgili asm rutinleri verebilirim, yazabilirim...
M$ o yüzden işletim sistemlerini yazarken hep bazı INT ve fonksiyonları mutlaka desteklediğini duyurur. Ya değilse program programı çalıştırmayabilir. Ama int13 her zaman garantidir.
1. Sistem interruptları hiç bir zaman değişmez.
2. Disk erişim mantığı hiç bir zaman değişmez.
13 adet anakart kaynaklı ana interrupt vardır ve bunlar sistemi yönetir.
Mesela;
Dosyayı diske interrupt yazar,siler. İşletim sistemi bunları yapmaz işletim sistemi sadece parametreleri interrupta aktarır o kadar...
Sistem saati kendisini saniyede 25 defa günceller işletim sistemi sadece saati anakarta sorar.
Yalnız bazen işletim sistemiyle çakıştığın zaman "Geçersiz uygulama... " mesajını alırsın. Asm ile board seri numarasından tutta disk seri numarasına, .... ekran kartı seri numarasına kadar pek çok şeyi sorgulayabilirsin. Disk veya disketlerin el değmeyen her yerine ulaşabilirsin. Sektör yazma ve silmede(HDD erişiminde, Bütün disk erişimlerinde) int13 kullanılır
istersen daha detaylı şeyler ve erişimle ilgili asm rutinleri verebilirim, yazabilirim...
M$ o yüzden işletim sistemlerini yazarken hep bazı INT ve fonksiyonları mutlaka desteklediğini duyurur. Ya değilse program programı çalıştırmayabilir. Ama int13 her zaman garantidir.
Bazen sert rüzgarlar eser başını öne eğmekten asla korkma
Merhaba...
@Coderlord, öncelikle olumlu yaklaşımın için teşekkürler..
- Dongle konusunda bir sorum olacak. Akıllı kartlarda kullanılan Chip'ler konusunda ne düşünüyorsunuz...
- Basit bir PIC ile haberleşip 64K'lık bir hafıza bloğundaki bilgiye ulaşıp doğrulamak. Toplma maliyeti 7 milyona düşürmez mi ? Gerek USB gerek seri hangisi olursa...
@Coderlord, öncelikle olumlu yaklaşımın için teşekkürler..
- Dongle konusunda bir sorum olacak. Akıllı kartlarda kullanılan Chip'ler konusunda ne düşünüyorsunuz...
- Basit bir PIC ile haberleşip 64K'lık bir hafıza bloğundaki bilgiye ulaşıp doğrulamak. Toplma maliyeti 7 milyona düşürmez mi ? Gerek USB gerek seri hangisi olursa...
- uğur alkan
- Üye
- Mesajlar: 227
- Kayıt: 29 Ağu 2004 04:49
- Konum: Istanbul
bu çözüm olmaz çünkü 2 adet PC ile araya girip SPY lık yaparsın ve transfer bloğunu elde edersin sonra 15 dk da pic e programını yazar çalıştırırsın.....
ama bir yolu var... Pic 16F ve 18F ailelerinde içerde dönen koda yeniden kod yazdırma şansın var yani chip kendi kendini yeniden proğramlıyor.
30-40 tane kod üretip proğramın her çalıştığında sadece sana özel bu 30-40 tane algoritmadan rast gelebirisini çağırdığında çözüm ihtimali oldukça zayıflar.... PIC in içinde Flash memory vardır o kısıma program açıldığında özel bir veri yazdırırsın programını her açıp kapadığında bunu değiştirirsin buda makul bir çözümdür. Ama flash memorynin bir yaz-sil ömrü ve fiziksel ömrü vardır. 10 Yıl gibi bir süre zarfında flash memory kullanıcıyı yolda bırakabilir. Geçen gün 6 yıl önce ortagımın yaptığı bir cihaz arıza sebebiyle geldi. Sorun Flash memory.... neyse sözün kısası
Olaylar kimse görmeden arkaplanda gerçekleştiği müddetçe bütün korumalar iyidir.
ama bir yolu var... Pic 16F ve 18F ailelerinde içerde dönen koda yeniden kod yazdırma şansın var yani chip kendi kendini yeniden proğramlıyor.
30-40 tane kod üretip proğramın her çalıştığında sadece sana özel bu 30-40 tane algoritmadan rast gelebirisini çağırdığında çözüm ihtimali oldukça zayıflar.... PIC in içinde Flash memory vardır o kısıma program açıldığında özel bir veri yazdırırsın programını her açıp kapadığında bunu değiştirirsin buda makul bir çözümdür. Ama flash memorynin bir yaz-sil ömrü ve fiziksel ömrü vardır. 10 Yıl gibi bir süre zarfında flash memory kullanıcıyı yolda bırakabilir. Geçen gün 6 yıl önce ortagımın yaptığı bir cihaz arıza sebebiyle geldi. Sorun Flash memory.... neyse sözün kısası
Olaylar kimse görmeden arkaplanda gerçekleştiği müddetçe bütün korumalar iyidir.
En son uğur alkan tarafından 12 Nis 2005 07:08 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Bazen sert rüzgarlar eser başını öne eğmekten asla korkma
1 )
2) öncelikle programınızın debug edilmesine mani olmanız lazım
yoksa uyguladığınız korumanın kontrol edildiği kısımda bir jump değişimi
bütün emeğinizi boşa çıkarır..
viewtopic.php?p=25222&highlight=#25222
3) Bir yere siz yazıp okuyabiliyorsanız başkalarıda yazıp okuyabilir...
kısacası
bence USB belleğin herkesin kolayca ulaşamayacağı bir kısma
bir şeyler yazıp bunun kontrolünü yapmak tek başına yeterli olmaz...
bunun yanında "anti-debug" "SMC-Self Modified Code" checksum vb metodların karışımı bir sistem kullanmak gerekiyor...
kolay gelsin
windows int 13 ün kullanımına izin vermiyor direkt olarak kullanamıyorsunuzSektör yazma ve silmede(HDD erişiminde, Bütün disk erişimlerinde) int13 kullanılır
2) öncelikle programınızın debug edilmesine mani olmanız lazım
yoksa uyguladığınız korumanın kontrol edildiği kısımda bir jump değişimi
bütün emeğinizi boşa çıkarır..
viewtopic.php?p=25222&highlight=#25222
3) Bir yere siz yazıp okuyabiliyorsanız başkalarıda yazıp okuyabilir...
kısacası
bence USB belleğin herkesin kolayca ulaşamayacağı bir kısma
bir şeyler yazıp bunun kontrolünü yapmak tek başına yeterli olmaz...
bunun yanında "anti-debug" "SMC-Self Modified Code" checksum vb metodların karışımı bir sistem kullanmak gerekiyor...
kolay gelsin
@mege haklısın bu sektörleri de kopyalamak mümkün ve diğer arkadaşlar haklısınız bu yöntemi kolayca kırmak da mümkün. Ancak bizim aradığımız şey kırılamaz bir sistem tasarlamak değil, zaten bu mümkün de değil. Basit ve ucuz yollu bir kopyalama koruma sistemi oluşturmak ilk hedef olmalı.
Hedeflenen son kullanıcının bunu istediği gibi çoğaltamaması.
Ancak sorun şu. PIC programlamayı ve devre tasarlamayı herkes yapamayabilir. Ancak biraz uğraş ile USB Flash diskin FAT'ine erişebilen bir bileşen hemen herkes yapabilir. (Ben yaptım da ordan biliyorum )
Birçok yöntemin kombinasyonunu içeren bir kopyalama koruması yeterince iş görecektir diye tahmin ediyorum.
Bence PIC kullanmak harika bir fikir. Seri porta göre tasarlarsın. PIC içine uygun bir algoritma ile de kopyalamayı epey güçleştirirsin. Sonuçta bunu yapabilen pro. birisi olacak ki bu adam da kopyalar. Ne yapabiliriz ki?mrmcop yazdı: - Basit bir PIC ile haberleşip 64K'lık bir hafıza bloğundaki bilgiye ulaşıp doğrulamak. Toplma maliyeti 7 milyona düşürmez mi ? Gerek USB gerek seri hangisi olursa...
Hedeflenen son kullanıcının bunu istediği gibi çoğaltamaması.
Ancak sorun şu. PIC programlamayı ve devre tasarlamayı herkes yapamayabilir. Ancak biraz uğraş ile USB Flash diskin FAT'ine erişebilen bir bileşen hemen herkes yapabilir. (Ben yaptım da ordan biliyorum )
Birçok yöntemin kombinasyonunu içeren bir kopyalama koruması yeterince iş görecektir diye tahmin ediyorum.
- uğur alkan
- Üye
- Mesajlar: 227
- Kayıt: 29 Ağu 2004 04:49
- Konum: Istanbul
Benim görüşümde usb olması daha ii daha önce de bir arkadaşın değindiği gibi burada son bir kaç yedeği tutmak ta mümkün olacaktır. PIC 16F874 yada 16F877 olarak herhangi birini seçerseniz bunların donanım olarak besleme gerilimleri başınızı ağrıtabilir. ve PIC in içindeki veriyi kopyalamak pek te zor değil.
-
- Kıdemli Üye
- Mesajlar: 1026
- Kayıt: 11 Şub 2005 02:12
- Konum: İstanbul
Santralle haberleşen programlarda santral bir aparata bağlanıyor.Bu aparatta com porta bağlanıyor ve program sadece o aparattan(dongle) dan gelen şifre doğrulandığında çalışıyor.
Usb disk fikri benim de aklıma gelmişti.Ancak her program için uygulanabilir mi sakıncaları ne olur tam olarak emin değilim.Diskleri olduğun gibi kopyalayan bir yazılımla olayı ile basitçe çözerlerse tüm uğraşlar boşa gitmiş olur.
Daha farklı şeyler de denenebilir.Örneğin ethernet kartlarında da bir değişmez numara bulunuyor.Bugün bir ethernet kartı da çok pahalı değil.Bunun yanında çoğu anakartta onboard olarak geliyor.
Usb disk fikri benim de aklıma gelmişti.Ancak her program için uygulanabilir mi sakıncaları ne olur tam olarak emin değilim.Diskleri olduğun gibi kopyalayan bir yazılımla olayı ile basitçe çözerlerse tüm uğraşlar boşa gitmiş olur.
Daha farklı şeyler de denenebilir.Örneğin ethernet kartlarında da bir değişmez numara bulunuyor.Bugün bir ethernet kartı da çok pahalı değil.Bunun yanında çoğu anakartta onboard olarak geliyor.
Hayırlı Çalışmalar;
Arkadaşlar gerçi burda konu olan kesinlikle kırılamayacak bir güvenlikmi yoksa kırılmayı zorlaştıracak en iyi yapıyı yada yöntemi bulmakmı tam anlayamadım o yüzden bende yapı yada yöntem üzerine konuşmak istedim.
Günümüzde artık hemen hemen her yerde internet mevcut anlatacağım yapının mutlaka kullanıcı yada program açısından dez avantajları olacaktır ama benim aklıma şu geldi artık bir çok programın o şekilde yada bu şekilde bir download merkezi falan var. Derimki şöyle bir işleyiş olsa programı verdiğiniz heryerde her client için makine değişikliği olmadığı sürece bir defaya mahsus bir konfigürasyon yapılacak bu konfigürasyon ne olabilir, bu client ın mesela ethernet disk cpu ekran kartı anakart bios bilgilerinden oluşan bir config set bilgisi uzak yerdeki merkez bilgisayara bir güvenlik parolası karşılığında kayıt ettirilecek. ve bu makinada bu program her açılışında sisteme ait bilgileri bu merkeze göndererek kendini tanıtacak ve çalışmak için onay isteyecek tabi bu arada client için daha önceden server a yapılan kayıt taki konfigürasyon paketi ile gönderilen paket uyumlu ise server kendi database inde o kullanıcı için çalışma okeyi verecek ve kullanıcı server a istek gönderdikten sonra database bakarak kendi seti için ayrılmış kayıtta çalışma okeyi varmı ona bakacak ve okey varsa çalışacak ve kendi okeyini bir sonraki çalışma için tekrar onay almak üzere kaldıracak.
evet benim aklımdan böyle bir kurgu geçti arkadaşlar belki saçmaladım ama herşey kurgu ile başlar başka fikirler bu kurgu üzerinde daha sağlam temellere sebep olabilir yorum sizin
Arkadaşlar gerçi burda konu olan kesinlikle kırılamayacak bir güvenlikmi yoksa kırılmayı zorlaştıracak en iyi yapıyı yada yöntemi bulmakmı tam anlayamadım o yüzden bende yapı yada yöntem üzerine konuşmak istedim.
Günümüzde artık hemen hemen her yerde internet mevcut anlatacağım yapının mutlaka kullanıcı yada program açısından dez avantajları olacaktır ama benim aklıma şu geldi artık bir çok programın o şekilde yada bu şekilde bir download merkezi falan var. Derimki şöyle bir işleyiş olsa programı verdiğiniz heryerde her client için makine değişikliği olmadığı sürece bir defaya mahsus bir konfigürasyon yapılacak bu konfigürasyon ne olabilir, bu client ın mesela ethernet disk cpu ekran kartı anakart bios bilgilerinden oluşan bir config set bilgisi uzak yerdeki merkez bilgisayara bir güvenlik parolası karşılığında kayıt ettirilecek. ve bu makinada bu program her açılışında sisteme ait bilgileri bu merkeze göndererek kendini tanıtacak ve çalışmak için onay isteyecek tabi bu arada client için daha önceden server a yapılan kayıt taki konfigürasyon paketi ile gönderilen paket uyumlu ise server kendi database inde o kullanıcı için çalışma okeyi verecek ve kullanıcı server a istek gönderdikten sonra database bakarak kendi seti için ayrılmış kayıtta çalışma okeyi varmı ona bakacak ve okey varsa çalışacak ve kendi okeyini bir sonraki çalışma için tekrar onay almak üzere kaldıracak.
evet benim aklımdan böyle bir kurgu geçti arkadaşlar belki saçmaladım ama herşey kurgu ile başlar başka fikirler bu kurgu üzerinde daha sağlam temellere sebep olabilir yorum sizin
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
mr_stop amcam okusa bunları daha bir fırın ekmek yemeniz lazım derdi sanırım. Fikirleri kötülemek istemem. Ama bahsettiğiniz tüm korumalar yarım saat sürmez sanırım. anti-debug yöntemlerinin tamamı biliniyor. Kendimiz kasıp yaparsak belki. windows işlerim sistemleri donanıma direk erişim vermez. bu nedenle donanıma bağlı hiç bir güvenlik işe yaramayacaktır. sanal disk, sanal comport-paralel-usb programlar var. bunları kullanarak log alabiliyorsunuz. benim düşüncem programı korumaya çalışarak zaman kaybetmeyin. bunun yerine her şeyi ayarlanabilir bir program yazmayın. yani 1-2 yıl içinde adam size ihtiyaç duysun (türkiyede bu süre aylarla sınırlı,sürekli yasa değişiyor). kişi programı beğendiyse alır. beğenmediyse ve zaten bedava kullanayım diye düşündüyse bu süre sonunda verileri işe yaramaz hale gelecek ve mutlaka eski verilerine ihtiyaç duyacaktır. bunun en büyük örneği oracle. lisans derdi yok. web sitemden indirin diyor. istediğiniz gibi kullanın. ama göçerse destek için fazladan çok fazla para alırım diyor. adam akıllı bir koruma yazmak için programın koruma kısmını asm de yazmak gerekir bence. biraz uzun oldu galiba. umarım anlatabilmişimdir.
en son üzerinde çalışılan bir teknikde programın bir kısmının piclerde saklanarak program çalıştığında eksik kısmı picden alıp kendini tamamlamasıydı yada önemli hesaplamaların donanımsal cihazlara yaptırılması. tabiki bu cihazları piclerle yaparsak kolayca kırılabilir. adamlar PCI üzerinde çalışan cihazlar yapıyor. bu tekniği kullanan bir kaç program duymuştum ama crackerlardan nasibini almış. böyle bir sisteme yapılacak yatırımı düşündükçe oturup kendi işletim sitemizi, işlemcimizi, v.s. geliştirelim onun üzerinde çalışan bir program yazalım daha güvende olur. bu şekilde olan yazlımlarda varmış, ama satılık değil kiralık. adamlar bilgisayarlarla getirip sonra alıyorlarmış.
en son üzerinde çalışılan bir teknikde programın bir kısmının piclerde saklanarak program çalıştığında eksik kısmı picden alıp kendini tamamlamasıydı yada önemli hesaplamaların donanımsal cihazlara yaptırılması. tabiki bu cihazları piclerle yaparsak kolayca kırılabilir. adamlar PCI üzerinde çalışan cihazlar yapıyor. bu tekniği kullanan bir kaç program duymuştum ama crackerlardan nasibini almış. böyle bir sisteme yapılacak yatırımı düşündükçe oturup kendi işletim sitemizi, işlemcimizi, v.s. geliştirelim onun üzerinde çalışan bir program yazalım daha güvende olur. bu şekilde olan yazlımlarda varmış, ama satılık değil kiralık. adamlar bilgisayarlarla getirip sonra alıyorlarmış.