Python projemin kodlarını şifrelemek istiyorum nasıl yaparım?

aynen öyle hocam benimde takıldığım yerler buralar zaten , diğer yorum yapan hocalarımız şöyle yap sunucudan çektir yada işte farklı doğrulama sistemleri ekle gibi önerilerde bulunuyorlar fakat adam kaynak kodunu açtıktan sonra benim oraya eklediğim auth sistemlerinin hiçbir anlamı kalmıyor gider adam benim kodumu alır gerekirse oraları siler yada kendi authunu ekler ister paylaşır ister kendisi kullanır yani bu en baştaki sorun

bunu tam olarka nasıl yapacağız hocam sonuçta sunucuya bağlanmak içinde bir socket ne bileyim api lazım e bunlarıda bir client üzerinden yapacak kullancı tabikide benim clientimi açıp apimi yada sunucu ip portunu alan kişilerde büyük sıkıntı oluşturucak bana ve bunun yanında benim her müşteri için kendi sunuculaırmı kullanmam demke benim zararıma olur kendi bilgisayarlarını kullanmaları lazım benim sunucuma yük binerse sürekli ne sunucularım kaldırır nede maddi olarak ben kaldırabilirim böyle bir sistemi açıkcası

şifrelediğim kodu çözmeden çalıştırabilmenin bir yolu olsa tüm soruna derman olacak aslında , bilgisayarın herhangiğ bir dizinine bizim exemizin şifresini çözecek bir yapı eklediğimiz zaman yani bu yapı bugün olmasa bile eninde sonunda fark edilip sistemin patlaamsına neden olacaktır diye düşünüyorum hocam

program büyük bir program diyeyim hocam kullanıcıların programı kendi sistemlerinde çalıştırması lazım yoksa çok kişi taraıfndan kullanılınca büyük kaynak tüketimi oluşturacaktır , projemde güncelleme ve 1-2 şeyi githubdan çektiriyorum ve gitkey var kodumun açılıp gitkeyine ulaşılmasıda büyük bir sıkıntı oluşturur bana çünkü o git keyinde okuma yazma yetkisi var büyük ihtimal sizin bahsettiğin sistemdede bir key vardır ve bu keyde okuma yazma yetkisi olduğu için kodu açıp keye ulaşan herkes projeyi sabote edebilir diye düşünüyorum yanlış bildiğim yerleri düzeltirseniz sevinirim teşekkürler

inceleyeceğim hocam kaynak ve yorumunuz için teşekkürler

vallaha anlayamadım hocam biraz bilgim dışında kalıyor , bu kaynak kodumun güvenliğini nasıl salayacak kodun kullanıcılarda çalışmasını ve benim sunuclarımdan kaynak tüketmesini istemiyorum açıkcası

Maalesef yok, varsa da bilmiyorum.

Eğer sunucu ile çalışma imkanı yoksa gizli kalması gereken yerleri derlenen bir dille yazmayı deneyebilir misiniz?

bakalım hocam ben böyle bir sistem olduğunda kendimi inandırmak istiyorum açıkcası diğer türlü o kadar emek çöp olacak gibi duruyor :smiley: gelişmeleri buraya yazacağım

  1. plan olarak böyle bir yönteme başvurulabilir nasıl yapacağımı tamda bilmiyorum açıkcası olmadı bunuda bir araştıracağım hocam
  1. Şu ana kadar kullandığım github codespaces de başkaları erişemiyo aynı bir sanal makine gibi ücretsiz olarak 4cpu 8ram 32rom özelliği var ancak isteğinizi karşılarmı bilmem
  2. pyarmordan bahsettiniz o kısmı atlayıp şu linke bi göz atabilirsiniz: Python Source Code Obfuscation. Enciphering your Python Code to avoid… | by Mohammed Vaghjipurwala | Geek Culture | Medium
  3. “Python” “Source” “Code” “Obfuscation” gibi anahtar kelimeler ile daha çok araştırma yapabilirsiniz vakit ayırabilirsem ben de bakarım.
  4. isteğinizi karşılarmı bilmem ama şöyle linkler buldum:
    a. How to obfuscate Python code effectively? - Stack Overflow
    b. How to Hide/Encrypt/Obfuscate any Python Program | by Balakrishnakumar V | Towards Data Science
    fazla göz atamadım alakasız ise kusura bakmayın

İhtiyaçlarınızı anlamak için çaba sarfediyorum.

Kafamda bir kaç soru var.

Bir projeniz ve apileriniz varmış. Güzel.

Şimdi bir program olarak müşterilerinize vediğinizi düşünelim.

Sunucu istemci olarak bu api lerin bir kısmız sizde bir kısmı istemcide mi duracak yoksa hepsi kullanıcıda mı olacak henüz anlayamadım.

Yada daıtık bir sistem mi bir den çok göreve bölünmüş ve dağıtık olarak mı çalışıyor emin olamadım.

pyarmor isteyen biri, sadece verdiği kodu korumak istiyor diye düşünürüm.Alternatifi bir uygulama kullanalabilir.

Programın lisanslanması apayrı bir olay. Lisanslama süreli yada bir kereye mahsus bir yöntemle yapılabilir, bu programınıza biçtiğiniz kıymetle alakalı bir olay.

İlk verdiğim link pyarmor alternatifi bir kod idi.

İkinci verdiğim ise benzer ama lisanlama ile bağlanabilecek bir kod.

Özellikle şununla ne demek istediğinizi anlayamıyorum.

apinin kendinisini mi lisans anahtarlarınızı mı korumaya çalışıyorsunuz tam anlayamadım.

Her neyse olayın özüne dönersek;

Kodunuzun tersine mühendislikle elde edilmesini istemiyor ve sorununuz bundan ibaret ise,

Yukarıdaki kodlar işinizi görecektir.

Diğer taraftan;

Asıl konu şu, ne kadar korursanız koruyun bir şekilde çözülür ve geri elde edilebilir. Ama bunu elde edebilecek kişi sayısı çok azdır.

Python’ın handikapı da bu işte. Script bir dil kullanırsanız kodunuz açık kaynak görünür, ya yürütülebilir bir koda çevirerek yada kodu okunmaz hale getirecek şekilde karıştırarak korumaya çalışırsınız.

Bunu yapmak için pyarmor ve benzerleri, kodu kriptolar, çalışma zamanında açar sonra yorumlayıcıya gönderir. Buradaki boşluk şu, şifreleseniz de kodu çalıştırmak için bir belleğe açarsınız, açarsanızda o bellek dump edildiğinde kod ulaşılır hale gelir. Ki bunu bu forumda yapabilen kaç kişi var derseniz bakalım isterseniz kaçı yapabiliyor.

Diğeri dosyanızı, projenizi, kodunuzu, derlenebilir bir dilde derlemek .exe gibi yürütülebilir bir formata çevirmek ki bu da korumaz burada da zaten decompile edilebilir yani binary dosyalar da geri çevrilebilir.

Hadi diyelim hem derlediniz binary, hemde upx gibi PE sıkıştıran ve bazı şifreleme özellikleri olan araçlarla hem exe’yi sıkışırıp, hem de bir miktar şifreleyebilirsiniz ve fakat bunlar da tersine çevrilebilir.

Yani Microsoft’un, windows’unun gözünün yaşına bakmayanlar sizin kodunuza acır mı derseniz acımaz.

Ama bu da endişenmeniz gereken bir durum yok.

Kafanız karışmasın, normal şartlar altında şifrelediğiniz bir kodu çoğu kullanıcı kıramaz. İstisnası, python yorumlayıcısı mecbur kodun açık halini isteyecektir ve belleğe açık hale getirdiğinizde bunu bulabilen birileri olabilecektir.

Bytekoda çevirip belki biraz okunmaz hale getirilebilir, pyd dosyası haline getirilp biraz daha okunmaz hale getirilebilir.

Hatta komple yürütülebilir dosya ve dinamik kütüphane haline getirip biraz daha okunmaz hale getirebilirsiniz.

Ve hatta bu exe ve dll leri de execompressor programlarıyla sıkıştırıp daha da okunmaz hale getirebilirsiniz.

Bu veya bir kaçını yaptığınızda zaten kimse çözmeye uğraşmayacaktır. Tabi sizin kodlarınızın manevi değerini bilmem ama bu kadar emek sarfedecek adam zaten sizin kodunuza ihtiyaç duymaz kendi aracını yazar.

İş noktaya geldiyse, bir sandbox içine koyar kodunuzunu, girdisini çıktısını, ağ trafiğini analiz eder doğrudan her şeyi ele geçirebilir.

Her neyse.

Şöyle düşünün.

Pyamor açık kaynak aslında sadece lisanslama yapıyor.

dashingsoft/pyarmor: A tool used to obfuscate python scripts, bind obfuscated scripts to fixed machine or expire obfuscated scripts. (github.com)

Aha adamın kodu, hadi lisans mekanizmasını bypasslasınlar bakalım. Adam bir iki satır kod koymuş, lisans anahtarı kontrolü yapan bölümleri kaldırın çalıştırın bakalım çalıştırabilecek misiniz?

Bir serverdan çekiyor datayı. Çektiği datayı kontrol ettiği rutinleri bulun, lisansı aşın aşabilirseniz.

Bu işler öyle kolay değil yani.

Sonuç olarak, olayı abartmaya gerek yok. Verdiğim bir iki kütüphaneye bakın, diğer arkadaşların lisanslama ile ilgili tavsiyelerine de göz atın ve kodunuzu şifreleyin gitsin.

Bir de şifrelemek için ne kadar yaygın olarak kullanılmayan bir kütüphaneyi tercih ederseniz, onu kırmak için hazır araç bulunması ihtimali de o kadar azalır.

Diğer türlü kodunuzu ele geçirecekler endişesi yaşarsanız zaten hiç program yazamazsınız, önünde sonunda biri kafaya koyduysa kodu kırar.

Hep söylemişimdir, bilgisayar kodları bilmez bildiği tek dil 1 ve 0’lar ve zaten 1 ve 0’lara dönüşünce ne yaptığı anlaşılacaktır.

Ama bunu anlamaya uğraşacak çok adam yok. Kolay gelsin.

3 Beğeni

bunu denedim hocam bu olmuyor 3.8 üstü desteği yok zaten 3.8 altıda path hataları var kullanılamıyor 2 kendi localimde denedim bide vdslerde kurmayı denedim hepsinde aynı path hatasını veriyor

hepsi kullanıcıda duracak hocam apiler ile benim databaseimle haberleşecek sunucularımla haberleşecek örnek veriyorum giriş yaptı programa kullanıcı adı şifre ile api üzerinden benim mysql ime bağlanıp kullancı bilgilerini doğrulayacak

altarnatifini bulamadım hocam Cython, Nuitka ve py2exe gibi araçlar örnek gösterilsede bunların hiç koruduğunu düşünmüyorum

onada baktım hocam altarnatifi değil gibi çünkü kodu şifreliyor fakat daha sonra o kodu kullanmak için kodun komple açılması gerekiyor exe ye dönüştürülemiyor yanlışta bakmış olabilirim fazla mantığı hoşuma gitmedi detayına girmedim açıkcası

kullanıcılar kodlara içindeki apilere yani benim projeme dair hiç bir şeye erişmemesi lazım aynı pyarmordaki gibi exeyi derliyorsun ve hiç bir şey gözükmüyor exe yi editorlerle açmaya çalışınca içinde sadece hashler ve karmaşık yazılar oluyor

komple projeyi diyim hocam

amacımda minimum a indirmek hocam yani ne kadar zorlaştırırsam ne kadar ulaşılmaz yaparım diye uğraşyıorum

bu işlemleri sırasıyla nasıl yapacağıma dair bir kaynak varmı hocam

Sorular uzun.

Uzun uzadıya ayrıca yazarım.

Verdiğim kütüphane.

Kendim kurdum çalıştırdım.

Git (git-scm.com)

Git bash’ı açın.

Kütüphaneyi indirdim.

PYCONCRETE_PASSPHRASE=<your passphrase here> pip install pyconcrete

Bir şifre verdim ve kurdum.

image

Örnek olması açısından. test adında bir şifre verdim. Daha önce kurduğumda ekran görüntüsü zaten kurulumun mevcut olduğunu gösteriyor.

sonra klasörümdeki main.py dosyasına

pyconcrete-admin.py compile --source=main.py  --pye

İle encrypted bir dosya oluşturması komutu verdim.

Klasörümde bir tane main.pye

Dosyası oluştu.

Şimdi pye dosyasını kullanacağız. py dosyasını kullanmayacağız. Bunu notepad ile açalım.

Kodun içi bu okuyup decompile eden buyursun. Şifresini de verdim test.

Peki bu şifreli main.pye dosyasını nasıl çalıştıracağız.

pyconcrete main.pye

Komutu ile rahatlıkla şifreli kod çalışıyor.

image

Bu kadar basit.

İster pyc dosyası oluşturun, ister pye dosyası oluşturn path e pyconcrete eklediğinizde kolayca çalışacaktır.

Bunları yaparken sadece kütüphanenin dokümanlarını kullandım.

Yani kullanıcınıza artık py dosyasını vermiyorsunuz.

Sadece .pye dosyanızı veriyorsunuz ve bununla çalıştırıyor.

.pye dosyasının içeriğini gösterdim. Çözebilene de tekrar buyursun çözsün saygı duyarım.

Ama bence standat bir kullanıcı için yeter de artar bile.

Hayır öyle değil, kodu sonradan açman gerekmiyor, olduğu gibi .pye olarak çalıştırılıyor. Kodu kullanmak için açmak falan gerek miyor.

Exe ye de dönüştürmeye gerek kalmıyor. Çok exe ye dönüştürmk isterseniz. bir main fonksiyonu yazar pye dosyasını çalıştıracak sistem komutunu ona ekler. Exenin yanında bu pye dosyasını koyarsınız çalıştırır.

Bence detayına girin. Yanlış bakmışsınız.

Ha detayına girmeyecekseniz burada diğer yöntemleri hiç anlatmayayım dahi, onarl bunlardan da karışık olacak.

1 Beğeni

Sana bir şey soracağım belki ben de kullanırım bu kodu çalıştırmak için pyconcrete nin ille da test şifresi ile mi kurulması gerekir o şekilde bi anlamı kalmaz çünkü.

Evet anlamsız. Sen kurma. Kullanma.

Artık kafam karıştı siz tam olarak neyi şifrelemek istiyorsunuz.

Konusu açılmışken araştırayım eğer anlamsızsa ve @AngaraliJoo bunu korunması için kullanacaksa anlamı ne :thinking:

Python kodları metin dosyası şeklinde olduğundan herhangi bir metin editöründe açıp okuyabilirsin. Ve bu kod içerisindeki her şeyi alabilirsin ve kullanabilirsin. Kapalı kod çalışmak ve kodlarını vermeden, sadece yürütülebilir bir dosyayı kullanıcılarına/ müşterilerine vermek ama kodlarını vermek istemeyebilirsin. Bu durumda ne yaparsın? Soru bu.

Konu şu. Kodunu şifreli hale getirilmesi yetmez. Şifreli dosyanı da bu haliyle çalıştırmak için bir platforma ihtiyaç duyarsın.

Sorusundaki pyarmour bunu yapıyor. Benzerini de benim verdiğim kütüphane yapıyor. Bu yüzlerce alternatiften biri.

Senin için neden anlamsız;

Çünkü bu şifreyi kullanıcına vermek yerine kurulumu yaparken serverdan sen verdiğinde o bilgisayara özgü şifrelenmiş bir kod vermiş olursun istese de başka bilgisayarda da kullanamamış olur.

Kullanmak isterse, o şifreyi öğrenmek ve başka bilgisayara girmek zorunda kalır ki bunu bile yapsa yine de şifrelenmiş kodun açık haline ulaşamamış olur.

Neden senin işine yaramaz, çünkü ne işe yaradığını bile anlamakta zorlanıyorsun.

Burada şifreni her seferinde kendin ayarlayabilrsin bir sorun yok.

Hangi makine için ayarlar ve kurarsan, diğer pye dosyaları o şifre olmadığında makinede çalışmaz, yani hem kodu makineye kilitlemiş olursun hem de açık kaynak kodu görememiş olur.

Bu kadar net bir dumu açıklamak zorunda bıraktığınız için üzgününüm.

Boşver kuramamış zaten, çalıştıramayacak.

Aynı koda ben bakıp kurup çalıştırabiliyorum ama maalesef kuramayıp deneyemeyn birinin beğenmedim dediğini düşünürsek çok da zorlamaya gerek yok.

Bundan sonraki kısmı üzerine alınma.

Çok zeki biri olduğumu düşünmüyorum.

Ama Türkiye IQ ortalaması 90 diye üzülürken 89’a düştü. Hakikaten azap verici bir hal almaya başladı durum.

Şimdiye kadar verdiğim bu kadar ipucu ile, buna ilave bir script yazıp daha kullanışlı bir araç haline getirecek insanlar olmalıydı.

Maalesef tüketim toplumuyuz, sadece ürünleri tüketebiliyoruz. Yazılım ürünlerini, donanım ürünlerini tüketiyoruz.

Benden pass…

Buyrun adama ne önerirseniz önerin.

Hatta llk öneriyi ben yapayım. Öde kardeş sen 60 doları al lisansını kullan. Yorma bizi senden olmayacak.

1 Beğeni

değerli yanıtınız için teşekkürler hocam , gösterdiğiniz adımları izliyorum fakat bende kütüphaneyi kurarken hata veriyor şuan onları çözmeye çalışıyorum düzelttip build aldıktan sonra buraya build sonrası deneyimlerini aktaracağım , ben çok yanlış bir şeye bakmışım galiba eğer sizin örneklerinizdede gösterdiği gibi ise tam aradığım şey diyebilirim

Basitçe bir kez daha anlatıyorum.

Verdiğim git linkinden git indirip kurun.

Git bir kaç kısayol oluşturur.

Git gui, Git cmd, Git Bash.

Lütfen CMD kullanmayın.

Git bash çalıştırın.

Bu sefer test2 olarak şifre verip kuruyorum. Komut zaten görünüyor.

image

Saniyeler içinde kuruldu.

Bu kadar.

Nasaya uzay mekiği yapmıyoruz.

Hepsi bu.

Sadece yukarıdaki komutlarla .pye dosyası oluşturun ve artık şifrelenmiş çalıştırılabilir dosyanız hazır.

Ben baştan kütüphaneyi denemedim dedim. Sizle beraber denedim. Ne sizden zekiyim, ne sizden yetenekliyim.

Sorun ne anlamıyorum.

Normalde açık kaynak taraftarıyım. Ne kod şifrelemeyi, ne kod kırmayı, ne lisans çözmeyi öğretmek istemem ama bir umut birileri bir şey öğrenir diye paralıyorum kendimi.

Yani gün bu gün oldu, kaç gündür forumdasınız. Onca uyarı mesajı var bir Allah’ın kulu, neden kuramadı, nasıl kuramadı, ne hata mesajı aldı, ne düzgün bir kaç satır yazı ne bir kaç düzgün resim koyamıyor.

Sorununuz ne sizin anlamıyorum.

Ne olur, ne hatası verdiğini yazsanız, nerede verdiğini yazsanız, ekran resimleri iki satır metin açıklayıcı bir biraz bilgi verseniz çok mu zahmet oluyor.

İşletim sisteminiz ne, python sürümünüz ne, hangi kütüphaneler yüklü, hangileri yüklü değil, hangi editörü kullanıyorsunuz, bunları biraz açıklasanız daha kolay olmaz mı bu işler.

Evet baştan beri ne istediğiniz anladım. Evet nasıl yapılacağına dair aklımda onlarca çözüm var ve evet her türlü yapılır ama yapılamaz hale gelmesi için elinizden geleni yapıyorsunuz.

Bir insan bash nasıl kullanılır, git toolları nasıl kullanılır hiç mi google’a bakmaz.

İşin güzeli şurada hakikaten bilginin kıymetini bilen, uğraşan emek veren insanlar olsa. Bırak bu kütüphaneleri, kendi kütüphanenizi yazıp nasıl şifreleyeceğinizi dahi anlatırım.

Yani onun 60 dolarlık yazılımı bunun derlenmesi zor yazılımı yerine kendi aracınızı bile yapabilir hale getirilebilirsiniz.

Ama yok bir şey eksik. Ne eksik bilemiyorum. Bu dönemde insanlarda bir şey eksik ve o eksklik ne çözemiyorum.

Buraya kadar nezaketini kaybetmediğin kibarca sormaya devam ettiğin için cevap vermeye devam ettim.

Daha da yapamazsan kusura bakma, olmuyor demek ki, anlatamamışımdır sorun bendedir. Bekle daha güzel anlatan biri uygun bir araç sunsun artık.

1 Beğeni

sorun benim cihazımdan kaynaklıysa boşa sizlere olmayan hatayı çözmek için zaman kaybettirmemek için paylaşmadım hocam

3.10 yüklü , windows 10 , python pyqt5 yüklü hocam


hata ekteki gibidir hocam

neden bu kadar celallendiniz anlamış değilim diğer arkadaşın sorduğu sorulardan kaynaklı olduğunu düşünüyorum hataları ilk önce kendim çözümlemeye çalışıyorum genelde hatalar benim sistemimden kaynaklı oluyor başka bir kütüphane yada programla çakıştığı için bende süreç sizinkinden daha farklı olabiliyor paylaştığınız içerikler gerçekten güzel aydınlatıcı yorumlar yapıyorsunuz fakat sizden başka diğer hocalarımında yapmış olduğu yorumlar var onlarıda değerlendiriyorum aynı zamanda bir işte çalışıyorum boş vakitlerimde bakabiliyorum yanlış bir şey söylediysm kusura bakmayınız