Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Кодирование php фала (https://forum.antichat.xyz/showthread.php?t=126971)

Divan 25.06.2009 23:10

Кодирование php фала
 
Привет всем , у меня тако вопрос , я видел очень много тем как раскадировать данный материал
PHP код:

<?php // This file is protected by copyright law and provided under license. Reverse engineering of this file is strictly prohibited.
$OOO0O0O00=__FILE__;$O00O00O00=__LINE__;$OO00O0000=4564;eval((base64_decode('JE8wMDBPME8wMD1mb3BlbigkT09PME8wTzAwLCdyYicpO3doaWxlKC0tJE8wME8wME8wMClmZ2V0cygkTzAwME8wTzAwLDEwMjQpO2ZnZXRzKCRPMDAwTzBPMDAsNDA5Nik7JE9PMDBPMDBPMD0oYmFzZTY0X2RlY29kZShzdHJ0cihmcmVhZCgkTzAwME8wTzAwLDM3MiksJ29IK0F0SnJhNU9mZFhRSVAxZXVVRXlHVjhSRjA3Qlo5a3FtM3pMS3hXRGIyaFlsU3Bjbi9pNHdqTU5zZzZUdkM9JywnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLycpKSk7ZXZhbCgkT08wME8wME8wKTs=')));return;?>
OtTPXAHPXAHPXA4L7KyxVjOL7rcq8wEWO4T9ezLXeyT9OnpmOn5lOtTPU/HPXt6pX+MmOn5hfrOq7wEwQJTzRGQSRrEW7jenBa5WRxOL8G1WOt6pXAHPXt6pX+pzUi6pXt6pXAopfupx0ik21Vef7Kt4UwRzGJJOEAJLByyJZEBGIJOrXAB+G3L27Gi/ZzcdZJBt83OWGGcU7rQldwziBwDQUxQxQLew1/ixd+BH1zQteERautLfuicQUzT1EyOUyJyGy4qRGKJm8weLRKBWFGD20r4l0jHc7xQiBVRjZaLsXAtnX/14Q37MIuhSOnzDfuzgRKQh0jQLf+ePXAopU/HPXAoDIwyw8GpWOtTPXAHPXAHPX+zg5rLl8wc4RrEk5xQLBaypdxHW7+5gBVQL7LTh0wBD0mkDI/YL8wqS5+7xIwLl8wc4RrEk5KqL8GeL7mNpFaomI/YL8wqS5+7xIpDp7KLlB+omPrQL0xeL73M6FAXvOrcq0KB0BrLi0ry9BVHm8GcBP+TWX/MmIpWz734xRVe9BrJm0ry98VOnf+ei8GOhRVQ0BJT47wyn74ihOJTUeyQUuETIGjyDRJih5xRq0ayi8u5DIpWz0GLl8wJ/FrOq0A4xRVe97jL/BKJhf+O47wyn74TYFGN38VQW8KJh5mzg+meYFGN37KOq0A4xRVe97jL/BKJhf+O47wyn74TYFGN37KOq0+5DIpDDRmoWOJTaeye0BVHm8GcBfuHg+KLK5+kzViBJyJYqBaLpRyiTPu5mfuHg5+e9eiyEGwJiZVHLVUicIjifFG8kf+kzViBJyJYq0GT40xeBPAip5rTn5ryM8wqq0KBL8wJ/F+kzViBJyJYq0GT40xeBd+enGjRq0ayi8yih5xHqZVQN74Tj0VWmd+OSBV1mfUpz0GLl8wJ/FrOq0+zk8GNz5+e9eiyEGwJiZVHLVUiTXuzkZnozViBJyJYq0GT40xeBPueYFGN38VQW8KJhIjifRGc/RGLK5+kWOJTaeye08G4SBGNiVUpTX+HS7mozViBJyJYq0GT40xeBP+eYFGN

А вот как так же кодировать ??? допустим у меня есть php фалы и мне из также нужно закадировать чтоб некто немог посмотреть оригинальный код ...

Krist_ALL 25.06.2009 23:19

PHP код:

$O000O0O00=fopen($OOO0O0O00,'rb');while(--$O00O00O00)fgets($O000O0O00,1024);fgets($O000O0O00,4096);$OO00O00O0=(base64_decode(strtr(fread($O000O0O00,372),'oH+AtJra5OfdXQIP1euUEyGV8RF07BZ9kqm3zLKxWDb2hYlSpcn/i4wjMNsg6TvC=','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/')));eval($OO00O00O0); 

это можно раскодировать

кодируется так eval(base64_decode(x)); где х это base64_encode(твой код);

чтобы норм зашифровать юзай ZEND OPTIMIZER.

d_x 25.06.2009 23:26

Я примерно год назад писал расшифровщик для такого, про него забыли)
В этом тексте зашифрован такой кусок:
PHP код:

include "setup.php";user_login();;echo '';include "header.php";;echo '';
print 
"<center><h3>$lang[title_upbal]</h3>";
$r=get_table_arr($tables[t_users],$_SESSION[uid],"valuta");
$mincashbal=get_sysval("users_mincashbal");
$mincrbal=get_sysval("users_mincrbal");
if (
$_GET[upbal]) {
if (
$_GET[atype]=="") { $_GET[atype]=1;}
if ((
$_GET[amount]<=or exchangecash($_GET[amount],$r[valuta],"paysys_wmz","out")<$mincashbal) and $_GET[atype]==1) { $_GET[amount]=$mincashbal;}
elseif ((
$_GET[amount]<=or $_GET[amount]<$min 

Еще раз мой универсальный расшифровщик для файлов, зашифрованных таким образом:
PHP код:

<?php
$file
='lol.php'//file to decrypt


$f=file_get_contents($file);

preg_match("/base64_decode\('([a-zA-Z0-9\+=\/]+)'\)\)/isU",$f,$m);
if(!isset(
$m[1]))
  die(
'Couldnot decrypt.');

preg_match('/__LINE__;\$(.+)=(\d+);/isU',$f,$m2);
if(!isset(
$m2[1]) || !isset($m2[2]))
  die(
'Couldnot decrypt.');

eval(
'$'.$m2[1].'='.$m2[2].';');


$code1=base64_decode($m[1]);

preg_match("/base64_decode\(strtr\((.+)\);eval/isU",$code1,$m);
if(!isset(
$m[1]))
  die(
'Couldnot decrypt.');



$code2='base64_decode(strtr('.$m[1];

$code2='$code3='.preg_replace('/fread\(\$(.+),/isU',"fread(\$f,",$code2).';';

$f=fopen($file,'r');
if(!
$f)
  die(
'Error opening file');

while(!
feof($f))
{
  
$txt=fgets($f,2);

  if(
$txt=='?')
  {
    if(
fgets($f,2)=='>')
      break;
  }
}

fgets($f,3);

eval(
$code2);

$code4=preg_replace('/fread\(\$(.+),/isU',"fread(\$f,",$code3);

preg_match("/base64_decode\(strtr\((.+)\)\);fclose\(/isU",$code4,$m);
if(!isset(
$m[1]))
  die(
'Couldnot decrypt.');

$code5='$code6=base64_decode(strtr('.$m[1].';';

eval(
$code5);

fclose($f);

print 
trim($code6);
?>


Krist_ALL 25.06.2009 23:29

у ТСа самое простое шифрование)

е ченить по серьезнее штатными средствами?

сморел d_x твой расшифровщик, ну и наворотил ты)) понил на 60% - общий смысл понятен.

d_x 25.06.2009 23:31

Там не банальное base64+eval, там еще чтение своего же файла, еще несколько base64, наворочено достаточно, не помню уже конкретно.

Krist_ALL 25.06.2009 23:35

всеравно это легко расшифруемо... я недавно думал как мона зашифровать ченить..разные вещи - шифрование и обфускация. в данном случае больше обфускация $O000O0O00=fopen($OOO0O0O00,'rb');while(--$O00O00O00)fgets($O00.. итд.


думаю может ченить поинтереснее есть...


мона еще pack()

Divan 25.06.2009 23:58

Спасибо ребята за ответы ! но мне нужно как зашефровать также : )

d_x 26.06.2009 00:02

А смысл теперь шифровать также, если всё элементарно расшифровывается? Там даже обфускация исходного скрипта не производится.

Divan 26.06.2009 00:05

xM.... d_x а как получше шефровать ?

d_x 26.06.2009 00:07

PHP нет смысла шифровать, в любом случае исходный код получить можно. Если только что посложнее, например, Zend, хотя он тоже снимается. Можно обфусцировать код, т.е. сделать его трудночитаемым.

Divan 26.06.2009 00:10

ну зенд проблемы шифровать нету , и для него на сервере должно стоять програмное обиспичение ... а как обфусцировать код ?

d_x 26.06.2009 00:21

Я для себя свой обфускатор писал ( http://kaimi.ru/2009/03/php-obfuscator-13-extended/ ), хотя много других есть.

Divan 26.06.2009 01:38

Спасибо ! но всёже непомогло ((

Pashkela 26.06.2009 01:55

Цитата:

Сообщение от d_x
PHP нет смысла шифровать, в любом случае исходный код получить можно. Если только что посложнее, например, Zend, хотя он тоже снимается. Можно обфусцировать код, т.е. сделать его трудночитаемым.

не совсем согласен, 1,5 года назад купил покер, есть ключ+лицензия - отдельно от кода, не в нём т.е., закинул грину одному - хрен там, никто пока не справился. Вывод - не паблик ключ шифровки, в отдельном файле

ЗЫЖ Сам ключ + лицензия тоже чем-то зашифрованы

Вот пример шифровки, которую вряд ли расшифруешь, если неизвестны параметры расшифровки:

Код:

https://forum.antichat.ru/showpost.php?p=1179471&postcount=716

cren 26.06.2009 02:07

Помоему нет смысла в этом элементарном шифровании, уже развелось много сервисов онлайн которые это расшифровывают

Pashkela 26.06.2009 02:33

))))

Расшифруй это:

PHP код:

 e<co?han'tcaiu t-r  zelzzlz!zz!!z!3?'>1


Gifts 27.06.2009 13:43

Pashkela Что мешает получить этот самый файл ключа, если он доступен ПХП для чтения?

И второе - ваша шифровка взламывается тривиальным образом при возможности подать произвольный текст на вход кодера. И не слишком тривиальным образом при известном характере закодированной последовательности (например если это код ПХП, текст, и т.д.)

d_x 27.06.2009 13:51

Цитата:

Pashkela Что мешает получить этот самый файл ключа, если он доступен ПХП для чтения?
Ну если ключ шифрования вроде RSA выдается человеку только при покупке товара, то скрипт уже никак не расшифровать, не купив его.

Gifts 27.06.2009 14:05

d_x Для хороших систем с открытым ключом - естественно. Для данного конкретного шифра перестановки - все просто.

Плюс - в данном случае имеется ввиду ключ для дешифровки, иначе зачем нам скрипты, которые мы не можем использовать? То опять таки можно декодировать.

З.Ы, Шифрование в пределах ПХП, без учета надстроек типа IonCube и Zend

astrologer 27.06.2009 16:44

Цитата:

Сообщение от Pashkela
))))

Расшифруй это:

PHP код:

 e<co?han'tcaiu t-r  zelzzlz!zz!!z!3?'>1


Код:

<? echo 'anticat - rullezzzzzzz!!!!1'; ?>

Pashkela 27.06.2009 17:42

antichat только:))) И без единички

astrologer 27.06.2009 17:51

Цитата:

Сообщение от Pashkela
antichat только:))) И без единички

Можно точные параметры для расшифровки?

Pashkela 27.06.2009 19:05

к сожалению мусор и блокоделение утеряны, т.к. было сделано на один разочек. Восстановить невозможно

astrologer 27.06.2009 21:03

Цитата:

Сообщение от Pashkela
к сожалению мусор и блокоделение утеряны, т.к. было сделано на один разочек. Восстановить невозможно

Да ну. У этого алгоритма очень небольшое множество ключей (8 из которых дают снова исходный текст). Мусор роли практически не играет. После полного перебора (т.е. шифрования теперь уже известного исходного текста со всеми возможными ключами) так и не получился шифр-текст, приведенный Pashkel'ой.

Наверное, автор решил подправить результаты работы алгоритма, чтобы он выглядел надежнее :)

yaws 13.08.2009 13:00

Здравствуте.
Интересует какая кодировка используется при кодидировании номеров деталей на сайте. http://www.t-parts.ru/trade/search ( незнаю в правилах не прочитал можно ли давать ссылки на сайты)

Pashkela 13.08.2009 13:50

Цитата:

Сообщение от astrologer
Да ну. У этого алгоритма очень небольшое множество ключей (8 из которых дают снова исходный текст). Мусор роли практически не играет. После полного перебора (т.е. шифрования теперь уже известного исходного текста со всеми возможными ключами) так и не получился шифр-текст, приведенный Pashkel'ой.

Наверное, автор решил подправить результаты работы алгоритма, чтобы он выглядел надежнее :)

Ну ок:)) Вот сейчас сохранил все ключи и мусор, расшифруй:

Код:

rge ixfwici crarkee ngw eentranio
причем выбран далеко не самый сложный метод шифровки.

Велемир 13.08.2009 14:15

Э,а как расшифровывать вообще )

Pashkela 13.08.2009 14:23

немного изменил алгоритм дешифровки, чтобы работал более корректно практически во всех случаях (вроде бы). Вот пример скрипта, где сразу и шифровка и дешифровка:

PHP код:

<pre>
<?php  
$slov 
'корректно работает со словами по отдельности и текстом в частности'// Слово для шифрования (или текст) 
$bl 8// Длина блока, на которые делим слово 
$ran 'бямпуент'// Мусор, который добавляем, если при делении слова получился кусок меньше длины блока 
$key '38247165'// Ключ перестановки (в пределах длины блока)
$shifr_slov encode($slov,$bl,$ran,$key);
echo 
"Пример шифрования\n";
echo 
"Слово < $slov >\n";
echo 
"Зашифрованное слово < $shifr_slov >\n";

function 
encode($slovo,$blog,$rand,$alg) {
 
$res2 str_split($alg);
 for (
$i=0;$i<count($res2);$i++) $res2[$i]--;
 
$res str_split($slovo,$blog);
 for (
$i=0;$i<count($res);$i++) {
  if (
strlen($res[$i])<$blog$res[$i] = $res[$i].$rand;
 }
 for (
$i=0;$i<count($res);$i++) $res1[] = str_split($res[$i]);
 for (
$i=0;$i<count($res1);$i++) {
   for (
$j=0;$j<count($res1[0]);$j++) {
      
$b $res2[$j];
      
$hash.=$res1[$i][$b];
   }   
 }
return 
$hash;
}


###########################################
echo "\n\n\n\n\n";
echo 
"Пример декодирования\n";

$slov $shifr_slov// Слово для расшифровки (или текст)
//$bl = 4; // Длина блока, на которые делим слово
//$ran = 'ос'; // Мусор, который добавляем, если при делении слова получился кусок меньше длины блока
//$key = '3124'; // Ключ перестановки (в пределах длины блока)

echo "Зашифрованное слово < $slov >\n";
echo 
"Расшифрованное слово < ".decode($slov,$bl,$ran,$key) . " >\n";


function 
decode($slovo,$blog,$rand,$alg) {
    
$buff ''
    
$res2 str_split($alg);
    for (
$i=0;$i<count($res2);$i++) $res2[$i]--;
    for (
$i=0;$i<count($res2);$i++) {
       
$c $res2[$i];
       
$res3[$c] =$i;
    }
    
$res str_split($slovo,$blog);
    for (
$i=0;$i<count($res);$i++) $res1[] = str_split($res[$i]);
    for (
$i=0;$i<count($res1);$i++) {
      for (
$j=0;$j<count($res1[0]);$j++) {
          
$b $res3[$j];
          
$hash.=$res1[$i][$b];
      }   
    }
    
$hash str_replace($rand,'',$hash);
    for (
$i=strlen($rand);$i>0;$i--) {
       
$buff=substr($rand,0,$i);
       if (
strpos($hash,$buff)) { 
          
$hash str_replace($buff,'',$hash);
          
$buff '';
          
$i=0
       }          
    } 
    return 
$hash;
}
?>
</pre>

корректно работает со словами по отдельности и текстом в частности (правда при достаточной длине мусора, чтобы было как можно меньше совпадений в мусоре (в слогах) и кодируемом/декодируемом тексте)

т.е. имеет смысл при длине блока и мусора от 4-х единиц

ЗЫЖ Пост подправил, привел более интересный пример, включая совпадения букв мусора с буквами с кодируемом тексте

т.е. то, что выше, превращает

"корректно работает со словами по отдельности и текстом в частности"

в


"рнортккера атооб лтссе оаовмпо итнодь леттси ои свкт емоасчсо нтбеияутпм"


и обратно.

На основе этого можно написать нехилый такой icq-клиент, для шифрованной переписки, что и было у меня в планах, но пока руки не доходят:)

altblitz 13.08.2009 17:52

Pashkela,
> $hash.=$res1[$i][$b];
> $res2 = str_split($alg);

[$b] - переменная?
($alg) - алго шифрования(скорее нет ..)?

PS: мне проще под GCC отладить пока )

astrologer 13.08.2009 19:05

Цитата:

Сообщение от Pashkela
Ну ок:)) Вот сейчас сохранил все ключи и мусор, расшифруй:

Код:

rge ixfwici crarkee ngw eentranio
причем выбран далеко не самый сложный метод шифровки.

Три ключа дают правильный ответ, что ещё раз показывает ненадёжность алгоритма:
Код:

ключ      исходный текст
312        gerix wifi cracker new generation
312645    gerix wifi cracker new generation
312645978  gerix wifi cracker new generation


Pashkela 13.08.2009 19:16

класс!!!!! Умница. Твой алгоритм расшифровки даже спрашивать не буду.

Если расшифруешь это - сам признаю, что метод - фекалька:)

Код:

оарсжодтлоезрнат чеыпй ец рн-т ооеэ осрпаивом
тут посильнее постарался зашифровать:))

Gifts 13.08.2009 19:30

Pashkela Тут даже проще чем в прошлом примере, потому что есть больше информации для атаки по исходному тексту

Код:

714295836 = астролоджер зачотный перец - это неоспоримо

Pashkela 13.08.2009 19:36

ыыыыыыы)))) Всё, сдаюсь. Расшифровка выше всё сказала

Но это у вас есть функция дешифровки перед глазами, это имеет решающее значение, нет?:)

Gifts 13.08.2009 19:48

Pashkela Ни один алгоритм, секретность которого зависит от секретности самого алгоритма не является надежным. (с)

Плюс твой алгоритм блочный и простой перестановки - так что не суть важно как именно перемешивается текст, главное знать приблизительную длину ключа и исходный текст (если быть точным - часть сообщения и/или язык написания)

Pashkela 13.08.2009 19:50

Хорошо. Ушел долго думать. Возможно на днях выдам еще что-нибудь обратимое, но функцию декодирования показывать не буду, согласны на такой эксперимент?

2 Gifts & 2 astrologer

astrologer 13.08.2009 19:55

Цитата:

Сообщение от Pashkela
ыыыыыыы)))) Всё, сдаюсь. Расшифровка выше всё сказала

Но это у вас есть функция дешифровки перед глазами, это имеет решающее значение, нет?:)

Нет.
Во-первых, безопасность системы не должна основываться на неизвестности алгоритма - это security through obscurity. Напротив, нужно предполагать, что потенциальному взломщику известно всё, кроме ключа.
Во-вторых, тот факт, что в шифр-тексте сохранена частота букв языка исходного текста, позволяет сделать предположения об используемом алгоритме.

Метод расшифровки очевидный - расшифровка всеми возможными ключами и проверка на осмысленность.

Цитата:

главное знать приблизительную длину ключа
btw, длина шифра кратна длине ключа


Время: 18:05