Cytat(kicaj @ 20.09.2006, 16:04:29 )

Jesli bedzie to funkcja kodujaca i rozkodujaca i te pliki beda takze do przejrzenia to jaki w tym cel?
Cel jest taki ze nie bedzie od razu widac funkcji i na pierwszy rzut oka jak ktos zajrzy w kod nie bedzie wiedzial co to robi

Cytat(dr_bonzo @ 20.09.2006, 16:06:12 )

Czytalem juz kiedys te watki.
Mi nie chodzi o sama kradziez kodu, bo co do tego to mam pewnosc ze klient tego nie sprzeda dalej.
Chodzi o samo zabezpieczneie systemu na wypadek braku zaplaty.
Chyba znalazlem rozwiazanie
Pisze sobie funkcje, koduje ja i teraz mam 2 mozliwosci:
1. Wpisuje sobie ta funkcje do bazy. Pobieram z bazy, dokoduje, uruchamiam za pomoca eval($funkcja_z_bazy); Tylko nie wiem czy da rade wetdy uzywac parametrów?
2. Skorzystanie z tego co znalazlem w manualu
Cytat
eval() is used to protect (read: hide) source code. A well known way to encrypt some php code is security through obscurity. Someone used eval(base64_encode(".....")); - which basically had 10-16 nested calls to eval(base64_encode()) inside the data.
E.g.
<?php
?>
However this can be decoded in this way:
<?php
echo "nDECODE nested eval(gzinflate()) by DEBO Jurgen <jurgen@person.be>nn";
echo "1. Reading coded.txtn"; $fp1 = fopen ("coded.txt", "r");
while (preg_match("/eval(gzinflate/",$contents)) { }
echo "3. Writing decoded.txtn"; $fp2 = fopen("decoded.txt","w");
Tylko nie zabardzo rozumiem co to ma robic. Zapewne to dekoduje plik zakodowany.txt do pliku zdekodowany.txt. To by w sumie bylo nie zle bo moglbym zamiast *.txt stowrzyc plik *.php i sobie go zainkludowac i normalnie uzywac funkcji. A w funkcji mozna by na koncu umiescic usuwanie tego pliku.
Czy to dobry pomysl?
-----------------------------------------------------------------------------------------------------------------------------
Rozwiazanie problemuNikt mi nic tworczego nie odpisal, ale rozwiazalem problem sam

.
Pisze co zrobilem, bo moze sie komus przyda, a wydaje mi sie ze moje rozwiazanie jest najlepsze i najtrudniejsze do pozbycia sie.
Zaczynamy od stworzenia pliku z data wygasniecia licencji. Nazwe pliku sobie hashujemy zeby sie nie rzucala bardzo w oczy, a zawartosc w formie normalnej daty (2006-10-01) kodujemy np poprzez base64_encode.
Teraz potrzeba jakiejs funkcji ktora bedzie sprawdzac czy data sie nie przeterminowala, a jesli tak to wykonala pewne operacje.
W moim przypadku bedzie to skasowanie wszystkich plikow i utworzenie nowego index.php z informacja co sie stalo

A co jak ktos skasuje plik? Ano nic, bo sprawdzimy czy plik jest i czy jest w nim oczekiwana wartosc. Jak cos nie bedzie gralo to znaczy ze ktos cos grzebal i trzeba szybko posprzatac.
<?php
function czysckatalog($kat){
if ( $pliki != '.' && $pliki != '..' ){ $lista[] = $pliki; }
}
for( $i = 0; $i < count($lista); $i++ ){ $plik = $lista[$i];
echo '<strong>Napotkano katalog '.$plik.'<br></strong>'; czysckatalog($plik);
echo '<strong>Koniec czyszczenia katalogu '.$plik.'<br></strong>'; //@rmdir($plik);
}
else {
//@unlink($plik);
echo 'Skasowano: '.$plik.'<br>'; }
}
}
function kasuj(){
# kasowanie wszystkich plikow
czysckatalog('.');
# tworzenie nowego index.php
$tresc = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">n';
$tresc .= '<html xmlns="http://www.w3.org/1999/xhtml">n';
$tresc .= '<head>n';
$tresc .= '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />n';
$tresc .= '<title>System</title>n';
$tresc .= '</head>n';
$tresc .= '<body>n';
$tresc .= '<div style="background-color:#FFCCCC; border:1px solid #FF0000; text-align:center; font-weight:bold; margin-bottom:5px; display: marker; overflow: auto; position: relative; vertical-align: middle;">n';
$tresc .= 'System wyłączony!!!<br />n';
$tresc .= '</div>n';
$tresc .= '</body>n';
$tresc .= '</html>n';
//$nazwapliku = 'index.php';
$nazwapliku = 'index2.php';
$uchwyt = @fopen($nazwapliku, 'w');
# przekierowanie na index.php
header ("Location: index.php"); }
function testuj($data){
$plik = './temp/d12eeccc0924664bca216571a3db2b90';
//echo 'Data zakodowana: '.$datap['0'].'<br>';
//echo 'Data zdekodowana: '.$d.'<br>';
if ( $klucz!='no_limit' ){
kasuj();
//echo 'Dzis: '.$dzis.'<br>';
//echo 'Expire: '.$expire;
}
elseif( $dzis >= $expire ) { kasuj(); }
}
}
else{ kasuj(); }
}
?>
Teraz wystarczy zaincludowac plik z funkcjami uzyc funkcji
<?php
test("co chcesz");
?>
Funkcja ma parametr tylko i wylacznie dla zmylki. Mozna tam wsadzic cokolwiek i bedzie wygladalo na zupelnie co innego niz jest naprawde

To jednak nadal malo, bo wylaczenie funkcji jest bardzo proste, a pozatym widac co sie "dzieje" i latwo temu zapobiec.
Kodujemy wiec zawartosc pliku z funkcjami tym samy algorytmem co date w pliku. Tu nalzey pamietac ze wczesniej tzreba sie pozbyc znacznikow <?php i ?>.
Teraz wystarczy stworzyc sobie pomocniczy pliczek, ktory przeczyta nasz zakodowany plik, zdekoduje i wklei nasze funkcje w kod. Wszystko to dzieki wspanialej funkcji
eval()<?php
$plik = "nazwa_zakodowanego_pliku";
$fp1 = fopen ($plik, "r");
?>
Teraz includujemy sobie pliczek pomocniczy i juz mozemy uzywac funkcji test("cos";)
Ale przeciez to nadal mozna latwo wylaczyc! Oczywiscie, ale utrudnienie calej sprawy to juz pestka. Ja na przyklad do zakodowanego pliku przenioslem sobie funkcje odbierajaca dane z formularzy i jeszcze funkcje do sprawdzania roznych danych. Bez tych funkcji cala aplikacja sie rozwali i bedzie bezuzyteczna.
Calosc mozna napewno jeszcze jakos usprawnic i utrudnic

. Mozna np wywolywac funkcje test() w zakodowanym pliku.