USB Flash Memory ile kopyalama koruması nasıl olabilir?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

USB Flash Memory ile kopyalama koruması nasıl olabilir?

Mesaj gönderen fduman »

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.
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

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.
.-.-.-.-.-.-.-. ^_^
Kullanıcı avatarı
tsamim
Üye
Mesajlar: 76
Kayıt: 19 Ağu 2004 03:08
Konum: izmir

Mesaj gönderen tsamim »

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.
Kullanıcı avatarı
uğur alkan
Üye
Mesajlar: 227
Kayıt: 29 Ağu 2004 04:49
Konum: Istanbul

Mesaj gönderen uğur alkan »

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. :D
Bazen sert rüzgarlar eser başını öne eğmekten asla korkma
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

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...
Resim
Resim ....Resim
Kullanıcı avatarı
uğur alkan
Üye
Mesajlar: 227
Kayıt: 29 Ağu 2004 04:49
Konum: Istanbul

Mesaj gönderen uğur alkan »

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..... :D

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.... :D 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
Kullanıcı avatarı
bluekid
Kıdemli Üye
Mesajlar: 541
Kayıt: 11 Haz 2004 10:45
İletişim:

Mesaj gönderen bluekid »

1 )
Sektör yazma ve silmede(HDD erişiminde, Bütün disk erişimlerinde) int13 kullanılır
windows int 13 ün kullanımına izin vermiyor direkt olarak kullanamıyorsunuz

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
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

@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ı.
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...
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?

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.
Kullanıcı avatarı
uğur alkan
Üye
Mesajlar: 227
Kayıt: 29 Ağu 2004 04:49
Konum: Istanbul

Mesaj gönderen uğur alkan »

Yarışmanın code kopyalamasını engelleme kısmında bir PIC(MCU) kullanılacak ise seve seve yardımcı olabilirim...
Bazen sert rüzgarlar eser başını öne eğmekten asla korkma
Kullanıcı avatarı
vampir261
Üye
Mesajlar: 298
Kayıt: 23 Kas 2004 03:22
Konum: Denizli

Mesaj gönderen vampir261 »

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.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

PIC lere code protect konulabiliyor, code okumayı iptal edebiliyoırsunuz
ha bu nasıl kırılır diyorsanız bnu da bir sekilde yapabilirler
ama her babayigidin yapacagı bir sey degildir bence
ÜŞENME,ERTELEME,VAZGEÇME
Ali Erdoğan
Kıdemli Üye
Mesajlar: 1026
Kayıt: 11 Şub 2005 02:12
Konum: İstanbul

Mesaj gönderen Ali Erdoğan »

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.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Ethernet card'ın ID'si de değiştirilebiliyor. Bkz. SMAC isimli program.
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

Mesaj gönderen serbek_tr »

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
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

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ış.
Cevapla