• 02-07-2016, 01:31:39
    #1
    Malum php yazilimlarimizi bir türlü koruyamiyoruz (zend, ioncube ve buna benzer sistemler) bu nedenle önemli olan functionlari bir sunucuda bulundurup ordan her gerekdiginde cagirmak/kullanmak istiyorum.

    Hazirladigim yazilim herkesin kendi sunucusuna kurulacak ve benim sunucuda önemli functionlar bulunacak ve bunlar sadece gerekdiginde benim sunucudan kullanmasini istiyorum. Yani yazilim indirlmeyecek sadece uzaktaki function lokal'de ki sunucuda calisdirilmasini istiyorum.

    Bu islemi en iyi sekilde nasil yapabilirim?

    Sunuculara özel eklenti veya php config'de ayar yapma ihtimalimiz var o yandan herhangi bir sorun olmaz

    Simdiden tesekkürler
  • 02-07-2016, 06:17:18
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Bu tarz olaylar performans kaybından başka bir şey değildir. Ben tavsiye etmiyorum. Kırılmayacak sistem yoktur. O yüzden hiç gerek yok.
  • 02-07-2016, 20:14:30
    #3
    Yinede nasil yapildigini söyleyebilirseniz sevinirim

    Islemi nekadar zorlasdirabilirsem benim icin kardir. Az performans kayibi olsa benim icin bir sorun yok.
  • 04-07-2016, 12:59:10
    #4
    http://php.net/manual/tr/book.curl.php ile yapabilirsiniz. Fakat bildiğiniz üzere PHP dosyaları HTML dosyaları gibi doğrudan okunur değil. Bu sorunu nasıl aşabilirsiniz bilmiyorum fakat kullanmanız gereken şey cURL olacaktır.

    Yardımcı olabildiysem R10+ verebilirseniz sevinirim.
  • 05-07-2016, 23:31:25
    #5
    muhammedaksam adlı üyeden alıntı: mesajı görüntüle
    http://php.net/manual/tr/book.curl.php ile yapabilirsiniz. Fakat bildiğiniz üzere PHP dosyaları HTML dosyaları gibi doğrudan okunur değil. Bu sorunu nasıl aşabilirsiniz bilmiyorum fakat kullanmanız gereken şey cURL olacaktır.

    Yardımcı olabildiysem R10+ verebilirseniz sevinirim.
    Yarin curl ile bi deneyecegim bakalim istedigim sekilde olacakmi.
    Baska türlü fikri olan varsa ve buraya yazarsa sevinirim
  • 07-07-2016, 15:49:58
    #6
    inanbayram adlı üyeden alıntı: mesajı görüntüle
    Malum php yazilimlarimizi bir türlü koruyamiyoruz (zend, ioncube ve buna benzer sistemler) bu nedenle önemli olan functionlari bir sunucuda bulundurup ordan her gerekdiginde cagirmak/kullanmak istiyorum.

    Hazirladigim yazilim herkesin kendi sunucusuna kurulacak ve benim sunucuda önemli functionlar bulunacak ve bunlar sadece gerekdiginde benim sunucudan kullanmasini istiyorum. Yani yazilim indirlmeyecek sadece uzaktaki function lokal'de ki sunucuda calisdirilmasini istiyorum.

    Bu islemi en iyi sekilde nasil yapabilirim?

    Sunuculara özel eklenti veya php config'de ayar yapma ihtimalimiz var o yandan herhangi bir sorun olmaz

    Simdiden tesekkürler
    Mantığını anlatmak için ufak bir class yazdım.
    Hmac en güçlü şifreleme türlerinden biridir.
    256 bits key ile şifreleme yapılır.
    Ve key bilinmeden kırılması imkansızdır.

    Uzak sunucudan php dosyalarını çekerken hmac ile şifreler, clienttede şifreyi çözersek güzel bir algoritma yapmış oluruz.

    Ancak kötü niyetli kişiler yinede phpnin el verdiği kadar araya gireceklerdir. Ve kırmaya çalışacaklardır, bunun önlemek içinse keyin içine istek gelen (scriptin kurulu oldugu ip adresini) gömerseniz ve o ipyi kontrol ederseniz o ipden başka kimse işlem yapamaz.

    10 dkda yazdım, belki vaktim olursa devam eder daha profesyonel şekilde paylaşabilirim.

    Ayrıca performans kaybı diyen arkadaşlar 2 kb dosyayı çekmenin neresi kayip, bilmiyorsanız lütfen susun. insanlar burada bilgi istiyor. boş laf değil.

    kolay gelsin.
    <?php
    
        class r10_lisans_server
        {
            Private $ROOT_PATH;
            Private $LICENSE_KEY;
    
            public function __construct($fonksiyon)
            {
                header("Content-Type: text/html; charset=utf-8");
                $this->ROOT_PATH = dirname(__FILE__);
                $this->LICENSE_KEY = "Nv15NrhFb98H4pVeGiv9ENB8o2aFQ0Zu";
                switch ($fonksiyon) {
                    case "ilk_function":
                        $this->ilk_function();
                        break;
                }
            }
    
            public function encrypt($code)
            {
                $key = substr(hash('sha256', $this->LICENSE_KEY . $this->LICENSE_KEY), 0, 32);
                $algorithm = MCRYPT_RIJNDAEL_128;
                $mode = MCRYPT_MODE_CBC;
                $ivSize = mcrypt_get_iv_size($algorithm, $mode);
                $iv = mcrypt_create_iv($ivSize, MCRYPT_DEV_URANDOM);
                $ciphertext = $iv . mcrypt_encrypt($algorithm, $this->LICENSE_KEY, $code, $mode, $iv);
                $hmac = hash_hmac('sha256', $ciphertext, $this->LICENSE_KEY);
                return $hmac . $ciphertext;
            }
    
            public function ilk_function()
            {
                $code = "";
                $code .= "[BASLA]\n";
                $code .= "function ilk_function() { echo 'selam'; }";
                $code .= "[BITIR]\n";
                echo $this->encrypt($code);
    
            }
        }
    
        class r10_lisans_client
        {
    
            public function __construct($LICENSE_KEY)
            {
                header("Content-Type: text/html; charset=utf-8");
                $this->LICENSE_KEY = $LICENSE_KEY;
            }
    
            public function decrypt($cipher)
            {
                $key = substr(hash('sha256', $this->LICENSE_KEY . $this->LICENSE_KEY), 0, 32);
                $macSize = 64;
                $hmac = substr($cipher, 0, $macSize);
                $cipher = substr($cipher, $macSize);
    
                $compareHmac = hash_hmac('sha256', $cipher, $this->LICENSE_KEY);
                if ($hmac !== $compareHmac) {
                    return FALSE;
                }
    
                $algorithm = MCRYPT_RIJNDAEL_128;
                $mode = MCRYPT_MODE_CBC;
                $ivSize = mcrypt_get_iv_size($algorithm, $mode);
    
                $iv = substr($cipher, 0, $ivSize);
                $cipher = substr($cipher, $ivSize);
                $plain = mcrypt_decrypt($algorithm, $this->LICENSE_KEY, $cipher, $mode, $iv);
                return rtrim($plain, "\0");
            }
    
            public function ilk_function()
            {
                $code = php_duzelt(file_get_contents("https://site.com/fonksiyonlar.php?fonksiyon=ilk_function"));
                echo $this->decrypt($code);
            }
    
            public function php_duzelt($code)
            {
                return str_replace(array("[BASLA]", "[BITIR]"), array("<?php", "?>"), $code);
            }
        }
    
        $server = new r10_lisans_server($_GET["fonksiyon"]);
        $client = new r10_lisans_client("LISANS ANAHTARI");
  • 07-07-2016, 16:07:05
    #7
    @Ceu; sen bunu bi prod'da dene sonra konuş. bi' şey biliyoruzda söylüyoruz. saçma sapan şeylerle şu insanlara ümit vermeyin. o serveri yaptın, tamam. eee? sen clienti attın. ben o clienti aldım. çata pata ioncube artık meşrebine göre kırdım. e yine aynı yere çıktık? fonksiyonlarını gene gördüm? o kısmı nasıl aşıcan?
  • 07-07-2016, 20:20:18
    #8
    saintx adlı üyeden alıntı: mesajı görüntüle
    @Ceu; sen bunu bi prod'da dene sonra konuş. bi' şey biliyoruzda söylüyoruz. saçma sapan şeylerle şu insanlara ümit vermeyin. o serveri yaptın, tamam. eee? sen clienti attın. ben o clienti aldım. çata pata ioncube artık meşrebine göre kırdım. e yine aynı yere çıktık? fonksiyonlarını gene gördüm? o kısmı nasıl aşıcan?
    Aşarız aşar.. sen kafanı yorma yeğenim..
  • 09-07-2016, 02:07:00
    #9
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Ceu adlı üyeden alıntı: mesajı görüntüle
    Ayrıca performans kaybı diyen arkadaşlar 2 kb dosyayı çekmenin neresi kayip, bilmiyorsanız lütfen susun. insanlar burada bilgi istiyor. boş laf değil.
    <?php
    ...
    
    file_get_contents("https://site.com/fonksiyonlar.php?fonksiyon=ilk_function"));
    ...
    Sadece bu komutun çalışabilmesi için uygulanacak adımlar;

    Kullanılmayan bir port belirlemek, soket oluşturmak, DNS sorgusu, 3 handshake, (https ??? ) ), HTTP header göndermek, uzak sunucudaki web sunucusunun HTTP headerini yorumlaması, gelen method a ve isteğe göre response hazırlaması ve çıktılaması, çıktılanan veriyi localdeki socketin okuması ve socketin kapatılması.

    Sizin veriyi korumak adına yaptığınız işlemleri açıklama zahmetine girmiyorum. Bu tarz koruma yöntemleri kullanılablir değildir.

    <?php Kjabbavd#1qdqd@asdada282m1n

    gibi bir ifadenin sadece sizin için mantıklı bir ifade olmasını istiyorsanız, php tekrar derlemeli ve kendi modülünüzü geliştirmelisiniz. Modül, IP adresinden, statik donanım bilgisine göre onlarca parametreye bağımlı olarak çalıştırılabilir. Kaldı ki bu yöntem bile kırılabilir ve performans problemi oluşturacak durumdadır.