Как я могу скрыть код Perl?

Я написал несколько программ на Perl и планирую их распространять. Они являются частью большого бинарного дистрибутива (в основном скомпилированного на C/C++). Если возможно, я предпочел бы отказаться как можно меньше (я отвечаю за поставку работающего программного обеспечения, а не за умные алгоритмы). Каков мой лучший выбор для сокрытия кода Perl, чтобы, если кто-то действительно хочет увидеть исходный код, ему пришлось бы приложить немного больше усилий, чем просто открыть файл в редакторе?


person ajwood    schedule 06.12.2010    source источник
comment
Скорее всего, это потому, что, хотя иногда и существуют веские причины для запутывания кода Perl, вы не предоставили ни одной. Если вы не можете привести несколько очень конкретных примеров недостатков, отказ от ваших «умных алгоритмов» не является проблемой — единственным недостатком будет бедняга, который должен поддерживать ваш дистрибутив через 5 лет.   -  person ivancho    schedule 07.12.2010
comment
Эй, это совершенно справедливо. Наряду с исходным кодом C/C++ существует незапутанная версия кода Perl. Это не проект с открытым исходным кодом, и я не чувствую, что меня следует принуждать к открытому исходному коду исключительно из-за выбора Perl.   -  person ajwood    schedule 07.12.2010
comment
Предоставление клиенту исходного кода сценария не делает его открытым. Даже имея полный исходный код всех ваших программ, клиент все равно должен уважать ваши авторские права. А учитывая, что существуют достаточно продвинутые декомпиляторы, чтобы превратить двоичные файлы C/C++ в почти пригодный для использования исходный код, у целеустремленных пользователей будет ваш исходный код.   -  person Ven'Tatsu    schedule 09.12.2010
comment
Конечно, но если я не обязан давать им код, я не уверен, почему попытки избежать его — такая плохая вещь. Отклонение вопроса заставляет меня думать, что с тем, что я предлагаю, что-то серьезно не так.   -  person ajwood    schedule 09.12.2010
comment
1. Неверная причина: я не хочу, чтобы клиент использовал мои хитрые алгоритмы в своем коде 2. Уважительные, но очень неприятные причины: я не хочу, чтобы клиент видел, насколько мой код плох, я хотел бы оплатить позже за консультации, несмотря на то, что мой Perl-код легко понять и поддерживать   -  person ivancho    schedule 10.12.2010
comment
Ой, новый минус? У этих вещей нет срока давности? ;)   -  person ajwood    schedule 29.07.2015


Ответы (4)


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

Я получил несколько минимальных/скомпилированных ответов на свой вопрос Как мне скомпилировать Perl-скрипт, чтобы сократить время запуска?

person 700 Software    schedule 06.12.2010

Acme::Bleach

person bob.faist    schedule 06.12.2010
comment
Я вижу на другом форуме, что единственная проблема с Acme::Bleach заключается в том, что скрипт внезапно перестал переноситься. - person ajwood; 13.12.2010

Filter::Crypto (возможно, через PAR::Filter::Crypto), безусловно, является наиболее продвинутым инструментом с открытым исходным кодом для этой работы (за исключением perlcc, который плохо работает для многих вещей, YMMV).

Если все, что вам нужно, это скрыть код от случайных хакеров, этого более более чем достаточно. Скрыть это от решительных и/или способных людей практически невозможно.

person tsee    schedule 06.12.2010

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

person terminus    schedule 06.12.2010
comment
Perl-обфускатор кажется избыточным из-за того, как некоторые люди пишут Perl. - person Paul Tomblin; 06.12.2010
comment
@Paul Пол, я собирался предложить то же самое, но я действительно не хочу гнева поклонников Perl :) - person terminus; 06.12.2010
comment
@Paul - Вы предлагаете, чтобы ОП намеренно делал свой код непригодным для сопровождения? Это (предположительно) настоящая работа, а не соревнование по кодовому гольфу :) - person DVK; 06.12.2010
comment
@DVK, нет, я предлагаю ему передать код некоторым из моих коллег. - person Paul Tomblin; 06.12.2010
comment
@terminus - это зависит. Если вы сделаете это с иронией и покажете, что на самом деле имеете представление о том, что хороший разработчик программного обеспечения может с одинаковой легкостью писать читаемый код на любом языке, включая Perl, фанаты будут смеяться вместе с вами (см. с комментарием Павла. Если вы действуете как тролль и намекаете, что набор случайного кода, скорее всего, НЕ написанного профессиональными разработчиками программного обеспечения, подразумевает что-то о возможностях языка в целом, люди, у которых есть ключ к разгадке, навалятся на вас, как монгольский тумен. - person DVK; 06.12.2010
comment
@DVK Да, из-за языкового барьера мне труднее быть ироничным. Я не хочу рисковать стать случайным троллем. - person terminus; 06.12.2010
comment
@Paul - я поменяю вам некоторых из ваших гениев на некоторых чудаков, которые написали гибрид C ++ / C, который я имею несчастье поддерживать в настоящее время. Я имею в виду, что я знал ТЕОРЕТИЧЕСКИ, что вы можете разрабатывать на С++ только для записи... - person DVK; 06.12.2010
comment
@DVK Я воспитываю тебя с чудаком, который может писать код на Python, как код на Perl ... И код на Perl, как на ассемблере. - person terminus; 06.12.2010
comment
@terminus - Хорошо, последнее, чему я могу поверить. Первый, я ДОЛЖЕН увидеть :) Кстати, ссылка на Шверна в предыдущем комментарии была: stackoverflow.com/questions/234075/ - person DVK; 06.12.2010
comment
@DVK Кроме того, решительный настоящий программист может писать программы на Фортране на любом языке. Это также может быть верно для программистов Perl. :) Кроме того, первый комментарий к этому ответу - чистое золото. - person terminus; 06.12.2010