У меня есть несколько сайтов, которые были атакованы и заражены вредоносным ПО.
Существует более 800 файлов, которые необходимо обновить, и строка в каждом файле точно такая же.
ЧтоЯ хочу сделать, это найти все файлы, которые имеют вредоносное ПО, а затем удалить строку из файла.
Я нашел несколько сценариев командной строки, которые отлично работают при тестировании на базовой строке:
perl -pi -w -e 's/string_to_find//g;' test-file.php
и при объединении в команду поиска:
поиск.Тип F |xargs grep 'string_to_find' -sl |xargs perl -pi -w -e 's / string_to_find // g;'
Теперь моя проблема заключается в том, чтобы заставить его работать со строкой, которая является чрезвычайно длинной и сложной строкой:
<?php @error_reporting(0); if (!isset($eva1fYlbakBcVSir)) {$eva1fYlbakBcVSir = "random_string_7365_characters_long";$eva1tYlbakBcVSir = "string_of_encoded_characters";$eva1tYldakBcVSir = "string_of_encoded_characters";$eva1tYldakBoVS1r = "string_of_encoded_characters";$eva1tYidokBoVSjr = "string_of_encoded_characters";$eva1tYldokBcVSjr=$eva1tYldakBcVSir($eva1tYldakBoVS1r);$eva1tYldakBcVSjr=$eva1tYldakBcVSir($eva1tYlbakBcVSir);$eva1tYidakBcVSjr = $eva1tYldakBcVSjr(chr(2687.5*0.016), $eva1fYlbakBcVSir);$eva1tYXdakAcVSjr = $eva1tYidakBcVSjr[0.031*0.061];$eva1tYidokBcVSjr = $eva1tYldakBcVSjr(chr(3625*0.016), $eva1tYidokBoVSjr);$eva1tYldokBcVSjr($eva1tYidokBcVSjr[0.016*(7812.5*0.016)],$eva1tYidokBcVSjr[62.5*0.016],$eva1tYldakBcVSir($eva1tYidokBcVSjr[0.061*0.031]));$eva1tYldakBcVSir = "";$eva1tYldakBoVS1r = $eva1tYlbakBcVSir.$eva1tYlbakBcVSir;$eva1tYidokBoVSjr = $eva1tYlbakBcVSir;$eva1tYldakBcVSir = "string_of_encoded_characters";$eva1tYlbakBcVSir = "string_of_encoded_characters";$eva1tYldakBoVS1r = "string_of_encoded_characters";$eva1tYldakBcVSir = "";$eva1tYldakBoVS1r = $eva1tYlbakBcVSir.$eva1tYlbakBcVSir;$eva1tYidokBoVSjr = $eva1tYlbakBcVSir;} ?>
Теперь, когда я пытаюсь выполнить поиск и заменить его на полную строку (экранируя все специальные символы), я получаю такой результат:
Possible unintended interpolation of @error_reporting in string at -e line 1.
Name "main::error_reporting" used only once: possible typo at -e line 1.
Возможно ли сделать то, что я пытаюсь сделать, илиСтрока невозможно захватить?Нужно ли по-другому экранировать символ @?(Я сбежал с \, и это не сработало)
Любая помощь - я новичок в bash и perl