Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
Скрипт защиты perl кода от хостеров |

15.06.2006, 03:21
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
Скрипт защиты perl кода от хостеров
В правилах хостинга бывает написано чтоб пользователи не размищяли шэлы, не проверенные - не защищённые скрипты, proxy скрипты, а также файлы, которые могут повредить системе.
Это значит если я залью шэл, а они его найдут и в лучшем случае они его удалят, а в худшем могут не только распрощаться со своим акаунтом, но неизвестно что ещё.
Но если админы не понимают, как работает программа, а также она не похожа ни на один из известных шэлов, зничит им и предъявить нечего. Для этого люди разработали скрипты - языки программирования с открытым кодом, это очень облегчило работу админов.
Но ведь интересно, что же на этом сервере. И тут я решил усложнить их работу вплоть до невозможности. К примеру как вы думаете что делает ниже приведённый скрипт.
PHP код:
#!/usr/bin/perl
use MIME::Base64;$data='
eqt4m4FpjbKcmWqblItprJp/j6mTc6OrmKOjrZ1zcpuEZm6rm3+PpZV1ZGSajnmkiJlzYo2MnWaD
a3ujiomfqY19bJubmXppdqKDa0GbbIKdlIabo5B+pLJ6qp1qd6KMa5mRgWg8
';eval MIME::Base64::decode('
CigkcGFzcyk9JEVOVnsiSFRUUF9DT09LSUUifT1+L3Bhc3NcPShbXjtdKikvaTskcGw9bGVuZ3Ro
KCRwYXNzKTskZGF0YT1NSU1FOjpCYXNlNjQ6OmRlY29kZSgkZGF0YSk7CiRkbD1sZW5ndGgoJGRh
dGEpO2lmKCgkcGw+MCkmJigkcGw8JGRsLzIpKXtteSR4ZHRhO2ZvciRuKDAuLiRkbC0xKXsKJHhk
dGEuPXBhY2soIkMiLCh1bnBhY2soIkMiLHN1YnN0cigkZGF0YSwkbiwxKSktdW5wYWNrKCJDIixz
dWJzdHIoJHBhc3MsJG4lJHBsLDEpKSklMjU1KX0KaWYoJHhkdGEhfi9bXDAuLlwuOi4uQFsuLmB7
Li5ceGZmXSsvKXtldmFsIE1JTUU6OkJhc2U2NDo6ZGVjb2RlKCR4ZHRhKTtleGl0O30KfXByaW50
ICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cblxuV3JvbmcgcGFzc3dvcmQiO2V4aXQ7
');
ну типа ивалируются закомпресированнозабэйсин ные данные, а на самом деле это вот такая програмка
PHP код:
#! /usr/bin/perl
print "Content-type: text/plain\n\n";
system('dir');
exit;
результат, мы получаем содержимое текущего каталога. На первый взгляд можно сказать остаётся только расшифровать и раздать эти строки как и делает эта программа, допустим они это сделали
PHP код:
#!/usr/bin/perl
use MIME::Base64;use Compress::Zlib;$data='
qc4n4KmDL2lH23sB5wGBQm5hhKZA3X+mYV6GBwdZfqOpAUFq6WSGoUA15UFCiFrUqy1kzz/WV2hD
tMViPcT1X8fJqWKDbeS88MfCqeHwuTp87tCH50ladC3sdLzwtT9BiZTDneoyTgJYPg==
'; ($pass)=$ENV{"HTTP_COOKIE"}=~/pass\=([^;]*)/i;$pl=length($pass);$data=MIME::Base64::decode($data);
$dl=length($data);if(($pl>0)&&($pl<$dl/2)){my$xdta;for$n(0..$dl-1){
$xdta.=pack("C",(unpack("C",substr($data,$n,1))-unpack("C",substr($pass,$n%$pl,1)))%255)}
if($xdta!~/[\0..\.:..@[..`{..\xff]+/){eval MIME::Base64::decode($xdta);exit;}
}print "Content-Type: text/plain\n\nWrong password";exit;
Вот теперь становиться понятно что для полной расшифровки нам потребуется пароль, но дажэ если он это понял, он ведь ничего не может предявить, тат как я просто очень хорошо защитил свою программу, как и было написано в договоре. Им остаётся только надеяться что это безопасная программа так как они не понимают как она работает.
Как же этого добиться? Я написал две программы, для зашифровки этим способом и вот они
PHP код:
#!/usr/bin/perl
use MIME::Base64;my$file=shift;my$pass=shift;
open(IN,"<$file")||die'ErrorOpenning';read(IN,my$data,-s$file);close(IN);
$data=MIME::Base64::encode($data);my$pl=length($pass);my$dl=length($data);my$xdta;my$n;
for$n(0..$dl-1){$xdta.=pack("C",(unpack("C",substr($data,$n,1))+unpack("C",substr($pass,$n%$pl,1)))%255)}
$data=MIME::Base64::encode($xdta);$prog=MIME::Base64::encode('
($pass)=$ENV{"HTTP_COOKIE"}=~/pass\=([^;]*)/i;$pl=length($pass);$data=MIME::Base64::decode($data);
$dl=length($data);if(($pl>0)&&($pl<$dl/2)){my$xdta;for$n(0..$dl-1){
$xdta.=pack("C",(unpack("C",substr($data,$n,1))-unpack("C",substr($pass,$n%$pl,1)))%255)}
if($xdta!~/[\0..\.:..@[..`{..\xff]+/){eval MIME::Base64::decode($xdta);exit;}
}print "'."Content-Type: text/plain\\n\\nWrong password\";exit;");
$data="#!/usr/bin/perl\nuse MIME::Base64;\$data='\n$data';eval MIME::Base64::decode('\n$prog');";
open(OUT,">_$file")||die'ErrorSaving';print(OUT$data);close(OUT);
PHP код:
#!/usr/bin/perl
use MIME::Base64;use Compress::Zlib;my$file=shift;my$pass=shift;
open(IN,"<$file")||die'ErrorOpenning';read(IN,my$data,-s$file);close(IN);
$data=compress(MIME::Base64::encode($data));my$pl=length($pass);my$dl=length($data);my$xdta;my$n;
for$n(0..$dl-1){$xdta.=pack("C",(unpack("C",substr($data,$n,1))+unpack("C",substr($pass,$n%$pl,1)))%255)}
$data=MIME::Base64::encode($xdta);$prog=MIME::Base64::encode(compress('
($pass)=$ENV{"HTTP_COOKIE"}=~/pass\=([^;]*)/i;$pl=length($pass);$data=MIME::Base64::decode($data);
$dl=length($data);if(($pl>0)&&($pl<$dl/2)){my$xdta;for$n(0..$dl-1){
$xdta.=pack("C",(unpack("C",substr($data,$n,1))-unpack("C",substr($pass,$n%$pl,1)))%255)}
$xdta=uncompress($xdta);if($xdta!~/[\0..\.:..@[..`{..\xff]+/){eval MIME::Base64::decode($xdta);exit;}
}print "'."Content-Type: text/plain\\n\\nWrong password\";exit;"));
$data="#!/usr/bin/perl\nuse MIME::Base64;use Compress::Zlib;\$data='\n$data';eval uncompress(MIME::Base64::decode('\n$prog'));";
open(OUT,">_$file")||die'ErrorSaving';print(OUT$data);close(OUT);
Первая не использует gzip сжатие так как это медтеннее и не везде поддержуется, а результатом второй становятся очень маленькие файлы. Первым параметром даётся имя шифруемого файла, а вторым пароль.
Как же запустить результат работы этих программ?
Нужно каким небудь скриптом добавить в Куки в переменную pass тот пароль, который довали при зашифровке, например таким
PHP код:
#!/usr/bin/perl
print "Set-Cookie: pass=1234567890\nContent-Type: text/plain\n\n";
Ну, или придумать свою собственную авторизацию.
Учитуя, что форум вставляет пробелы, а их найти в этом страшном тексте очень сложно, я забэйсил оби, держите.
Код:
IyEvdXNyL2Jpbi9wZXJsIAp1c2UgTUlNRTo6QmFzZTY0O215JGZpbGU9c2hpZnQ7bXkkcGFzcz1z
aGlmdDsKb3BlbihJTiwiPCRmaWxlIil8fGRpZSdFcnJvck9wZW5uaW5nJztyZWFkKElOLG15JGRh
dGEsLXMkZmlsZSk7Y2xvc2UoSU4pOwokZGF0YT1NSU1FOjpCYXNlNjQ6OmVuY29kZSgkZGF0YSk7
bXkkcGw9bGVuZ3RoKCRwYXNzKTtteSRkbD1sZW5ndGgoJGRhdGEpO215JHhkdGE7bXkkbjsKZm9y
JG4oMC4uJGRsLTEpeyR4ZHRhLj1wYWNrKCJDIiwodW5wYWNrKCJDIixzdWJzdHIoJGRhdGEsJG4s
MSkpK3VucGFjaygiQyIsc3Vic3RyKCRwYXNzLCRuJSRwbCwxKSkpJTI1NSl9CiRkYXRhPU1JTUU6
OkJhc2U2NDo6ZW5jb2RlKCR4ZHRhKTskcHJvZz1NSU1FOjpCYXNlNjQ6OmVuY29kZSgnCigkcGFz
cyk9JEVOVnsiSFRUUF9DT09LSUUifT1+L3Bhc3NcPShbXjtdKikvaTskcGw9bGVuZ3RoKCRwYXNz
KTskZGF0YT1NSU1FOjpCYXNlNjQ6OmRlY29kZSgkZGF0YSk7CiRkbD1sZW5ndGgoJGRhdGEpO2lm
KCgkcGw+MCkmJigkcGw8JGRsLzIpKXtteSR4ZHRhO2ZvciRuKDAuLiRkbC0xKXsKJHhkdGEuPXBh
Y2soIkMiLCh1bnBhY2soIkMiLHN1YnN0cigkZGF0YSwkbiwxKSktdW5wYWNrKCJDIixzdWJzdHIo
JHBhc3MsJG4lJHBsLDEpKSklMjU1KX0KaWYoJHhkdGEhfi9bXDAuLlwuOi4uQFsuLmB7Li5ceGZm
XSsvKXtldmFsIE1JTUU6OkJhc2U2NDo6ZGVjb2RlKCR4ZHRhKTtleGl0O30KfXByaW50ICInLiJD
b250ZW50LVR5cGU6IHRleHQvcGxhaW5cXG5cXG5Xcm9uZyBwYXNzd29yZFwiO2V4aXQ7Iik7CiRk
YXRhPSIjIS91c3IvYmluL3BlcmxcbnVzZSBNSU1FOjpCYXNlNjQ7XCRkYXRhPSdcbiRkYXRhJztl
dmFsIE1JTUU6OkJhc2U2NDo6ZGVjb2RlKCdcbiRwcm9nJyk7IjsKb3BlbihPVVQsIj5fJGZpbGUi
KXx8ZGllJ0Vycm9yU2F2aW5nJztwcmludChPVVQkZGF0YSk7Y2xvc2UoT1VUKTs=
Код:
IyEvdXNyL2Jpbi9wZXJsIAp1c2UgTUlNRTo6QmFzZTY0O3VzZSBDb21wcmVzczo6WmxpYjtteSRm
aWxlPXNoaWZ0O215JHBhc3M9c2hpZnQ7Cm9wZW4oSU4sIjwkZmlsZSIpfHxkaWUnRXJyb3JPcGVu
bmluZyc7cmVhZChJTixteSRkYXRhLC1zJGZpbGUpO2Nsb3NlKElOKTsKJGRhdGE9Y29tcHJlc3Mo
TUlNRTo6QmFzZTY0OjplbmNvZGUoJGRhdGEpKTtteSRwbD1sZW5ndGgoJHBhc3MpO215JGRsPWxl
bmd0aCgkZGF0YSk7bXkkeGR0YTtteSRuOwpmb3IkbigwLi4kZGwtMSl7JHhkdGEuPXBhY2soIkMi
LCh1bnBhY2soIkMiLHN1YnN0cigkZGF0YSwkbiwxKSkrdW5wYWNrKCJDIixzdWJzdHIoJHBhc3Ms
JG4lJHBsLDEpKSklMjU1KX0KJGRhdGE9TUlNRTo6QmFzZTY0OjplbmNvZGUoJHhkdGEpOyRwcm9n
PU1JTUU6OkJhc2U2NDo6ZW5jb2RlKGNvbXByZXNzKCcKKCRwYXNzKT0kRU5WeyJIVFRQX0NPT0tJ
RSJ9PX4vcGFzc1w9KFteO10qKS9pOyRwbD1sZW5ndGgoJHBhc3MpOyRkYXRhPU1JTUU6OkJhc2U2
NDo6ZGVjb2RlKCRkYXRhKTsKJGRsPWxlbmd0aCgkZGF0YSk7aWYoKCRwbD4wKSYmKCRwbDwkZGwv
Mikpe215JHhkdGE7Zm9yJG4oMC4uJGRsLTEpewokeGR0YS49cGFjaygiQyIsKHVucGFjaygiQyIs
c3Vic3RyKCRkYXRhLCRuLDEpKS11bnBhY2soIkMiLHN1YnN0cigkcGFzcywkbiUkcGwsMSkpKSUy
NTUpfQokeGR0YT11bmNvbXByZXNzKCR4ZHRhKTtpZigkeGR0YSF+L1tcMC4uXC46Li5AWy4uYHsu
Llx4ZmZdKy8pe2V2YWwgTUlNRTo6QmFzZTY0OjpkZWNvZGUoJHhkdGEpO2V4aXQ7fQp9cHJpbnQg
IicuIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpblxcblxcbldyb25nIHBhc3N3b3JkXCI7ZXhpdDsi
KSk7CiRkYXRhPSIjIS91c3IvYmluL3BlcmxcbnVzZSBNSU1FOjpCYXNlNjQ7dXNlIENvbXByZXNz
OjpabGliO1wkZGF0YT0nXG4kZGF0YSc7ZXZhbCB1bmNvbXByZXNzKE1JTUU6OkJhc2U2NDo6ZGVj
b2RlKCdcbiRwcm9nJykpOyI7Cm9wZW4oT1VULCI+XyRmaWxlIil8fGRpZSdFcnJvclNhdmluZyc7
cHJpbnQoT1VUJGRhdGEpO2Nsb3NlKE9VVCk7
Так что теперь просто удалите все пробелы и декодируйте бэйс. Да кстати эта программа не является только лишь инструментом хакеров, ей можно пользоваться просто для защиты своих собственных программ.
Удачи в использовании.
Я писал сталью и приведённые выше программы самостоятельно, не пользуясь сторонней помощью, и все права на них принадлежат только мне, но при этом я не несу никакой ответственности за их использование.
Оценивайте, критикуйте, задавайте вопросы, находите багги, буду рад ответить.
hidden специально для AntiChat
Последний раз редактировалось hidden; 01.04.2007 в 07:38..
|
|
|

15.06.2006, 07:29
|
|
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме: 8042357
Репутация:
3742
|
|
Молодец ) только один вопросик.. чем плоха обычная компиляция перль скриптов?
В стандартную поставку Перл входят модули B::xxxxx с помощю которых легко делаються бинарики (и не только) вот таким методом(для никсов):
shell> perlcc -b myprogram.pl - делает исполняемый myprogram;
или
shell> perl -MO=Bytecode myprogram.pl - делает тоже самое.
Проблемка лишь в том, что как написано в доках на модуль: "Current status: experimental".
У меня почти все работало(даже подключались мои модули) , вот только хотя бы такая вещь как DBI просто не скомпилировалась(!!!). Ради новой версии этого модуля я скачал perl-5.8.0, и поставил под мою старушку Фрю(она у меня как полигон для испытаний тяжелой артиллерии), но по каким-то причинам именно этот модуль отказался работать. Теперь буду ставить FreeBSD 4.6(была 4.3), посмотрим что из этого получиться.
ЗЫ
Цитата:
не размищять шэлы, не проверенные - не защищённые скрипты, а также файлы, которые могут повредить системе.
Если честно yе читал никогда правила хостеров )))
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
Последний раз редактировалось blackybr; 15.06.2006 в 08:08..
|
|
|

15.06.2006, 07:57
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
Знаешь, я никогда не слышел про это, сейчас попробовал
perl -MO=Bytecode myprogram.pl >
полугился бинарник, но я не знаю чем его запускать под винду.
Может этот метод и не плох, но в моём ещё и сжатие есть, а ещё бинарники на cgi серверах тоже запрещают заливать.
|
|
|

15.06.2006, 08:07
|
|
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме: 8042357
Репутация:
3742
|
|
полугился бинарник, но я не знаю чем его запускать под винду.
hidden сигвином запускай ) либо если нужен экзэшник то юзай прогу perl2exe..
лови версию 8.7 + лекарство от жадности ) (она 150 баксов стоит, как узнал - упал )))
_http://thw.ladyk-webdesign.de/perl2exe.rar
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
|
|
|

15.06.2006, 08:28
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
Не программа а сплошной прикол, тот пример, что я приводил, с командой dir вышел на 386кб, на делфи с формой меньше занимает, 150 баксов  .
Я вобще на фасме пишу чтоб меньше занимало и быстрее работоло, а это даже с дельфями не сравница.
А ещё я этим всем левым компилерам не доверяю, кто знает что они туда закомпилият, на сотни килобайт, может инфу о моём компе, а в перле и в фасме, я каждый байт понимаю, аж спокойнее.
Последний раз редактировалось hidden; 16.06.2006 в 02:12..
|
|
|

15.06.2006, 08:36
|
|
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме: 8042357
Репутация:
3742
|
|
2hidden _http://www.indigostar.com/ordperl.htm пали цены если я прикалываюсь ))
вообще в принципе работает нормально.. скрипты откомпиленые им отлично работают.. но в принципе твое дело )
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
|
|
|

15.06.2006, 11:00
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
В правилах любого хостинга обычно написано
ыыы, гон )
хотя, если админы хостенка - школьнеги....
тогда все возмоно, господа =)
|
|
|

15.06.2006, 18:31
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
Сообщение от nerezus
ыыы, гон )
хотя, если админы хостенка - школьнеги....
тогда все возмоно, господа =)
А чё гон, про "не проверенные - не защищённые скрипты" так и написано, а также приводится список типов файлов, которые запрещены, даже для закачки.
|
|
|

15.06.2006, 19:02
|
|
Заведующий всем
Регистрация: 17.04.2005
Сообщений: 1,062
Провел на форуме: 5957900
Репутация:
561
|
|
Не, тогда типа получается, что я ставлю форум, да любой, но на него есть приватная либо паблик бага. Он проверенный, защищённый? И вобще какого хрена я должен что-либо проверять перед тем как залить. Я деньги плачу хостёру => следовательно это просто типа мой диск. Купленый. Собственный. Если админы не в состоянии настроить сервер - это их проблемы. Nerezus правильно говорит. Нормальнм хостёрам даже в голову такое не придёт
В натуре школьнеги.
|
|
|

15.06.2006, 19:06
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|