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

Hele şükür kerpetenle alıyoruz sorunları.

pip i güncelle. → Google dan bak.

Bash’i admin yetkisiyle çalıştır → Google’a bak.

Depricated modül hatası için Python kurulumunu değiştir.

Python’ın bir önceki veya bir sonraki versiyonunu kur.

Konsolda:

pyhton --version 

Komutu ver.

Benim çalıştırabildiğim version.

3.11.1

Bunları denersen biri çözecektir.

1 Beğeni

Celallenme sebebim;

Bakın hataları söylerseniz biz de alternatif çözümler ve tahminlerde bulunabiliyoruz.

Ama ben hala sizin python versionunuzu bilemiyorum.

Çünkü hata mesajınız, 3.12 de bir kütüphanenin kaldırıldığını söylüyor, yani 3.11 kullanırsanız kurabileceksiniz.

Hata sizdeyse düzeltebilelim diye söylüyorum.

Aslında asıl cellalendiğim husus.

Bir deneyin zorlayın sona yine hoşunuza girmeyecekse gitmesin.

Azıcık zorlayın çözülemeyecek hiç bir kodlama sorunu yoktur.

1 Beğeni

Açıkalyıcı anlatımınız için teşekkür ederim ben de lisanslama sistemi araştırıyordum serverdan çekmek son derece mantıklı bir husus bence @AngaraliJoo nun sorununu çözebilecek bir yaklaşım tabii kurulum sıkıntısı varsa onu bilemem @semtex arkadaşımızın dediği gibi kurulumu yaptım ve size bir fikir verebilirim ancak bu durumda sanırım kodunuz git bash a bağımlı duruma geliyor. ancak bunu teorik yöntemlerle yapmak durumundayım çünkü şöyle bir hata aldım @semtex bilgisi varsa yazabilirse iyi olur:

runner.py veyahut setup.py keyfiniz bilir @AngaraliJoo :

import requests
from tqdm import tqdm
import subprocess
import os

crf = open("runed.txt", "w")
crf.close()

def installgit():
    url = "https://github.com/git-for-windows/git/releases/download/v2.39.2.windows.1/Git-2.39.2-64-bit.exe"

    response = requests.get(url, stream=True)
    print("installing git installer")
    total_size_in_bytes = int(response.headers.get('content-length', 0))
    block_size = 1024 # 1 Kibibyte
    progress_bar = tqdm(total=total_size_in_bytes, unit='iB', unit_scale=True)

    with open("Git-2.39.2-64-bit.exe", "wb") as f: # internetten yüklüyoruz
        for data in response.iter_content(block_size):
            progress_bar.update(len(data))
            f.write(data)

    progress_bar.close()
    input("press enter to install git... (please install stable path)")
    subprocess.call(["Git-2.39.2-64-bit.exe"])
    with open("runed.txt", "w") as a:
        a.write("1")
        a.close()

def installc():
    command = 'PYCONCRETE_PASSPHRASE=<your passphrase here> pip install pyconcrete' # burayı değiştireceksiniz

    # Git Bash terminalini başlatın ve komutu çalıştırın
    result = subprocess.run([r'C:\Program Files\Git\git-bash.exe', '-c', command], capture_output=True, text=True)

    # Komutun çıktısını yazdırın
    print(result.stdout)

def writesh():
    with open("run.sh", "w") as shw: # burada dosya mevcut değil ise oluşturup yazıyoruz mevcut ise de güncelliyoruz
        shw.write("""
pyconcrete main.pye
""")

def runsh():
    bash_path = r'C:\Program Files\Git\git-bash.exe'  # Git Bash'in tam yolu

    # Git Bash için komut satırı parametrelerini oluşturun
    bash_cmd = [bash_path, '-c', 'source /etc/profile;']
    bash_cmd.extend(['setup.sh'])  # .sh dosyasının tam yolu (aynı dizinde olacaklar)

    # Git Bash ile .sh dosyasını çalıştırın
    subprocess.call(bash_cmd)

    # İşlem tamamlandığında otomatik olarak kapatmak için bire girdi bekleyin
    input("press enter to close this window...")

def main():
    # Dosyanın adını ve yolunu belirtin
    filename = 'runed.txt'
    filepth = ".\\" # idle gibi bi konsolda print("\\") denerseniz anlamını anlarsınız

    # Dosyanın tam yolunu oluşturun
    mainfilepath = os.path.join(filepth, filename)

    # Dosyanın boyutunu alın ve ekrana yazdırın
    rfilesize = os.path.getsize(mainfilepath)
    if rfilesize == 0:
        with open("runed.txt", "w") as rfl:
            rfl.write("0")
    else:
        twoa = open("runed.txt", "r")
        twr = twoa.read()
        if twr == "0":
            installgit()
            installc()
        else:
            writesh()
            runsh()

main()

ben bu kodu teorik yazdım çünkü pyconcrete git bash ile yüklenemedi
bu kod herşeyi tek başına yapıyor isterseniz bunu exe de yapabilirsiniz anladığım kadarı ile pyconcrete kuruluyken bunu deneyebilirsiniz biraz da kurcalarsanız hallolur mevcut koşularda işe yaraması gerekir.

Python 3.11 sürümü kurulu bir makinede deneyebilir misiniz?

1 Beğeni

python sürümünü 3.10 olarak yazmıştım hocam , sorunları ilk önce kendim çözmeye çalışıyorum yoksa her aldığım hatada buraya atıp cevap beklemek banada kolay gelir fakat forum düzen ve bütünlüğünü sağlamak için bunu yapmıyorum baktım çözemezsem zaten burda soruyorum şifreleme işini çözemedim ve burda sordum hocam

ben kütüphanenin içinde yazanlara bakmıştım direk olarka kütüphaneyi araştırmadım yanlış araştırmışım böyle bir kırıcı uslub kullanmanız beni üzdü açıkcası

Burada endişelenmen gereken en son şey sık soru sormak ve hata mesajlarını paylaşmak. Zaten bunu yaparsan sorununu daha iyi anlarız ve çözüm üretebiliriz.

Nerede hata alıyorsan o kısımda yaz ve hata mesajlarını paylaş ki biz de erken müdahale edebilelim.

Beni de kütüphaneyi araştırmamanız üzdü. Böyle üstün körü bakıp bu olmadı başka, bu olmadı başka diye gidersek size uygun kütüphane bulamayabiliriz.

Ama denediğim ve gösterdiğim üzere kütüphaneyi yükleyebildim.

Belki gözden kaçırıyorsunuzdur yada bir şeyler eksiktir.

Marjinal bir çözüm deneyelim.

Bir sanal makine kurun, üzerine bir linux dağıtımı yükleyin onun üzerinden kütüphaneyi yükleyin Belki örnekli onu da burada yapabiliriz.

1 Beğeni

Özür dilerim python sürümü vermemek benim hatamdı ancak şöyle bir sıkıntı daha var:
python sürümüm sizinki ile aynı yani 3.11.1 tam olarak ve git bash da şu sorunu farkettim:

(işlemi görmeniz için kapama tuşuna bastım) ayrıca bide şuna bakın:

Ek olarak python3 yazınca microsoft store açılıyor ve microsoft storedan en son python yüklediğimde bilgisayarı formatlamak zorunda kaldım

ikisinde de öylece siyah ekranda kalıyor ve dediğim gibi sürüm 3.11.1 ayrıca

Bunu derken direkt 3.11 mi kastettiniz yoksa 3.11.* mı?


derleme yapmaya çalıştığımda şu şekilde hata alıyorum hocam , ben komutu girer girmez vs code u kendisi otomatik açıyor

Debugger olarak vs code ayarlanmış hata olunca vs cod açmış eyvallah.

Yalnız komutu verdiğiniz yer Windows Terminali/ Konsol / CMD ne derseniz orası.

Ben komutlarınızı örneğimde gitbash içerisinde vermenizi istemiştim.

İstersenin adım adım yaptığım kurulum örneğine bir kez daha göz atın.

Gitbash size komut satırından daha esnek bir alan sunar .

Gitbash üzerindeki komutlarınızı görebilir miyim?

Edit:

Bir de madem cmd üzerinde deneyeceksiniz.

Sadece:

pyconcrete

Komutu verip ekran görüntüsü verebilir misiniz?

1 Beğeni

3.11.* kastettim herhangi bir minör versiyonda büyük bir problem olacağını düşünmüyorum.

Yalnız gitbash bize git ile github’dan kodu indirip paketi yüklemek için gerekli bir arayüz neden py yada python komutu verdiniz?

EDIT 1:

Şimdi uzunca açıklamalı bir yazı yazabiliriz.

Bugün benzer bir kütüphane sorunu yaşayan başlıkta detayları var aynısını yazmayacağım buraya.

python a eklemek istediğiniz bazı kitaplıklar python kodu değil C ve C++ kodları içerebiliyor. C ve C++ Kodu içeren bu kütüphaneleri python için çekmeniz/indirmeniz/eklemeniz gerektiğinde bunları önce derlemeniz sonra kurmanız gerekiyor.

Bunun için de sisteminizde bir C /C++ derleyicisi bulunması gerekiyor. Genelde ben Visual studio kullanıyorum ve derleme sorunu yaşamıyorum. Ama bazıları Visual studio kuramıyor yada sadece kendisi kullanacak şekilde / Only Me gibi bir seçenekle kurduğundan düzgün çalışmayabiliyor.

Eğer gitbash kullanırsanız. Size sadece bash’ın size özel bir setini oluşturuyor. Böylece kuramadığınınız C++ kodu içeren kitaplıkları da kurabilme şansınız oluyor.

Gitbash’ın kısa yoluna tıklayıp klasöre git dediğimizde, bir kısaya yola aynı kısayola aynı işlemi tekrarladığımızda asıl klasöre ulaşabiliyoruz.

Şimdi git’in o klasörlerine bakalım:

Görebildiniz mi?

İçinde mingw64 adında bir klasör var.

Size windowsta çalışan bir gcc derleyicisi sunuyor.

Böylece git üzerinden bir kod çektiğinizde ki her çektiğiniz kod python tabanlı değil. Farklı dillerde de derleme ihtiyaçlarınızı karşılamanızı sağlıyor.

Tökezlemenizin nedeni bu.

1 Beğeni

bash den girince derleyebildim hocam , buraya yazarken aynı zamanda chatgptyede yazdım ve .pye yi exeye çeviremiyeceğimi söyledi , fakat pyce ile derlenenen .pye ler exe olabiliyor diye hatırlıyordum

Edit : Benim özür dilerim, yanlış hatırlamışım. Pyce ile derlenmiş .pye dosyaları doğrudan .exe dosyalarına dönüştürülebilir. Pyce, Python betiklerini C++ koduna derlemek ve daha hızlı bir şekilde yürütmek için kullanılan bir araçtır. Pyce ile derlenmiş .pye dosyaları, normal Python betiklerine kıyasla daha hızlı ve daha az bellek tüketir.

Pyce ile derlenmiş bir .pye dosyasını .exe dosyasına dönüştürmek için, pyinstaller veya py2exe gibi bir araç kullanabilirsiniz. Bu araçları kullanarak, .pye dosyasını doğrudan .exe dosyasına dönüştürebilirsiniz.

Özetle, Pyce ile derlenmiş bir .pye dosyasını doğrudan .exe dosyasına dönüştürmek mümkündür, ancak Pyconcrete tarafından şifrelenmiş bir .pye dosyasını doğrudan .exe dosyasına dönüştürmek mümkün değildir. Tekrar yanlış hatırlattığım için özür dilerim.

olarak yazdığını değiştirdi CHATGPT :smiley:

pye dosyasını exe ye çevirmeyin.

Bir main.py dosyası oluşturun.

Dosya, pye dosyasını çağırıp çalıştıracak komutu içersin. main.py dosyanızı exe ye çevirin.

main.exe çalıştığında pye dosyasını çalıştırsın. pye dosyası zaten şifreli bir de üzerine exeye dönüştürmeye gerek yok.

exeye çevirirken daha karmaşıklaştıran 1-2 kütüphane var hocam geçenlerde araştırırken görmüştüm , hem şifreleme hemde böyle build alırken karmaşık bir şekilde build alan bir kütüphane kullansam 2 katı sağlam olur diye düşünüyorum yani gene açılabilir sizin dediğiniz gibi ama ne kadar zorlaştırabiliriz diye uğraşıyorduk ana amacımız . bunun yanında şifreleme üstü exe build alırsam sıkıntılar çıkarmı kodda bilmiyorum deneyip göreceğiz buraya yazacağım aldığım hataları nasıl düzelttiğimide ekleyeceğim sizlerin mesajlarınızıdanda alıntı yaparken tüm konuyu tek bir mesajda dilimin döndüğünce toparlayacağım hakkınızı helal edin seviliyorsunuz

1 Beğeni

Fantaziye gerek var mı bilmiyorum. Exe ye çevirip, sıkıştıran araçlar var. Hiç şifrelemeden de sıkıştırabilir yada sıkıştırarak şifreleyebilirsiniz.

İki konu farklı şey. Bir kodu şifre ile koruma ve bir kodu exe ye çevirmek.

Exe’ye çevrilen bir kodu, sıkıştıran ve aynı zamanda şifreleyen başka araçlar var.

Petite - Win32 Executable Compressor (un4seen.com)

Exe compressorler ve exe crypterlar başka bir konu.

Bizim şu ana kadar uyguladığıız açık python kodunuzu şifreleme metodu.

Ama exe olarak dağıtıp şifreleyeceksek o çok ayrı bir konu. Zaten Exe kodu decompile ediyorsa bırakın yapsın adam.

Ha exe crypt konuşacaksak çarşı karışır. Kimseye yanlışlıkla polimorfic virüs yazdırmayalım durduk yerde.

Uzadı yine özetlersem, kodu exe yaptıktan sonra zaten sıkıştırabilecek ve şifreleyebilecek farklı araçlar var. Şifrelenmiş python kodunu exeye çevirmeye çalışıp üzerine şifrelemeye çalışmak doğru yöntem değil.

1 Beğeni

o exeye çeviren araçların derlediği kodlar onlarda açılabilir sonuçta doğru değilmi hocam ben o yüzden ilk önce kaynak kodunu koruma gibi bir şeyi araştırmaya girdim

bu araçların decompilerları yokmudur hocam

yani exeleri açanlar var hocam açılamayan exeler varmı bilmiyorum ama çoğu exe ye dönüştüren program c# dan bildiğim kadarıyla açılıyor yani bizim şuan yapmış olduğumuz şifreleme sistemi daha stabil bir şey oldu gibi

üstü kapalı konudan bahsederseniz her türlü bilgiye açığım

şöyle düşürsek mantıklı olurmu hocam atıyorum pyinstaller ile elimizdeki .pye dosyasını exeye dönüştürdük kodumuzu açmak isteyen bir arkadaş ilk önce pyinstallerın kendine özel bir yapısı varsa onu çözmeye çalışacak hatta bizim projemizi komple pyinstaller ile derlendiğini düşünüp pyinstaller üzerinden ilerleyecek ve belkide bu yüzden bizim kodlarımza ulaşamayacak uğraşacak yani ben böyle düşündüm baştada exe diye belirtmiştim ama konuştukça yukarıda kaldı konu kaydı galiba

Tam olarak anlayamadım, evet farketmiştim iyi ama farklı dillerde de derleme ihtiyacımı karşılaması nasıl tökezlememi sağlar?

Anlamamışsın çünkü gitbash da py komutu vermişsin. Böyle bir komut vermek için bir arayüz değil.

Tökezlemekten kastettiğim bu gitbash farklı dillerin paketlerini derlemeyi sağlar, pyhon konsolu gibi kullanmamalısın aynı zamanda farklı dillerdeki kütüphaneleri pip ile kurmaya çalışıp kuramamak sebebiyle tökezleme sebebiniz de bu.

pip başka, terminal başka, gitbash başka karıştırırsanız tökezlersiniz. Konu bu.

2 Beğeni

Çalışma zamanı öncesinde şifrelenen bir kod, okunamaması amacıyladır. Bu kodu exe’ye çevirirken her türlü normal bir koda çevrilir sonra exe yapılır. Çünkü şifreli pye dosyanı yorumlayan ikinci bir yorumlayıcı eklemiş oldun, pyconcrete gibi.

Bunu exe içine doğrudan dahil edemezsin.

Yani exe’ye dönüştürürken kodun her türlü açılmalıdır ki, exe kodunu windows tanısın.

Bu nedenle, öncesinde şifrelemek bir kodu derlediğinizde ilave bir güvenlik sağlamaz.

Vardır.

Konudan konuya geçmeyelim, C# kodu yorumlanan bir koddur byte koda dönüşür PE formatında bir exe değildir. Bu nedenle kolaylıkla geri dönüştürülebilir bu aşamada byte kodu da şifreleyen tümleşik bileşenleri de var yine bu da apayrı bir konu.

Zaten üstü kapalı bahsettim. PE dosyasını data segmentine kodunu şifreli olarak yerleştirir. Sonra o kodu bellekte açar ve yürütürsün.

Yani data segmentinde şifreli duran kod, açılarak kod segmentine taşınır ve orada işletilir.

Yukarıda açıkladım. Burada biz sadece py kodunu şifreledik. Exe’ye dönüştürdüğünüzde şifresiz bir exe dosyası olacak.

Yani kod aşamasındaki şifreleme, derleme aşamasına yansımaz.

Derlemek exe ye dönüştürülen dillere dair bir kavramdır.

Bu durumda exe dosyası ya çalışmaz yada çalışsa bile kod artık şifreli değildir. (Denemedim tahmin)

Peki exe mi decompile edebilirler mi? Evet ama doğrudan python koduna dönüşmez.

Peki exe şifrelenir mi?

Evet, kodunuzu şifrelemeden exe’ye çevirin.

Oluşan exe dosyasını, exe comppressor programlarından şifreleme özelliği olan biri ile şifreleyin.

Bu kadar.

Gerisini tartışmamıza gerek yok. Durum bundan ibaret.

2 Beğeni

exe derleme ve şifreleme konusundada bir bilgi eksikliği var gibi hocam başka forumlardada bu konu tartışılmamıştır diye düşünüyorum sizde isterseniz tabiki exe konusunda konuşalım bildiklerinizi bizimle paylaşmak isterseniz çok güzel olur

Soru:

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

Cevap:

Anlaşılıp çalıştırılana kadar 58 Mesaj.

Var yabancı forumlarda gördüm bolca var arayan bulur.

Maalesef altyapınız yetersiz. Bu kadar basit bir konuda bunca mesajla zor ilerledi isek, ki yarısının da anlaşıldığından şüpheliyim.

PE file format anlatmak.

İmkansıza yakın. Önce EXE dosyası nedir, hangi alt birimlerden oluşur, başlık kısmında ne gibi bilgiler vardır. Checksum’ı nasıl yapar. Hangi segmentler vardır, resource segmentinde ne vardır vs. anlatıp, sonra bunlar nasıl şifrelenir onu anlatmaya kalksam burada verem olurum.

Gerek yok.

Bu bilgi de burada eksik kalsın.

Zaten verdiğim anahtar kelimelerle meraklı olan arar bulur çözerdi konuyu.