Заменить обфусцированные строки PHP в Sed

Я пишу скрипт для деобфускации кода PHP. И в основном это сделано, осталось только декодировать строки в коде. Так что мой входной файл может быть что-то вроде:

    <?php
$myString="\x48\x45\x4c\x4c\x4f";
$myOtherString="\x57\x4F\x52\x4C\x44";
?>

Теперь в моем скрипте у меня есть цикл над всеми строками, чтобы заменить их одну за другой. Поэтому у меня есть (как часть цикла) следующий код ($ S объявляется как скрытая строка внутри цикла — на случай, если вам интересно, откуда взялся $ S):

    $S='"\x48\x45\x4c\x4c\x4f"'
REALSTRING=`php -r 'eval("echo ".$argv[1].";");' $S`
ESCAPEDREALSTRING=`printf "%q" "$REALSTRING"`
ESCAPEDSOURCE=`printf "%q" "$S"`
CODE4=`echo $CODE4 | sed "s/$ESCAPEDSOURCE/$ESCAPEDREALSTRING/g"`

Я искал в Интернете решение, и шаг printf был рекомендован для правильного экранирования строки. Некоторые строки в реальном тексте — даже RegExes, поэтому, возможно, Sed не подходит для этой работы. У кого-нибудь есть идея?

Эта попытка использует sed, но perl, awk или любой другой инструмент также подходит, если он доступен в Bash по умолчанию в стандартной системе Linux / MacOS.

В качестве примера пара:
"\x5c\50\x22\133\x30\55\x39\101\x2d\132\x61\55\x7a\134\x2b\5‌​7\x3d\135\x2a\42\x5c‌​\51"
следует преобразовать в
"\("[0-9A-Za-z\+/=]*"\)"
Это одна из возможных встреч RegEx, которую я упомянул.

С наилучшими пожеланиями
Мерлин

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]