login  Naam:   Wachtwoord: 
Registreer je!
 Forum

PHP scripts compilen

Offline nick5556 - 10/09/2010 14:01
Avatar van nick5556PHP beginner Hallo,

Ik wil mijn scripts verkopen aan andere mensen maar om te voorkomen dat deze bewerkt worden. Want als mensen het script gaan bewerken kunnen ze de beveiliging eraf halen en dan toch gratis doorgeven.

Is het mogelijk om PHP scripts te compilen en te zorgen dat het nogsteeds werkt?

Ik gebruik liever geen zend of een ander om te compilen.

13 antwoorden

Gesponsorde links
Offline Koen - 10/09/2010 14:09
Avatar van Koen PHP expert Je kan geen PHP scripts "compilen", maar wat jij bedoelt is wellicht een project coderen zoals bijvoorbeeld met Zend Guard.
Offline nick5556 - 10/09/2010 14:12
Avatar van nick5556 PHP beginner Oke, maar ik gebruik liever geen zend of andere programma's. Is het mogelijk om het te coderen en dan ook weer te decoderen zonder dat dit gekraakt kan worden(ik weet het, niets is waterdicht maar het mag wel zo waterdicht mogelijk gemaakt worden).
Offline Koen - 10/09/2010 14:19
Avatar van Koen PHP expert Je kan iets zoals mij doen: http://www.site...Raadseltje...

Maar dat is zéker niet waterdicht, heb er ongeveer een halfuur over gedaan en het is in ongeveer dezelfde tijd te decoderen (niet gemakkelijk, maar het gaat), probeer zelf maar eens.
Offline Maarten - 10/09/2010 15:45
Avatar van Maarten Erelid En dan nog Koen, als je in een halfuur iets bouwt die het automatisch doet ben je wel vertrokken 

Als je geen "Zend of andere programma's gebruikt" dan gaat het niet, punt 
Offline avdg - 10/09/2010 15:47 (laatste wijziging 10/09/2010 15:48)
Avatar van avdg PHP gevorderde Punt 1: goede beveiliging bestaat niet en je kan het nooit 100% garanderen

Punt 2: php scripts staan op een server en zijn automatisch verborgen tenzij je gekke dingen doet (zoals je eigen code highlighten) of de server onder slecht beheer valt.

Als scripts op een deftige server geplaatst worden is er in principe heel lastig om je code publiek te krijgen. Als je toch zorgen hebt over het publiceren, gebruik dan die zend guard of gelijk wat andere script vertaler, maar weet dat zulke tools een kleine overhead hebben. Als je exteem wilt gaan, gebruik hiphop for php, tool van facebook die opensource op github te verkrijgen zijn (wat eigenlijk dan weer lastiger te hosten is).

Dus je hebt 4 opties:

- Een veilige server pakken die onder goed beheer staat
- 1 of meerdere van de duizenden tools toepassen
- je scripts zo slecht schrijven dat het niet te wijzigen valt
- Gewoon je script publiceren en je niets van aantrekken van eventuele problemen

edit: je kunt het ook oplossen door je scripts lokaal te hosten, dan worden ze nooit gepubliceerd
Offline Koen - 10/09/2010 16:49
Avatar van Koen PHP expert
avdg schreef:
Punt 1: goede beveiliging bestaat niet en je kan het nooit 100% garanderen

Punt 2: php scripts staan op een server en zijn automatisch verborgen tenzij je gekke dingen doet (zoals je eigen code highlighten) of de server onder slecht beheer valt.

Als scripts op een deftige server geplaatst worden is er in principe heel lastig om je code publiek te krijgen. Als je toch zorgen hebt over het publiceren, gebruik dan die zend guard of gelijk wat andere script vertaler, maar weet dat zulke tools een kleine overhead hebben. Als je exteem wilt gaan, gebruik hiphop for php, tool van facebook die opensource op github te verkrijgen zijn (wat eigenlijk dan weer lastiger te hosten is).

Dus je hebt 4 opties:

- Een veilige server pakken die onder goed beheer staat
- 1 of meerdere van de duizenden tools toepassen
- je scripts zo slecht schrijven dat het niet te wijzigen valt
- Gewoon je script publiceren en je niets van aantrekken van eventuele problemen

edit: je kunt het ook oplossen door je scripts lokaal te hosten, dan worden ze nooit gepubliceerd

Daar ben je toch niets mee als je je scripts verkoopt aan iemand anders, je kan die persoon toch niet verplichten om dat script bij jou gehost te hebben, en dan zou je hem dan ook nog eens de toegang tot dat bestand moet ontzeggen als je er zeker van wil zijn dat die niet gaat lopen met jouw code...
Offline cx1213 - 10/09/2010 16:54
Avatar van cx1213 Lid een hash systeem bouwen die de hashes van de bestanden elke dag naar een server stuurt.
Offline Sitebase - 10/09/2010 17:24
Avatar van Sitebase PHP expert Ik heb enkele maanden geleden een script gebouwd waarmee je php code kan encoden en obfuscaten. Je moet maar eens een kijkje nemen.
Als je op live preview klikt kan je eens een test encode doen.

PHP script encoder
Offline Koen - 10/09/2010 17:31
Avatar van Koen PHP expert
Citaat:
In this demo you can only encode scripts smaller than 40 characters.

Hmpff
Offline Gerard - 10/09/2010 18:09
Avatar van Gerard Ouwe rakker Zend Guard
IonCube
Offline Koen - 10/09/2010 18:45
Avatar van Koen PHP expert
WMP schreef:
Ik heb enkele maanden geleden een script gebouwd waarmee je php code kan encoden en obfuscaten. Je moet maar eens een kijkje nemen.
Als je op live preview klikt kan je eens een test encode doen.

PHP script encoder


Post eens een script, eens zien of het gemakkelijk decodeerbaar is. 
Offline Sitebase - 13/09/2010 08:58
Avatar van Sitebase PHP expert Hier is een voorbeeldje van een encoded scriptje:
http://storage.sitebase.be/encoded_test.phps
Bedankt door: svloeberghs
Offline ikkedikke - 15/09/2010 16:01 (laatste wijziging 16/09/2010 17:18)
Avatar van ikkedikke PHP expert Dit script heeft maar 256 verschillende sleutels... niet echt tactisch.

Wellicht kan je iets verzinnen wat meer sleutels heeft.

EDIT:
Dit werkt met een 3-bytes sleutel.
  1. <?php
  2. function encryptIt($sString,$iKey) {
  3. $iKey = $iKey % pow(256,3); // 3-bytes encryptie, bij 4 bytes is de kans op integer overflow erg groot.
  4. if($iKey < pow(256,2)) {
  5. trigger_error('encryptIt:: Gekozen key is niet groot genoeg!<br>Hierdoor kan de gecodeerde tekst overeenkomsten vertonen met de originele tekst.',E_USER_WARNING);
  6. }
  7. $sNextPart = substr($sString,0,3);
  8.  
  9. if(strlen($sNextPart) < 3) {
  10. $sPaddingChar = chr($iKey);
  11. $sNextPart = str_pad($sNextPart,3,$sPaddingChar,STR_PAD_RIGHT);
  12. }
  13. $iNextPartValue = ord(substr($sNextPart,0,1))*pow(256,2)+ // iNextPart is een getal in [0,(256^3-1)]
  14. ord(substr($sNextPart,1,1))*pow(256,1)+
  15. ord(substr($sNextPart,2,1));
  16.  
  17. $iCrypt = $iNextPartValue+$iKey; // iCrypt is een getal in [0,2*(256^3-1)]
  18. $iCrypt = $iCrypt%pow(256,3); // iCrypt is een getal in [0, (256^3-1)]
  19.  
  20. $iACrypt = $iCrypt % 256; // Eerste karakter
  21. $iBCrypt = ($iCrypt - $iACrypt) % 65536/256;
  22. $iCCrypt = ($iCrypt - $iACrypt - $iBCrypt) % 16777216/65536;
  23.  
  24. $sCrypt = chr($iCCrypt).chr($iBCrypt).chr($iACrypt);
  25. if(strlen($sString)>3) {
  26. $sReturn = $sCrypt.encryptIt(substr($sString,3),$iKey);
  27. } else {
  28. $sReturn = $sCrypt;
  29. }
  30. return $sReturn;
  31. }
  32. function decryptIt($sCrypt,$iKey) {
  33. $iKey = (int) $iKey % pow(256,3); // 3-bytes encryptie, bij 4 bytes is de kans op integer overflow erg groot.
  34.  
  35. $sNextPart = substr($sCrypt,0,3);
  36.  
  37. if(strlen($sNextPart) < 3) {
  38. trigger_error('decryptIt:: Encrypted message might be damaged.',E_USER_ERROR);
  39. }
  40. $iNextPartValue = ord(substr($sNextPart,0,1))*pow(256,2)+
  41. ord(substr($sNextPart,1,1))*pow(256,1)+
  42. ord(substr($sNextPart,2,1));
  43.  
  44. $iTrue = ($iNextPartValue-$iKey+pow(256,3))%pow(256,3);
  45.  
  46. $iATrue = $iTrue % 256;
  47. $iBTrue = ($iTrue - $iATrue) % 65536 / 256 ;
  48. $iCTrue = ($iTrue - $iATrue - $iBTrue ) % 16777216 / 65536;
  49. $sTrue = chr($iCTrue).chr($iBTrue).chr($iATrue);
  50. if(strlen($sCrypt)>3) {
  51. $sReturn = $sTrue.decryptIt(substr($sCrypt,3),$iKey);
  52. } else {
  53. $sReturn = $sTrue;
  54. while(substr($sReturn,-1) == chr($iKey)) {
  55. $sReturn = substr($sReturn,0,-1);
  56. }
  57. }
  58. return $sReturn;
  59. }
  60. $sTestString = '!!!AAAAABABBA';
  61.  
  62. ?>
  63. <pre>
  64. EcryptIt: Encrypting "<?php echo $sTestString ?>"
  65. Met sleutel: 146*256^2+234*256+23 = 9628183
  66. Versleuteld:<?php
  67. $sCrypt = encryptIt($sTestString,9628183);
  68. echo $sCrypt;
  69. echo ' ('.ord(substr($sCrypt,0,1)).', '.ord(substr($sCrypt,1,1)).', '.ord(substr($sCrypt,2,1)).')';
  70. ?>
  71.  
  72.  
  73. DecryptIt: Decrypting <?php echo $sCrypt?>
  74.  
  75. Met sleutel: 9628183
  76. Originele boodschap:
  77. <?php
  78. echo decryptIt($sCrypt,9628183);
  79. ?>
  80.  
  81.  
  82. Decryptit: Decrypting <?php echo $sCrypt?>
  83.  
  84. Met sleutel: 9628126 (Foute sleute);
  85. Boodschap:<?php
  86. echo decryptIt($sCrypt,9628126);
  87. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.212s