![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
fantome |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 5.2.2007 Репутация: 1 Всего: 1 |
есть вот такой однострочник
по сути это законспирированный
Помогите понять как оно работает... |
||||
|
|||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
# perl -MO=Deparse -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'
$? ? s/;s/s;;$?/ : s//=]=>%-{<-|}<&|`{/; tr( -/:-@[-`{-})[`-{/" \-]; s//$_;/see; -e syntax OK # затем просто проверять, что каждое выражение производит |
|||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
По сути, там все просто. Первое, что надо сделать - воспользоваться советом arto, чтобы немного упростить задачу. Итак, имеем три строки.
$? ? s/;s/s;;$?/ : s//=]=>%-{<-|}<&|`{/; или if ($?) { $_ =~ s/;s/s;;$?/ } else { $_ =~ s//=]=>%-{<-|}<&|`{/ } $? тут непричем, она будет 0, и исполнится вторая часть, которая запишет в $_ строку =>%-{<-|}<&|`{. tr( -/:-@[-`{-})[`-{/" \-]; Здесь основная хитрость, заключающаяся в том, что при перечислении символов, которые tr будет менять, используются интервалы символов. Раскроем их: perl -le 'print map {chr} ord(" ")..ord("-")' ... perl -le 'print map {chr} ord("`")..ord("{")' Получим $_ =~ tr( !"#$%&'()*+,-./:;<=>?@[\]^_`{|}) [`abcdefghijklmnopqrstuvwxyz{/"\-]; После выполнения такого tr $_ превратится в system"rm -rf /" s//$_;/see; Тут все ясно. Пустая строка (ищущая часть оператора s///) всегда подойдет, и вторая часть исполнится (опция e) |
|||
|
||||
vadiml |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 27.7.2007 Репутация: 5 Всего: 7 |
на ЛОРе нашли?
![]() |
|||
|
||||
amg |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Если вопрос ко мне, то нет. В этом однострочнике ничего хитрого, несмотря на пугающий вид. Надо только депарсить его, а потом методично разбирать. Вот, по-моему, высший пилотаж:
ЗЫ Это я не сам придумал |
||||
|
|||||
Anarki |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 14.3.2005 Репутация: 1 Всего: 11 |
Ага, это из Perl Cookbook. На самом деле ничего такого. ![]() |
||||
|
|||||
vadiml |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 27.7.2007 Репутация: 5 Всего: 7 |
я задавал вопрос где нашли однострочник, а не его разбор
на ЛОРе когда-то была тема: http://www.linux.org.ru/view-message.jsp?msgid=392747 типа "запустил сам -- дай запустить другому" Добавлено через 6 минут и 39 секунд к сожалению сейчас топик сильно порезан, но когда только появился ... |
|||
|
||||
fantome |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 5.2.2007 Репутация: 1 Всего: 1 |
vadiml, да, нашел там. А что?
мне было интересно как он работает. Спасибо всем, кто помог мне его разобрать. Извините, что так долго не отписывался - работа.... |
|||
|
||||
pompei |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 7.9.2007 Репутация: 2 Всего: 6 |
О! Нифига рулез. Спасибо за расшифровку. А я думал что это какой-то особый сжатый сиснтаксис перла, и никак не мог найти по нём документацию.
ЗЫ. Мне однажды друг попросил разобраться, а то у него, типа, не получается (под просточка прикинулся). Ну я по доброте душевной взял и запустил.... хорошо что я привык работать под своим пользователем, а не под рутом.... пока скрипт бегал по /dev я успел нажать на Ctrl+C. Ни чё не стёрлось. Мы потом так прикололись над одним сотрудником, который постоянно сидел под рутом и игнорировал все наши доводы по поводу безопасности.... ))))))))).... он потом весь день переустанавливал свой комп и покрывал нас трёхэтажными матами, но с рута так и не слез, паразит. ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() --------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |